События документа
2.0 Начиная с версии 2.0, к функциям комнаты были добавлены события документа.
Важное различие: функция комнаты может быть только одна. У комнаты не может быть двух функций beforeChoices
: если вы попытаетесь задать ещё одну, она просто перепишет первое определение. Но вот события никогда не переписывают друг друга, а значит, вы можете повесить сколько угодно обработчиков на одно событие.
Также см. методы JavaScript addEventListener()
и removeEventListener()
, которые для краткости вызываются через jQuery on()
и off()
.
Все события прикреплены к объекту document
, т.е. всей странице.
Пример использования
Вызов события: $(document).trigger("myevent", argument)
Перехват события room_happyplace_enter
, т.е. входа в комнату happyplace
:
$(document).on("room_happyplace_enter", () -> salet.character.is_happy = true )
Список событий
init
Событие, которое вызывается при начале игры. В нём удобно выставить начальное состояние.
load_game
Событие, которое вызывается при загрузке игры.
Аргумент progress
: сохранённое состояние.
save_game
Событие, которое вызывается при сохранении игры.
Аргумент id
: ID сохранения
Аргумент progress
: сохранённое состояние
after_action
Вызывается каждый раз после выполнения какого-либо действия в комнате.
Аргумент room
: ID комнаты
Аргумент action
: ID действия
before_action
Вызывается каждый раз перед выполнением какого-либо действия в комнате.
Если она выставляет salet.actionConsumed = true
, то действие считается поглощённым, и обработчик действия в комнате не вызывается.
Аргумент room
: ID комнаты
Аргумент action
: ID действия
room_transition
Событие вызывается в самом начале входа в комнату.
Аргумент 1: ID комнаты, из которой вышел игрок
Аргумент 2: ID комнаты, в которую входит игрок
Аргумент 3: флаг форсированного входа; если true
, то canExit
не проверяется. По умолчанию false
room_[ID комнаты]_clear_content
Вызывается, если указанная комната очищает текст страницы.
room_exit
Вызывается, когда игрок выходит из любой комнаты.
Аргумент 1: ID комнаты, из которой вышел игрок
Аргумент 2: ID комнаты, в которую входит игрок
room_[ID комнаты]_exit
Вызывается, когда игрок выходит из указанной комнаты.
Аргумент: ID комнаты, в которую входит игрок
room_enter
Вызывается, когда игрок входит в любую комнату.
Аргумент 1: ID комнаты, из которой вышел игрок
Аргумент 2: ID комнаты, в которую входит игрок
room_[ID комнаты]_enter
Вызывается, когда игрок входит в указанную комнату.
Аргумент: ID комнаты, из которой вышел игрок
room_[ID комнаты]_after_enter
Вызывается после того, как игрок вошёл в указанную комнату.
Аргумент from
: ID комнаты, из которой вышел игрок
Аргумент force
: флаг форсированного входа; если true
, то canExit
не проверяется. По умолчанию false
room_[ID комнаты]_before_choices
Вызывается перед выводом вариантов выбора в указанной комнате.
room_[ID комнаты]_after_choices
Вызывается после вывода вариантов выбора в указанной комнате.
timer_[ID таймера]
Вызывается каждый ход для каждого активного таймера.
view_init
Вызывается при инициализации Вида.
clear_content
Вызывается каждый раз при очистке любого содержимого.
Аргумент: селектор очищаемого блока
press
gamepad (только со включённым модулем геймпада)
Вызывается при нажатии на кнопку геймпада. Оси тоже считаются, если значение стика больше 75% в одном направлении.
Таблицы соотвествия кнопок названиям различаются для каждой модели геймпада. Также на это могут влиять браузер, операционная система и настройки самого геймпада (например, переключатель режимов работы). При сомнениях Salet выбирает таблицу наугад. Не забывайте предусмотреть в игре возможность перенастройки кнопок.
Аргумент 1: ID нажатой кнопки. Может быть одним из:
a
b
back
dpad down
dpad left
dpad right
dpad up
left shoulder
left stick
left stick down
left stick left
left stick right
left stick up
left trigger
right shoulder
right stick
right stick up
right stick left
right stick right
right stick down
right trigger
start
x
y
Аргумент 2: ID геймпада (от 1 до 4). Указывает на ID в массиве navigator.getGamepads()
axis
gamepad (только со включённым модулем геймпада)
Вызывается для движений стиков геймпада.
Аргумент 1: название оси (dpad x
, left stick x
, right stick y
и по аналогии)
Аргумент 2: новое значение оси
Аргумент 3: ID геймпада (от 1 до 4). Указывает на ID в массиве navigator.getGamepads()