M.A.X.    Вы вошли как гость
Российский Клуб игроков M.A.X.
 
[Новости]   [Новичку]   [Энциклопедия]   [Документы]   [Файлы]   [Игроки]   [Архивы]   [Архив форума]  
[Новый сайт]   [M.A.X. Gold]   [Партии]  

 
 
 
Архив форума  МаксГолд
[Основной форум] [Голосования] [МаксГолд] [Off-Topic]
 


Состоятельная переработка  -  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 - меняет на то, что загрузилось

Кроме них нигде стейт меняться не должен.

В графклиенте собственный недосинхронный стейт был выкинут и сделана прямая привязка к ядровому стейту.
Состояние загрузки обрабатывается графклиентом отдельным флагом, состояние ошибки по сути не нужно, т.к. есть модальный диалог.

Таким образом, всё было стянуто в красивую и логичную модель.

Предложения и комментарии?