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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Пример использования)
(Пример использования)
Строка 30: Строка 30:
 
[[Файл:Group1.jpg]]
 
[[Файл:Group1.jpg]]
  
Каждой группе принадлежит свое множество участников с разных экранов. К группе Group_mask, например, принадлежат все маски игровых персонажей, такие маски присутствуют практически на каждом экране проекта; а к группе Group_clean относятся все источники воды в проекте (фонтаны, гидранты, шланги...)
+
Каждой группе принадлежит свое множество участников с разных экранов. К группе Group_mask, например, принадлежат все маски игровых персонажей, такие маски присутствуют практически на каждом экране проекта; к группе Group_clean относятся все источники воды, а к группе Group_exit относятся все машины осуществляющие выход из мини-игр. Рассмотрим участника группы Group_mask:
  
 
[[Файл:Group2.jpg]]
 
[[Файл:Group2.jpg]]
  
На экране fountain находится объект dialoge_small, принадлежащий группе Group_mask.
+
На экране fountain находится объект dialoge_small, принадлежащий группе Group_mask. Машина dialoge_small отвечает за диалог с персонажем, а так же к этой машине применяются инвентарные предметы.
 +
 
 +
Инвентарных предметов во всем проекте более 200, они применяются различным образом, но в большинстве случаев просто "дропаются" на маски персонажей, отвечающие за диалог. К персонажу, представленному на экране fountain, необходимо применить линейку, тогда персонаж поблагодарит за предмет. Если мы применим другой предмет, то персонаж должен сказать уникальную фразу. Аналогично для всех персонажей игры, если приносим не тот предмет, то говорит свою уникальную фразу. Без существования группы это означало бы, что в каждом инвентарном объекте необходимо прописать дроп на каждую маску персонажа, и таких масок несколько десятков! Как это можно реализовать с использованием группы показано на рисунке ниже.
 +
 
 +
[[Файл:Group4.jpg]]

Версия 11:45, 14 мая 2013

Объект Group (группа) служит "передатчиком" состояний и параметров одному из множества объектов, которые являются участниками группы.

Участник группы - любой объект, у которого есть поле группа, может стать участником группы.

Группа - посредник между отправителем и получателем. Посредника удобно использовать в том случае, когда вам нужно в зависимости от определенных условий обращаться то к одному, то к другому участнику группы, а к какому именно - не известно. Тогда группа сама определяет получателя в зависимости от условий.


Характеристика объекта

  • Объект Group должен находиться на глобальном экране, чтобы быть видимым на любом экране проекта. Например, его можно поместить рядом с опциями.
  • Объекту Group может принадлежать множество объектов. Например, на экране 1 находится машины А, на экране 2 находится машина В, у них в поле группа выбран объект Group1, который лежит на глобальном экране. Т.е. объекты А и В относятся к группе Group1. Если имеется одна кнопка на расшариной сцене, которая должна на первом экране передавать объекту А состояние st_1, а на втором экране передавать объекту В состояние st_1, то достаточным будет передать объекту Group1 состояние st_1. Группа транслирует это состояние на тот из своих объектов, который находится на текущем экране.
  • Объект Group может передавать состояние или параметр только одному из своих объектов. Во время каждого обращения к группе перечитывается объект, которому будет передаваться состояние, если таких объектов окажется больше 1, возникнет ошибка потому, что группа не будет знать, какому из своих объектов передать состоянии. Следовательно, в случае, когда на экране необходимо разместить несколько объектов принадлежащих группе, все эти объекты должны размещаться на разных сценах, и в каждый момент времени должа быть включена (vis=1) только одна из этих сцен, а все остальные сцены, содержащие объекты группы, должны быть отключены (vis=0). Тогда Group передаст состояние только тому одному объекту, который будет находиться на видимой сцене.
  • В глобальном экране может находится несколько объектов типа Group. Например, Group1 объединяет объекты отвечающие за запуск какой-то мини-игры, при этом на каждом экране запуск уникален, но кнопка запуска одна, а Group2 отвечает за выход из игры, при этом выход на кажном экране отличается, но кнопка выхода одна. Тогда при запуске игры мы будем обращаться к объекту Group1, а при выходе из игры - к объекту Group2, не зависимо от экрана.
  • Объекты принадлежащие одной группе могут быть разного типа и разноименными.
  • Операции применимые к группе:

- set - группе можно установить состояние st и параметр(значение) par(val);

- drop - на группу (объекты принадлежащие группе) можно отпустить объект;

  • Если объекту Group передается состояние st_1, то все объекты принадлежащие группе должны иметь состояние st_1, иначе возникнет ошибка.
  • К группе могут обращаться машины, кнопки и объекты tool. Т.е. в машине, кнопке и tool можно указать set (drop) группе.
  • Группа может транслировать гостя своим машинам. Например, кнопка btn1 передает группе состояние st_1. К группе относится машина А, которая находится на обычном экране. Машина А переходит в состояние st_1 и считает, что ее перевел в это состояние объект btn1.


Пример использования

Рассмотрим часть проекта, в котором используются группы.

На глобальном экране находятся Опции и три Группы (см.Рис.)

Group1.jpg

Каждой группе принадлежит свое множество участников с разных экранов. К группе Group_mask, например, принадлежат все маски игровых персонажей, такие маски присутствуют практически на каждом экране проекта; к группе Group_clean относятся все источники воды, а к группе Group_exit относятся все машины осуществляющие выход из мини-игр. Рассмотрим участника группы Group_mask:

Group2.jpg

На экране fountain находится объект dialoge_small, принадлежащий группе Group_mask. Машина dialoge_small отвечает за диалог с персонажем, а так же к этой машине применяются инвентарные предметы.

Инвентарных предметов во всем проекте более 200, они применяются различным образом, но в большинстве случаев просто "дропаются" на маски персонажей, отвечающие за диалог. К персонажу, представленному на экране fountain, необходимо применить линейку, тогда персонаж поблагодарит за предмет. Если мы применим другой предмет, то персонаж должен сказать уникальную фразу. Аналогично для всех персонажей игры, если приносим не тот предмет, то говорит свою уникальную фразу. Без существования группы это означало бы, что в каждом инвентарном объекте необходимо прописать дроп на каждую маску персонажа, и таких масок несколько десятков! Как это можно реализовать с использованием группы показано на рисунке ниже.

Group4.jpg