Active zone

Материал из wiki.appsalutecreator.com
Версия от 08:37, 19 августа 2016; Lkunica (обсуждение | вклад) (Основные параметры)
Перейти к: навигация, поиск

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

Zone1.png

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

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

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

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

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

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

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

Дополнительные параметры

Zone2.png
Zone3.png
Zone4.png

реакция

Реализует реакцию на клик и/или дроп тула.

  • дроп (drop) - объект, который дропаем на активную зону. Если не задан - обрабатываем клик.

Если дроп прописан и в туле и в зоне, то команда для дропа выполнится в обоих объектах (команда в зоне отработает на 10-20 мс позже, при этом если команды в зоне и туле одинаковы, то первый set данной команды выполнится дважды). По этому желательно прописывать команду дропа или в туле или в зоне.

Но если на зону есть применение тула, то как минимум должно быть заполнено поле "дроп"(остальные могут быть пустыми). Так как, когда зоне вызывается hint, то и тул прописанный в поле "дроп" тоже будет подсвечиваться, но после передачи менеджеру состояния hint_tool.

  • объект (obj) - объект, которому будем менять состояние.

Один объект может отвечать за несколько действий.

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

  • состояние (st) - состояние для объекта из предыдущего поля.
  • состояние зоны (stz) - новое состояние активной зоны, в которое она перейдет после отработки реакции.
    • work - новое состояние зоны по умолчанию. Зона на клик/дроп не реагирует, глинт/хинт зону не подсвечивает.
    • active - активация зоны для отработки следующей реакции(в случае, если прописано несколько реакций). Если не указать active, зона перейдет в work и для отработки следующей реакции, ее нужно будет перевести в active другим объектом.
    • reset - сбрасывает состояние все параметры зоны: зона переходит в active, счетчик реакции стает = 0 (будет выполняться первая реакция). Применяется когда нужно зациклить одну команду (например показ сообщения, что нужно что то использовать и т.д.). При этом, если на клик должно быть несколько действий, то нужно их логику прописать в машине, которая обрабатывает реакцию(если указано reset, как новое состояние зоны, то следующие реакции никогда не выполнятся, так как счетчик реакций всегда сбрасывается на первую ). Если в области зоны должен применяться тул, то его прописываем в параметре "дроп", а остальные поля не подключаем.


условие допустимости хинта (дополнительные)

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

Дополнительные условия допустимости хинта связаны с основным логическим "И".

Состояния зоны

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

Состояния зоны можно проверять через if для настройки логики.

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

  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