|
•Состоятельная переработка - Artlav, 10.06.2010 14:57:39 |
|
|
Итак, я прочистил и переделал систему стейтов.
Стейты теперь есть такие: ST_THEMENU=0; //Игра не начата, графклиент рисует что-то связанное с началом игры ST_THEGAME=1; //Сама игра в процессе или при высадке ST_INSGAME=2; //Состояние между ходов ST_SETGAME=3; //Состояние для настроек игроков.
Смена стейта допустима только в ядре, и делается следующими функциями: - newgame - Выставляет в настройки - next_turn и do_end_turn_request - меняет между игрой, настройками и концом хода, по ситуации. - mg_haltgame - Сбрасывает всё в стейт главного меню, чистит память, выпрямляет последствия ошибок. - load_savefile - меняет на то, что загрузилось
Кроме них нигде стейт меняться не должен.
В графклиенте собственный недосинхронный стейт был выкинут и сделана прямая привязка к ядровому стейту. Состояние загрузки обрабатывается графклиентом отдельным флагом, состояние ошибки по сути не нужно, т.к. есть модальный диалог.
Таким образом, всё было стянуто в красивую и логичную модель.
Предложения и комментарии? |
|
| |