История диалогов
Ren'Py включает систему истории диалогов, которая сохраняет каждую строку диалога после того, как она была показана игроку. Этот сохранённый диалог затем можно извлечь и снова показать игроку.
Система истории диалогов управляется двумя переменными.
Переменная config.history_length контролирует максимальное количество
записей в истории, которые хранятся, и должна быть установлена, чтобы история
вообще работала. Переменная _history может использоваться для отключения
и повторного включения сохранения истории.
Наконец, переменная _history_list хранит саму историю в
виде списка объектов HistoryEntry. Объекты HistoryEntry содержат данные в
своих полях, как определено ниже.
- class HistoryEntry
- kind
Тип персонажа, создавшего эту запись в истории. Ren'Py устанавливает это значение в "current" во время отображения реплики, а затем — в "adv" или "nvl".
- who
Строка с именем говорящего персонажа или None, если такой строки нет.
- what
Строка с текстом диалога.
- who_args
Словарь со свойствами, которые были переданы виджету текста who, когда диалог был показан изначально.
- what_args
Словарь со свойствами, которые были переданы виджету текста what, когда диалог был показан изначально.
- window_args
Словарь со свойствами, которые были переданы окну диалога, когда диалог был показан изначально.
- show_args
Словарь со свойствами, которые были переданы экрану say, когда диалог был показан изначально.
- image_tag
Тег изображения, присвоенный
Character(), или None, если тег не был присвоен.
- voice
Это объект, возвращаемый
_get_voice_info(), который хранит информацию о воспроизводимом голосе.
- rollback_identifier
Это идентификатор, который можно передать действию
RollbackToIdentifier(), чтобы вызвать откат к строке скрипта, создавшей эту запись истории. Откат произойдет только в том случае, если местоположение все ещё находится в логе скрипта, в противном случае действие будет неактивно.
После создания HistoryEntry, он передаётся каждому из колбэков
в config.history_callbacks, что позволяет коду, написанному
разработчиком, добавлять новые поля.