Ядро Salet
Класс Salet
; единственный экземпляр этого класса автоматически доступен как window.salet
.
Свойства CoffeeScript
character
Экземпляр класса Character
, персонаж игры. Все свойства в этом классе, которые могут быть сериализованы (т.е. не функции), попадают в сохранение.
game_id
Уникальное ID игры, произвольная строка. Отвечает за слот сохранения. Вы должны переопределить это свойство в своей игре, или вы будете делить сохранения с другими играми (что сломает все игры)
game_version
Версия игры, произвольная строка. Также отвечает за слот сохранения (каждой версии - отдельный слот).
autosave
Флаг автосохранения. Если true
, то Salet будет сохранять игру при входе в каждую комнату, в которой не выставлено canSave = false
. По умолчанию true
.
autoload
Флаг автозагрузки. Если true
, то Salet будет автоматически загружать сохранённую игру при загрузке страницы. Если вы выставляете это в false
, то предполагается что у вас есть свой интерфейс для загрузки игры, также см. loadGame
.
verbs
2.0 Список доступных глаголов.
Формат: ID - текст, например: "examine": "Examine"
Salet входит в режим глаголов, есть массив salet.verbs
не пуст, а в текущей комнате нет доступных вариантов выбора.
rnd
Экземпляр класса Random
.
time
Время в секундах, которое прошло с момента начала игры. Дробное число.
startTime
Дата в секундах, когда началась игра. Дробное число, считается как Unix time.
current
ID текущей комнаты, в которой находится игрок.
interactive
Флаг, который показывает, в каком режиме находится Salet. Если true
, то идёт игра; если false
, то идёт загрузка игры (неинтерактивный режим).
linkStack
Системный объект; стек ссылок, которые ещё не разобраны.
progress
Системный объект; данные сохранения, которые будут сохранены. Содержит зерно ГСЧ seed
, последовательность пройденных ссылок sequence
, последовательность посещённых комнат path
и время сохранения saveTime
.
view
Системный объект; экземпляр класса SaletView
start
ID начальной комнаты, по умолчанию start
rooms
Системный объект; хранит все комнаты игры.
timers
Системное свойство, которое хранит все таймеры игры.
Методы CoffeeScript
init
Функция, которая вызывается при начале игры. Её удобно переопределить в игре, чтобы выставить начальное состояние. (Это также можно делать в обработчиках входа enter
начальной комнаты)
enter
Функция, которая вызывается каждый раз при входе в какую-либо комнату перед тем, как вызывается обработчик enter
новой комнаты.
Аргумент 1: ID старой комнаты
Аргумент 2: ID новой комнаты
afterEnter
Функция, которая вызывается каждый раз при входе в какую-либо комнату после того, как вход произошёл и текст уже выведен.
Аргумент 1: ID старой комнаты
Аргумент 2: ID новой комнаты
beforeAction
Функция, которая вызывается каждый раз перед выполнением какого-либо действия в комнате.
Если она возвращает true
, то действие считается поглощённым, и обработчик действия в комнате не вызывается.
Аргумент 1: ID комнаты
Аргумент 2: ID действия
afterAction
Функция, которая вызывается каждый раз после выполнения какого-либо действия в комнате.
Аргумент 1: ID комнаты
Аргумент 2: ID действия
exit
Функция, которая вызывается каждый раз при выходе из какой-либо комнаты перед тем, как вызывается обработчик exit
старой комнаты.
Аргумент 1: ID старой комнаты
Аргумент 2: ID новой комнаты
getSituationIdChoices
Системная функция, которая собирает список комнат по указанному тегу и фильтрует его по размеру. Вызывается при создании автосписков неявного выбора.
Аргумент 1: тег для фильтра
Аргумент 2: максимальная длина списка на выходе
getCurrentRoom
Возвращает комнату, в которой находится игрок.
getSaveId
Возвращает ID сохранения.
goTo
Перемещает игрока в другую комнату. Синоним для processClick
.
Аргумент: ID комнаты
processClick
Системная функция; обработчик одной ссылки.
Вызывается как реакция на клик извне. Сохраняет время клика и добавляет шаг в историю (которую можно отматывать и которая используется при загрузке сейвов).
Аргумент 1: адрес ссылки
processLink
Системная функция; обработчик ссылок.
Следующий шаг после processClick
. Добавляет ссылку в стек выполнения, вызывает на каждой ссылке стека processOneLink
, мотает экран до нового текста.
Аргумент 1: адрес ссылки
processOneLink
Системная функция; обработчик одной ссылки.
Ровно выполнение перехода, ничего лишнего.
Аргумент 1: адрес ссылки
goBack
Возврат на N комнат назад. Это не отмена, а именно движение назад по истории.
N = 1
— это текущая комната.
Аргумент: количество комнат для отмотки, по умолчанию 2
doTransitionTo
Системная функция; перемещение между комнатами.
Аргумент 1: ID новой комнаты
Аргумент 2: флаг форсированного перемешения (передаётся обработчикам), по умолчанию false
eraseSave
Показывает предупреждение "вы точно хотите очистить сохранение?". Если пользователь соглашается, то очищает сохранение.
Аргумент: флаг форсированной очистки (не показывает предупреждение), по умолчанию false
getRoomsTagged
Возвращает массив комнат с указанным тегом.
Аргумент: тег для поиска
saveGame
Сохранение игры.
loadGame
Загрузка игры из данных сохранения.
Аргумент: данные сохранения
getSave
Функция, которая возвращает данные сохранения.
beginGame
СИстемная функция; инициализирует Salet и начинает игру. Выполняет функцию init
, загружает игру если найдено сохранение и выставлен флаг autoload
.
here
Синоним для getCurrentRoom
isVisited
Возвращает true
, если игрок уже посетил указанную комнату.
Аргумент: ID комнаты
addTimer
Функция добавляет таймер в игру. Таймер - это текст или функция, которая выполнится через несколько ходов. Ход - это каждый клик мышкой (действие в игре). Таймер может быть повторяемым (выполняется каждый ход номер step
) или одноразовым (удаляется после первого срабатывания).
Аргумент 1: имя таймера. Обязательный.
Аргумент 2: действие таймера. Обязательный. Может быть строкой или функцией. Возвращаемое значение функции дописывается в главное окно игры.
Аргумент 3: флаг повторения. По умолчанию false
.
Аргумент 4: количество ходов. По умолчанию 1
.
dropTimer
Функция необратимо удаляет указанный таймер.
Аргумент: имя таймера
resetTimer
Функция сбрасывает указанный таймер.
Аргумент: имя таймера
checkTimer
Системная функция, проверяет и вызывает все установленные таймеры.
Вызывается после каждого клика в игре.