Фундамент механизма очереди CIGUI

С версии 0.5 в Сигуи будет доступен так называемый механизм очередей. Ниже я приведу правила, по которым он будет работать .
Предаврительно хочу рассказать о хеше $global_windows - именно он будет хранить все данные об идентифицированных окнах. Подробности ниже.
Вместо массива @windows будет использован глобальный хеш $global_windows, в котором идентификатор элемента - это имя, по которому его можно вызвать. При закрытии сигуи хеш будет очищен только от экземпляров окон, но все его данные будут сохранены, таким образом при перезагрузке сигуи мы можем заново вызвать уже созданные меню, помещенные в хеш. Также, такие окна можно будет удалять без вреда для очереди в массиве @windows.

Предполагается, что хеш $global_windows будет использоваться преимущественно для командных окон (принадлежащих классу Command_Window) для явной передачи управления от одного к другому. Под явной передачей предполагается указанная разработчиком.

Правила работы механизма:
1. Если окно является единственным и не имеет функции автоматического закрытия, то оно является "используемым" и будет закрыто только если нажата клавиша С или В.
2. Если окно не является единственным и не указано явным образом, что из всех только одно является используемым, то каждое окно считается используемым и закрывается отдельно.
3. Если в меню имеется хотя бы одно командное окно, то первому из них передается управление, оно становится используемым, остальные окна деактивируются.
4. Переключение между командными окнами осуществляется только с помощью помещения их в хеш для однозначной идентификации.
5. Если окну присвоена возможность автоматического закрытия и указана его не активность (не используемость), то оно является параллельным и может быть закрыто только по истечению времени или завершению работы Сигуи.
6. Если окно является параллельным и при это указано, что оно используется, оно может быть закрыто как по реакции игрока, так и по истечению времени или завершению Сигуи.

Пример команды переключения* между командными окнами с автоматической деактивацией окна-отправителя: "окну #0 передать управление окну [меню статуса]".
*данная команда еще пока не описана в сигуи, поэтому может отличаться по написанию в конечном варианте.

Комментарии

Популярные сообщения из этого блога

Генератор названий оружия

Создание компонента Delphi

Идеи: Генератор сказки