Класс SaletView
Объект вида доступен как salet.view
. Он автоматически инициализируется при загрузке Salet, поэтому доступен вместе с объектом salet
. Вы не можете создать новых экземпляров этого класса.
Это — единственный класс, который знает про существование jQuery, DOM и HTML. Он инкапсулирует работу со страницей для остальных классов.
Вот минимальные предположения, которые Salet имеет о вашей игре:
- Игра происходит внутри контейнера
#page
. Всё, что находится вне#page
- неигровые элементы. - В интерфейсе может быть единственная кнопка сохранения игры с ID
save
. - В интерфейсе может быть единственная кнопка загрузки игры с ID
load
. - В интерфейсе может быть единственная кнопка рестарта игры с ID
erase
. - Текст игры находится внутри контейнера
#content
- В интерфейсе может быть блок
#ways
, в котором перечислены доступные для перемещения комнаты. - В интерфейсе может быть блок
#ways_hint
, в котором есть текст-подсказка для блока перемещения.
Свойства CoffeeScript
linkRe
Регулярное выражение для ссылок. Всё, что соответствует этому выражению, понимается Salet как внутренняя ссылка игры.
По умолчанию внутренней считается ссылка, которая содержит латинские буквы, цифры, тире и подчёркивание: room
, или room.action
, или ./action
.
2.0 Ранее находилось в ядре Salet, с версии 2.0 перенесено в класс вида.
verbRe
2.0 Регулярное выражение для действий глаголов. Всё, что соответствует этому выражению, понимается Salet как вызов глагола одного из элементов комнаты.
По умолчанию ловит ссылки вида ./verb_(глагол)_(ID предмета)
Методы CoffeeScript
init
Вызывается автоматически после создания экземпляра Salet
, объявляет стандартные обработчики событий.
writeVerbAction
2.0 Добавляет в действия ссылку на вызов глагола элемента.
Аргумент 1: глагол
Аргумент 2: ID элемента
Аргумент 3: текст ссылки
clearChoices
2.0 Очищает блок вариантов выбора.
Вызывается при выходе из комнат, у которых выставлено clear = false
(т.е. не очищать весь текст, а только устаревшие варианты выбора)
writeVerbs
2.0 Печатает список доступных глаголов.
disableSaving
При вызове отключает кнопку сохранения игры.
enableSaving
При вызове включает кнопку сохранения игры.
enableErasing
При вызове включает кнопку рестарта игры.
disableErasing
При вызове выключает кнопку рестарта игры.
enableLoading
При вызове включает кнопку загрузки игры.
disableLoading
При вызове выключает кнопку загрузки игры.
scrollTopTo
Плавно перематывает страницу до указанного числа пикселей от верхнего края экрана.
Вне зависимости от протяжённости перемотки анимация длится 500мс.
Аргумент: количество пикселей от верхнего края экрана, целое число. Обязательный параметр.
scrollBottomTo
Плавно перематывает страницу до указанного числа пикселей от нижнего края экрана.
Вне зависимости от протяжённости перемотки анимация длится 500мс.
Аргумент: количество пикселей от нижнего края экрана, целое число. Обязательный параметр.
scrollToBottom
Плавно перематывает страницу до конца.
Вне зависимости от протяжённости перемотки анимация длится 500мс.
clearContent
Очищает содержимое указанного блока.
Аргумент: селектор элемента, который нужно очистить; по умолчанию — #content
. Необязательный параметр.
prepareContent
Преобразует аргумент в текст; если передана функция, то выполняет её, если передан объект jQuery, то получает его HTML код.
Аргумент: произвольный, обязательный.
write
Синоним для append.
append
Добавляет указанный HTML к тексту указанного блока.
Текст обрабатывается при помощи функции prepareContent
Если блок не найден, то текст записывается в блок #content
.
Функция возвращает HTML после вставки.
Аргумент 1: текст, который требуется дописать, любого типа. Обязательный параметр.
Аргумент 2: селектор блока, в который дописывается текст. По умолчанию предполагается #content
. Необязательный параметр.
replace
Заменяет текст указанного блока указанным HTML.
Аргумент 1 на входе обрабатывается при помощи функции prepareContent
Аргумент 1: текст, который требуется дописать, любого типа. Обязательный параметр.
Аргумент 2: селектор блока, в который дописывается текст. Обязательный параметр.
clearLinks
Если указан Аргумент 1, то функция превращает все HTML-ссылки, которые ведут на этот адрес, в текст. Если он не указан, то функция превращает все ссылки в текст.
Если указан Аргумент 2, то функция обрабатывает только ссылки внутри этого блока.
Если он не указан, то функция работает внутри блока #page
.
Аргумент 1: цель ссылок. Необязательный параметр.
Аргумент 2: селектор блока, в котором работает функция. Необязательный параметр.
writeChoices
Функция получает список ID комнат и выдаёт обычный список вариантов выбора со ссылками на эти комнаты.
Список не сортируется, но если у комнаты выставлено canChoose = false
, то текст optionText
обрамляется не в ссылку, а в тег <span>
. Таким образом, вы можете делать optionText
, например, формой или особой кнопкой.
Аргумент 1: список ID комнат
showBlock
Показывает указанный блок с красивой анимацией. Если Salet находится в неинтерактивном режиме, анимация не будет проигрываться.
Аргумент 1: селектор блока. Обязательный параметр.
hideBlock
Скрывает указанный блок с красивой анимацией. Если Salet находится в неинтерактивном режиме, анимация не будет проигрываться.
Чаще всего функция вызывается в removeTransient
.
Аргумент 1: селектор блока. Обязательный параметр.
Аргумент 2: флаг удаления. Если true
, то после анимации блок будет удалён из DOM; если false
, то он просто будет скрыт. По умолчанию false
. Необязательный параметр.
cycleLink
Функция возвращает код ссылки для повторяющихся циклов.
Системные методы
Вам вряд ли понадобится вызывать эти методы, но для полноты описания их всё-таки стоит перечислить.
endOutputTransaction
Перематывает страницу так, чтобы было видно новый текст. Вызывается после входа в комнату.
hasLocalStorage
Функция определяет, есть ли доступ к хранилищу браузера. Нужна для определения возможности сохранения. Обычно хранилище доступно и включено.
fixClicks
Функция ставит обработчик, который передаёт щелчок мыши по элементам списка вариантов на первую ссылку в этом элементе. Простой хак для удобства интерфейса.
mark_all_links_old
Убирает класс new
у всех элементов с этим классом.
Простая инкапсуляция для функции salet.processLink
.
removeTransient
Убирает блоки с классом transient
, блоки вариантов выбора и временные ссылки (например, вида <a href="./e?transient">
.
Если передано имя комнаты, то работает только в секции этой комнаты; иначе работает на всём блоке #content
.
Функция вызывается в конце входа в комнату, после того как выведен весь текст, чтобы добавление текста не мешало анимациям.
Аргумент 1: имя комнаты. Необязательный параметр.
updateWays
Функция обновляет список доступных для путешествия комнат.
Аргумент 1: список ID комнат блока. Необязательный параметр (очищает #ways
, если пуст)
Аргумент 2: ID текущей комнаты.