UStoryKeyManager - mrkriv/QaDS GitHub Wiki

Менеджер ключей

Представляет собой хранилище ключей, на основе контейнера TSet. Ключи имеют тип FName и могут находится в двух состояниях: выдан и отсутствует.

Хранилище предназначено для фиксации игровых событий связанных с заданиями и диалогами. К примеру после прочтения фразы диалога в хранилище записывается определенный ключ, который является условием появления другой фразы или диалога. (К примеру, игрок говорит с персонажем А, после это игрок получает возможность с персонажам В или С на выбор. Затем у персонажа А открывается новый диалог. и т.д.)

Работа с хранилищем

Для получения экземпляра менеджера следует использовать статический метод GetStoryKeyManager. В мире может присутствовать только один экземпляр хранилища, метод получения экземпляра при необходимости создаст новое хранилище.

Добавление и удаление ключей осуществляются методами AddKey и RemoveKey соответственно.

Методы HasKey и DontHasKey позволяют проверить наличие или отсутствие ключа.

Для групповой загрузки ключей предназначены методы Reset GetKeys SetKeys Кроме этого, для реализации сохранения и загрузки хранилища во время игры существую методы SaveToBinary и LoadFromBinary, позволяющие сереализовать хранилище в бинарный массив.

События

При работе с хранилищем генерируются события OnKeyAdd, OnKeyRemove и OnKeysLoaded. Это может быть полезно в случае если какое либо игровое событие ожидает получения или удаления ключа. К примеру, активное задание ожидает получения ключа для завершения.

Подписки на события не сохраняются методами SaveToBinary и LoadFromBinary, каждый подписавшийся на событие объект должен сам следить за этим.

Отладка, StoryKeyWindow

Для упрощения отладки в редакторе присутствует окно StoryKeyWindow. Кнопка вызова окна находится в меню Window > Developer tools > Story Key.

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