Команды и состояния

user warning: Table './mynereal/accesslog' is marked as crashed and should be repaired query: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('Существа Междумирья', 'node/424', '', '3.23.85.24', 0, '92a528f76b1414a1744a845ffe74785b', 836, 1745081925) in /home/thenn/data/www/my.nereal.ru/modules/statistics/statistics.module on line 64.

Для обработка команд и различных состояний персонажа нужны три базовые класса: Context, State, и Command.

Context — текущий контекст (режим) персонажа, хранящий в себе переменные, необходимые для отдельной группы состояний.

State — отдельное состояние персонажа, выдающее что-либо на экран при входе в него, и обрабатывающее особым образом ввод от персонажа. Использует данные из текущего контекста, потому всегда относится к какому-либо контексту.

Command — обработчик команды персонажа. Работает обычно независимо от контекста и состояния, но вызывается из обработчика состояния и может менять состояние.

В свойствах персонажа должен быть стек контекстов, на вершине которого находится текущий контекст. В контексте содержатся его временные данные и текущее состояние. Основных действий по переключению три: смена состояния (внутри контекста), начало нового контекста с сохранением предыдущего на стеке, и возврат предыдущего контекста.