Здравствуйте уважаемые читатели моего канала, сегодня мы поговорим о паттерне состояние. Он часто используется в геймдеве для условия определения кода, который будет исполняться. Обычно это сводится к сложным и многоуровневым блокам без намека на полиморфизм. В этой статье мы познакомимся с еще одним поведенческим паттерном проектирования, который позволяет менять состояние объекта в зависимости от его состояния, создавая ощущение что поменялся целый класс. Для примера рассмотрим состояние по производству бензина из нефти. В качестве входных данных у нее может быть 4 состояния. No OIL – ожидается поступление нефти, Has OIL – когда нефть поставили, Fuel Production – значит, что из нефти делается бензин и No Money – если денег нет и производство бензина пока невозможно. Теперь рассмотрим набор действий, которые система может выполнять. Дать нефть, забрать её, запросить производство бензина, а дальше идет ветвление, если деньги еще есть, то можно опять ожидать нефть, а если нет, то ожид