Active zone — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Особенности использования)
(Особенности использования)
Строка 57: Строка 57:
 
# Если есть зона, которая должна быть активна пока не совершено некоторое действие, то в ее реакции целесообразно использовать reset, как новое  состояние зоны. А после совершения действия зону нужно перевести в work, чтобы она не подсвечивалась глинтом/хинтом.
 
# Если есть зона, которая должна быть активна пока не совершено некоторое действие, то в ее реакции целесообразно использовать reset, как новое  состояние зоны. А после совершения действия зону нужно перевести в work, чтобы она не подсвечивалась глинтом/хинтом.
 
# Если на некоторую область нужно применить несколько тулов, то для каждого применения должна быть своя зона, чтобы при хинте подсвечивался только один тул(в основном так и будет и в случае одной зоны, так как для всех тулов используется один флаер для подсветки, но могут возникать трудноуловимые ошибки). Пример: Есть область к которой нужно применить тул1, тул2 и тул3 (в таком же порядке). Для этого делаем 3 зоны: зона1, зона2, зона3(номера соответствуют тулам). Алгоритм следующий: Сначала активна только зона1, после применения зона1 переводится в work, а зона2 в active. После применения тула2 переводим зону2 в work, а зону3 в active. При этом если зона должна активироваться после анимации, то нужно предусмотреть страховку от падения приложения во время анимации(машинка, которые проверяет некоторые условия, и в случае их истинности, активирует зону).
 
# Если на некоторую область нужно применить несколько тулов, то для каждого применения должна быть своя зона, чтобы при хинте подсвечивался только один тул(в основном так и будет и в случае одной зоны, так как для всех тулов используется один флаер для подсветки, но могут возникать трудноуловимые ошибки). Пример: Есть область к которой нужно применить тул1, тул2 и тул3 (в таком же порядке). Для этого делаем 3 зоны: зона1, зона2, зона3(номера соответствуют тулам). Алгоритм следующий: Сначала активна только зона1, после применения зона1 переводится в work, а зона2 в active. После применения тула2 переводим зону2 в work, а зону3 в active. При этом если зона должна активироваться после анимации, то нужно предусмотреть страховку от падения приложения во время анимации(машинка, которые проверяет некоторые условия, и в случае их истинности, активирует зону).
# Если нужно, чтобы зона некоторое время не подсвечивалась(пока не закончится анимация и т.п.), то на это время ей нужно установить vis = 0 и состояние active, в случае падения приложения, при повторном заходе зона будет активна и отработает как нужно.
+
# Если нужно, чтобы зона некоторое время не была активной(пока не закончится анимация и т.п.), то на это время ей нужно установить vis = 0 (и оставить состояние active - в случае падения приложения, при повторном заходе зона будет активна и отработает как нужно(в случае если зона пишет свое состояние в опции - что почти всегда так)), но если после реакции зоне вызывается reset, то vis нужно устанавливать с задержкой в 50 мс(reset устанавливает vis = 1).
 
# Состояние зоны можно изменять из другого экрана с помощью set изменяя у опций (для пользователя) параметр azones.z(id зоны).st, у зоны должен быть включен параметр "в опции".
 
# Состояние зоны можно изменять из другого экрана с помощью set изменяя у опций (для пользователя) параметр azones.z(id зоны).st, у зоны должен быть включен параметр "в опции".
 
# порядок расположения зон в дереве проекта и в азменеджере (добавляемый параметр - дополнительная зона) задает порядок хинтования зон при вызове азменеджеру hint_seq
 
# порядок расположения зон в дереве проекта и в азменеджере (добавляемый параметр - дополнительная зона) задает порядок хинтования зон при вызове азменеджеру hint_seq

Версия 12:55, 19 марта 2015

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

Zone1.png

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

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

В основном для всех зон выбирается 1, что позволяет значительно упростить управление. Данный параметр опций можно изменять с помощью машины, и таким образом управлять состоянием зоны с другого экрана. Иногда нужно делать машины для страховки от падения приложения. Пример: Есть зона которая добавляет тул, но пока не совершилось некоторое действие она не активна. После совершения этого действия показывается анимация, в конце которой зона переводится в active. Так вот, нужна машинка которая будет проверять сделано ли действие и забран ли тул. Если действие сделано, а тул не забран, данная машина активирует зону. Если такой машины не будет, то в случае падения приложения во время анимации(до активации зоны) будет блокер игры.

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

В основном используется безресурсная зона. Размер зоны задается через ее параметры, то есть уже не нужно делать маски на кликабельные предметы или использовать машины, с ресурсом прозрачной маски, которая растянута с помощью скейла.

  • курсор (curs) - графический ресурс курсора текущего и всех дочерних объектов.

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

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

Пример

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

Файл sample_activezone_and_azmanager.zip