Машина состояний
Автор: Volodar
Представлю на суд общественности свою реализацию машины состояний, также известную как конечный автомат. Машина состояний привлекательна тем, что обрабатывает логику поведения объекта в заранее настроенном алгоритме, что крайне необходимо для сложных объектов. В статье приведу логику объекта, использующегося в моей игре Tropic Defense.

Теория
Настройка сложного объекта
Теория
Машина состояний это сущность, состоящая из конечного набора состояний объекта с правилами перехода между этими состояний. Можно выделить три части конечного автомата:
Состояние объекта (State): Если просто, то это то, что в текущий момент происходит с объектом. Ящик может лежать, катиться, падать. Это все состояния. Внесу новый термин – State, для описания программной реализации состояния. State должен знать как реагировать на разные события, это его первоочередная задача.
Событие(Event): Для того же ящика события могут быть: толкнуть, столкнуться с землей, скатиться с опоры. События (Event) нужны для оповещения машины состояний, что с объектом что-то произошло. Если ящик лежит и его толкнули, то он покатиться. Это переход из состояния «лежать» в «катиться» по событию «толчок».
Менеджер состояний (Machine): На нем лежит вся логика обработки событий, перехода состояний, оповещение о изменении состояния объекта.
Простая реализация может выглядеть следующим образом: