Режимы (Modes)
В Ren'Py режим представляет собой краткий способ описания типа взаимодействия. При включении режима в Ren'Py, можно запустить функции обратного вызова, определённые пользователем. Эти обратные вызовы могут использоваться для того, чтобы реагировать на изменения в режиме с помощью корректировки интерфейса пользователя. Например, переход может произойти при переключении с ADV-режима на NVL-режим или при переходе в меню и т.д.
Цель системы режимов – предоставить мощный и гибкий способ обнаружения изменений и реагирования на них.
Режимы по умолчанию (Default Modes)[править | править код]
Ниже приведены режимы, соответствующие встроенным взаимодействиям:
- start
- Режим, в котором находится Ren'Py при создании нового контекста, например, в начале игры. Ren'Py никогда не входит в этот режим автоматически, вместо этого он инициализирует список режимов для включения start.
- say
- Режим, в который Ren'Py входит при выполнении оператора say в ADV-режиме.
- menu
- Режим, в который Ren'Py входит при выполнении оператора menu в ADV-режиме.
- nvl
- Режим, в который Ren'Py входит при выполнении оператора say в NVL-режиме.
- nvl_menu
- Режим, в который Ren'Py входит при выполнении оператора menu в NVL-режиме.
- pause
- Режим, в который Ren'Py входит при запуске функции renpy.pause() или при появлении оператора pause с бессрочной продолжительностью.
- with
- Режим, в который Ren'Py входит при осуществлении перехода с помощью оператора with. Это также используется для оператора pause с заданной длительностью.
- Отметим, что переход в режим with осуществляется в начале оператора with, то есть после выполнения всех предшествующий операторов scene, show или hide.
- screen
- Режим, в который Ren'Py входит при вызове экрана с помощью оператора call screen.
- imagemap
- Режим, в который Ren'Py входит при вызове устаревшего imagemap с помощью renpy.imagemap().
- input
- Режим, в который Ren'Py входит при запросе ввода текста с помощью функции renpy.input().
Другие режимы можно ввести, вызвав функцию renpy.mode.
renpy.get_mode()
- Возвращает текущий режим или принимает значение None, если режим не определён.
renpy.mode(mode)
- Заставляет Ren'Py войти в обозначенный mode или остаться в этом режиме, если он уже в нём.
Режим обратных вызовов (Mode Callbacks)[править | править код]
Переменная config.mode_callbacks содержит список обратных вызовов режима, которые вызываются всякий раз, когда Ren'Py входит в режим.
Режим обратных вызовов вызывается с двумя параметрами:
- mode
- Строка с названием режима, в который мы входим.
- old_modes
- Список строк с указанием режимов, в которые система ранее входила, упорядоченных от недавних до более поздних.
Обратите внимание, что при входе в режим, в котором мы уже находимся, первый элемент в old_modes будет равен mode.
◇ Пример режима обратных вызовов[править | править код]
Этот режим обратного вызова вызывает переходы при переключении из ADV-режима в NVL-режим и наоборот. Данный режим входит в состав Ren'Py, поэтому нет необходимости его использовать.
init python:
def _nvl_adv_callback(mode, old_modes):
old = old_modes[0]
if config.adv_nvl_transition:
if mode == "nvl" or mode == "nvl_menu":
if old == "say" or old == "menu":
nvl_show(config.adv_nvl_transition)
if config.nvl_adv_transition:
if mode == "say" or mode == "menu":
if old == "nvl" or old == "nvl_menu":
nvl_hide(config.nvl_adv_transition)
config.mode_callbacks.append(_nvl_adv_callback)
Источник[править | править код]
- Статья "Modes" на английском языке.
- Помощь при переводе статьи "Modes" на русский язык: "Launchpad: modes"
На главную страницу | Официальная документация движка | Вернуться к началу статьи |