Режимы (Modes)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

В 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)

Источник[править | править код]

  1. Статья "Modes" на английском языке.
  2. Помощь при переводе статьи "Modes" на русский язык: "Launchpad: modes"

На главную страницу Официальная документация движка Вернуться к началу статьи