Scenarist Pro: часть 8

4.6.2. Пример второй - возвращение из фильма в тот же раздел меню, к какому относится проигрываемый фрагмент фильма

      Задача: Зритель во время просмотра фильма нажимает кнопку меню и после нажатия попадает именно в тот раздел меню эпизодов, к которому относился проигрываемый в момент нажатия кнопки меню фрагмент. Это удобно, поскольку зритель сразу может увидеть, в какой части фильма он находится и перейти в любое другое место уже вполне осознанно. Если же пользователь захочет попасть в главное меню, ему надо будет просто нажать кнопку меню еще раз. 
      При решении любой задачи необходимо руководствоваться обыкновенным здравым смыслом, поэтому первой операцией, которой нам надо сделать, это как-то запомнить тот факт, что мы смотрели фильм и вышли в меню именно из него. Проще всего это сделать, записав какое-нибудь число в GPRM регистр. Для этого щелкнем мышью на ярлыке Pre основного фильма. программа автоматически вызовет Simulation window и на экране появится такой диалог:

 

    Как видно из рисунка, никаких команд на Pre нет. Для ввода команды сначала следует снять флажок у No Command (Нет команды). На экране появится диалог ввода команды:

Поскольку нам надо просто записать в GPRM число, то мы выберем в ниспадающем меню Command (Команда) команду Set to GPRM (Установить GPRM):

     По умолчанию команда Set to GPRM настроена на присвоение значения (Assign) одного регистра GPRM другому. Если мы хотели бы присвоить значение SPRM регистра регистру GPRM, то в поле Set следовало бы выбрать SPRM. Нам же требуется занести число и для этого в поле Set нам надо выбрать Immediate (Немедленно):

 

    Занесем в регистр GPRM3 число 100. Для нашего примера совершенно все равно, какое именно число будет занесено, лишь бы оно отличалось от нуля. Тем самым, поскольку мы повесили команду на Pre, при любом входе в фильм мы присваиваем GPRM3 значение 100.
    C фильмом все необходимые действия проделаны (помните, что по умолчанию флаг Post фильма должен быть соединен с флагом Pre Root Menu), теперь настало время для работы с Root меню. Выберем флаг Pre в Root меню и в Simulation window мы увидим:

 

     Как видно из рисунка, никаких команд на Pre нет. Подумаем, что нужно сделать для перехода к нужной ячейке меню эпизодов:

  1. Записать в GPRM регистр номер текущей главы, который, как нам известно, находится в регистре SPRM7.

  2. Определить, из фильма мы попали в меню или из какого-либо другого места - например, из того же меню эпизодов. Если не из фильма, то никаких действий не предпринимать.

  3. Если из фильма, то сразу перейти к меню эпизодов.

Введем команды для выполнения описанной последовательности:

 

     Как видно из рисунка, мы переписали в регистр GPRM7 содержимое регистра SPRM7 и, тем самым, в регистре GPRM7 теперь хранится номер главы (сцены), которую смотрел зритель перед тем, как нажать кнопку меню. Регистр GPRM7 выбран произвольно, можно выбрать любой другой, за исключением GPRM3, который мы уже используем для запоминания входа в фильм. Далее проверяем, откуда мы пришли в меню и делаем переход к меню эпизодов, если пришли из фильма:

     Понятно, что если содержимое GPRM3 не равно 100, т.е. мы не смотрели фильм, то мы просто попадаем в Root Menu. В этом случае все дальнейшие действия зрителя идут обычным путем и нас интересовать не будут. Если же мы переходим сразу к меню эпизодов, т.е. мы пришли из фильма, то нам надо сделать такие операции:

  1. Снова проверить, откуда мы пришли, поскольку зритель может попасть в меню эпизодов и обычным путем через Root Menu. Если не из фильма, то просто перейти к первому меню эпизодов.

  2. Стереть информацию о том, что мы пришли из фильма, поскольку попав потом в меню эпизодов, действия зрителя могут быть любыми и он, в частности, может захотеть попасть в Root Menu. В этом случае, если содержимое GPRM3 останется равным 100, бедный зритель опять попадет в меню эпизодов.

  3. Выполнить операции сравнения содержимого регистра GPRM7 с числовыми константами и в зависимости от результатов сравнения перейти к соответствующей ячейке меню эпизодов.

    Проверяем, откуда пришли в меню эпизодов и переходим к первому меню эпизодов и к первой кнопке в этом меню, если пришли не из фильма:

    Если условие не было выполнено, то следующим пунктом - обнуление GPRM3:

     Теперь выполняем сравнения и переход:

 

    На рисунке в выделенных красным полях указаны значения для последней команды, конечно. В этом примере в качестве кнопки по умолчанию выбрана 5-ая, т.е. кнопка перехода к Root Menu, которая есть в каждом меню эпизодов. Понятно, что может быть выбрана любая другая кнопка. Если же вы хотите, чтобы зритель попал именно на ту кнопку, которая относится к просматриваемой зрителем главе, то это просто потребует большего количества команд. Пример:

      Делая свой проект, подобный рассмотренному в нашем примере, вы должны учесть:

  1. Для того, чтобы выбирались заданные вами кнопки, следует установить параметр Nonexistent, как описано в 4.1.1.1.4. Раздел Highlight.

  2. Если Title Menu реально используется, то на его Pre надо повесить обнуление того регистра, который применялся для запоминания факта просмотра фильма (в нашем примере это GPRM3), поскольку при сознательном выборе Title Menu очевидно, что зрителю меню эпизодов не нужно. 

На этом мы завершили описание второго примера, сценарий которого вы можете переписать отсюда