Active zone

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

Данный объект предназначен для автоматизации управления в игровой локации. Для работы обязательно должен быть подключен к адвентюрному менеджеру локации(должен быть его подобъектом или прописан через дополнительный параметр менеджера). Имеет основные параметры объекта.

Zone1.png

Основные параметры

Состояние (state) - начальное состояние зоны. По умолчанию - disabled . Можно указать состояние active , если зона должна быть активной сразу, а не после некоторого действия.

В опции (saveopt) - если "да" , то зона будет сохранять свое состояние в опции и при ините будет находится в этом состоянии. Это позволяет значительно упростить управление. Данный параметр опций можно изменять с помощью объекта как в текущем экране, так и в другом.

res (res) - графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов. В основном используется безресурсная зона. Размер зоны задается через ее параметры w, h .

Курсор (curs) - графический ресурс курсора текущего и всех дочерних объектов. Перетаскивается мышкой из редактора ресурсов.

Условие допустимости хинта

  • объект (objEx) - объект, который должен находиться в определенном состоянии для подхинтовывания зоны.
  • состояние (stEx) - состояние объекта из предыдущего поля.
  • параметр (parEx) - параметр объекта из предыдущего поля.
  • значение (valEx) - значение выше указанного параметра.
  • НЕ (notEx) - отрицание условия.
  • общее НЕ (notExAll) - отрицание всего набора условий. Используется, если нужно чтобы все указанные условия подхинтовывания воспринимались через "или", а не через "и".
  • реагировать на (reacttype) - реагировать на тап или на нажатие.
  • подсветка тула (toolhinttype) - подсветка тула всегда из первой реакции или же того, который есть в инвентаре.
  • объект фокусировки (focObj) - объект, на который будет фокусироваться сцена при подсветке зоны.

Activezone setup

Zone2.png
Az setup2.png
Az setup5.png

Окно настройки активной зоны состоит из 2х вкладок: условия допустимости хинта и реакции.

1. Условия допустимости хинта - Иначе говоря, при каких условиях будет подхинтовываться и подглинтовываться зона. Может использоваться целый набор условий. Если нужно, чтобы они все учитывались через "или", следует указать общее НЕ в основном условии подхинтовывания и "НЕ" в каждом.

Условие допустимости хинта ni, i=1,2,3,..

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

2. Реакции - Действия, которые произойдут после клика или дропа объекта на зону. По умолчанию после каждой реакции зона переходит в состояние work. Для того, чтобы после отработки реакции №1 зона перешла к реакции №2, нужно в реакции №1 задать состояние зоне active. И так далее. В последней же реакции нужно задать состояние зоне reset, если нужно повторить реакции, начиная с 1й. Чаще всего такая схема нужна для отображения разных текстовых сообщений по клику на одну и ту же зону.

Общая схема реакций:

- реакция 1
   - действие 1
   - действие 2
   ..........
   - действие n
- реакция 2
   - действие 1
   - дейстиве 2
   ..........
   - дейстиве m
- .........

Реакция nj, j=1,2,3,..

  • дроп - объект, который дропаем на активную зону. Если этот объект является тулом, то при передаче зоне состояния hint_tool он будет подсвечиваться. Также, если дроп прописан и в туле, и в зоне, то команда для дропа выполнится в обоих объектах (команда в зоне отработает на 10-20 мс позже; при этом если команды и в зоне, и в туле одинаковы, то первый set данной команды выполнится дважды). Поэтому желательно прописывать команду дропа или в туле, или в зоне.
  • объект - объект, которому будем менять состояние.
  • состояние - состояние для объекта из предыдущего поля.
  • состояние зоны - новое состояние активной зоны, в которое она перейдет после отработки реакции.

Действие njk, k=1,2,3,..

  • объект - объект, которому будем менять состояние.
  • состояние - состояние для объекта из предыдущего поля.
  • par - параметр для объекта из предыдущего поля.
  • val_txt - текстовый id, если выше указанный параметр txtID.
  • val - значение для выше указанного параметра.
  • перейти на - экран перехода.

Состояния

  • disabled - начальное состояние по умолчанию. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
  • work - состояние отработавшей зоны. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
  • active - в данном состоянии зона активна: может отработать очередную реакцию (1 раз), подсвечивается глинтом/хинтом.
  • reset - сбрасывает параметры зоны: зона переходит в active, счетчик реакции = 0. В отличии от других состояний не пишется в опции, так как отрабатывает непосредственно после реакции.

Особенности использования

  1. Если зона имеет параметр vis = 0, то она не подсвечивается глинтом/хинтом (и на клик/дроп не реагирует). Это используется если в локации есть зумы. чтобы когда зум открыт, не подсвечивались хинтом/глинтом зоны в самой локации. Для этого нужно зоны в локации объединить в groupset и при открытии зума, передавать этому groupset vis = 0. При этом зум должен при окртытии/закрытии изменять vis объектам, которые содержит.
  2. Если есть зона, которая должна быть активна пока не совершено некоторое действие, то в ее реакции целесообразно использовать reset, как новое состояние зоны. А после совершения действия зону нужно перевести в work, чтобы она не подсвечивалась глинтом/хинтом.
  3. Если на некоторую область нужно применить несколько тулов, то для каждого применения должна быть своя зона, чтобы при хинте подсвечивался только один тул(в основном так и будет и в случае одной зоны, так как для всех тулов используется один флаер для подсветки, но могут возникать трудноуловимые ошибки). Пример: Есть область к которой нужно применить тул1, тул2 и тул3 (в таком же порядке). Для этого делаем 3 зоны: зона1, зона2, зона3(номера соответствуют тулам). Алгоритм следующий: Сначала активна только зона1, после применения зона1 переводится в work, а зона2 в active. После применения тула2 переводим зону2 в work, а зону3 в active. При этом если зона должна активироваться после анимации, то нужно предусмотреть страховку от падения приложения во время анимации(машинка, которые проверяет некоторые условия, и в случае их истинности, активирует зону).
  4. Если нужно, чтобы зона некоторое время не была активной(пока не закончится анимация и т.п.), то на это время ей нужно установить vis = 0 (и оставить состояние active - в случае падения приложения, при повторном заходе зона будет активна и отработает как нужно(в случае если зона пишет свое состояние в опции - что почти всегда так)), но если после реакции зоне вызывается reset, то vis нужно устанавливать с задержкой в 50 мс(reset устанавливает vis = 1).
  5. Состояние зоны можно изменять из другого экрана с помощью set изменяя у опций (для пользователя) параметр azones.z(id зоны).st, у зоны должен быть включен параметр "в опции".
  6. порядок расположения зон в дереве проекта и в азменеджере (добавляемый параметр - дополнительная зона) задает порядок хинтования зон при вызове азменеджеру hint_seq
  7. При динамическом изменении параметров азменеджера (машиной, при загрузке экрана, с передачей азменеджеру состояния init), который управляет зоной, которой тоже динамически изменяют параметры, нужно чтобы сначала изменялись параметры азменеджера, а потом активной зоны; иначе после init'a азменеджера зона сбросит свои параметры.
  8. При наличии объекта, который можно дропнуть на зону и он при этом остается доступным игроку, в машине-обработчике дропа нужно делать проверку было ли применение; иначе предмет можно будет дропнуть неограниченное количество раз (связано с изменением vis активной зоны).

Пример

S:\!MOBILE\!!!EditorGames\Wiki_sample

Файл sample_activezone_and_azmanager.zip