
Хмм....весьма примитивно и снова не гибко.
На самом деле твой метод ужасен.
Зачем плодить отдельные классы на состояния?
Init() и Destroy() для игрового состояния - это вообще бред.
Во вторых при твоем подходе весьма затруднительно будет комбинировать стейты между собой, а тут все просто : CreateEvent(GAME_WORLD_DRAW_ONLY | GAME_PAUSE).Emit() - дали команду движку что приложение находится в паузе. А движок уже сам допиливает этот флаг ( рисовать но не обновлять мир + рисовать и обновлять меню паузы). флаг GAME_PAUSE - отвечает только за отрисовку потемневшего задника + обновление и отрисовку менюхи, а за застывший задний кадр отвечает впередиидущий флаг состояния. На то она и гибкость - что жестко ничего привязывать не надо.
Если тебя испугал тот громозкий код, то там происходит всего-то - инициализация при запуске программы, зато главный цикл - 3 строчки кода. И мне не надо запоминать и где то хранить переменные стэйтов, а вместо этого просто комбинировать 6-7 основных стэйт-флагов. =)
ЗЫ Во всех нормальных программах управление ядром осуществляется через события
|
А никто сам исходный код не помнит.....там проще было...гдето тутор был.