Авторизация
×

Логин (e-mail)

Пароль

Интерактивные истории, текстовые игры и квесты
Гиперкнига

Библиотека    Блог

Посетите наш новый сайт AXMAJS.RU

Что нужно знать при использовании вкладок

Борис Семёнов (Morych), 11.06.13 | Маленькие хитрости

Если вы решили организовать интерфейс игры с использованием вкладок, обязательно обратите внимание на следующий очевидный момент. На каждой сцене игрок может переключать вкладки, а значит один и тот же параграф с описанием сцены будет вызываться несколько раз подряд. Если в описании сцены есть только текст и ссылки, беспокоиться нечего, но если там присутствуют ещё и вычисления, следует убедиться, что их повторное выполнение не приведёт к багам.

Поясню на примере. Допустим, наш герой, проходя в городские ворота, платит стражнику один золотой. В описании сцены будет что-то вроде того:

За вход в город вы заплатили стражнику в помятом шлеме один золотой.
<<set $gold = $gold - 1>>

Количество золота ($gold) уменьшилось на 1. И тут игрок решил переключиться на вкладку «Инвентарь» или «Статус». Затем он снова возвращается на вкладку со сценой, код параграфа выполняется, и золото, конечно же, уменьшается ещё раз. Вот вам и баг, и справедливые возмущения игроков на тему «где моё золото».

Похожая ситуация возникнет, если у вас несколько описаний сцены, и номер описания каждый раз изменяется последовательно или случайно. Возвращаясь с любой вкладки на вкладку «Сцена», игрок будет видеть разное описание, и это вполне может вызвать его недоумение.

Чтобы разобраться с этой проблемой достаточно поместить все вычисления в блок условных операторов. Для нашего примера:

За вход в город вы заплатили стражнику в помятом шлеме один золотой.
<<if $$title neq "Обновить">>
    <<set $gold = $gold - 1>>
<<endif>>

Если параграф с описанием сцены вызывается макросом «display» из служебного параграфа «Обновить», значение системного объекта $$title будет равно строке «Обновить». Это означает, что игрок нажал вкладку «Сцена», и вычисления выполнять не нужно. В приведённом выше примере вычисления будут выполняться только в том случае, если игрок перешёл на параграф со сценой по прямой ссылке.

Ещё раз напомню, что вышесказанное справедливо для варианта организации вкладок из статьи «Элементы интерфейса. Вкладки».

Комментарии: 2.

Профиль


Закрыть
Artyom Rahl
07.05.15 00:45

Низкий поклон автору. Долго не мог решить у себя эту проблему пока не зашел сюда. Спасибо за объяснение.
Morych
12.05.15 11:41

Рад, что смог помочь :)

Для того, чтобы оставлять комментарии, необходимо зарегистрироваться и подтвердить в профиле указанный e-mail адрес.

При использовании любых материалов блога обязательно указание ссылки на источник