Triggers.Flags.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using CommonLang.Property;
  5. using CommonAI.Zone.ZoneEditor;
  6. using CommonAI.Zone.Instance;
  7. using CommonAI.Zone.Attributes;
  8. using CommonAI.Zone.EventTrigger;
  9. namespace CommonAI.Zone.ZoneEditor.EventTrigger
  10. {
  11. [DescAttribute("Flag开启(包括空气墙)", "Flag")]
  12. public class FlagOpenedTrigger : AbstractTrigger
  13. {
  14. [DescAttribute("Flag")]
  15. public FlagValue Flag = new FlagValue.NA();
  16. public override string ToString()
  17. {
  18. return string.Format("当({0})开启时", Flag);
  19. }
  20. public override void Listen(EventTriggerAdapter api, EventArguments args)
  21. {
  22. InstanceFlag flag = Flag.GetValue(api, args);
  23. if (flag != null)
  24. {
  25. //flag.OnFlagEnabled += api.onFlagOpened;
  26. api.listen_FlagOpened(args, flag);
  27. }
  28. }
  29. }
  30. [DescAttribute("Flag关闭(包括空气墙)", "Flag")]
  31. public class FlagClosedTrigger : AbstractTrigger
  32. {
  33. [DescAttribute("Flag")]
  34. public FlagValue Flag = new FlagValue.NA();
  35. public override string ToString()
  36. {
  37. return string.Format("当({0})关闭时", Flag);
  38. }
  39. public override void Listen(EventTriggerAdapter api, EventArguments args)
  40. {
  41. InstanceFlag flag = Flag.GetValue(api, args);
  42. if (flag != null)
  43. {
  44. //flag.OnFlagEnabled += api.onFlagClosed;
  45. api.listen_FlagClosed(args, flag);
  46. }
  47. }
  48. }
  49. //-------------------------------------------------------------------------------------------
  50. #region __区域事件__
  51. [DescAttribute("单位进入区域", "区域")]
  52. public class UnitEnterRegion : AbstractTrigger
  53. {
  54. [DescAttribute("区域")]
  55. public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
  56. public override string ToString()
  57. {
  58. return string.Format("当单位进入({0})", Region);
  59. }
  60. public override void Listen(EventTriggerAdapter api, EventArguments args)
  61. {
  62. ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
  63. if (region != null)
  64. {
  65. api.listen_RegionEntered(args, region);
  66. }
  67. }
  68. }
  69. [DescAttribute("单位离开区域", "区域")]
  70. public class UnitLeaveRegion : AbstractTrigger
  71. {
  72. [DescAttribute("区域")]
  73. public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
  74. public override string ToString()
  75. {
  76. return string.Format("当单位离开({0})", Region);
  77. }
  78. public override void Listen(EventTriggerAdapter api, EventArguments args)
  79. {
  80. ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
  81. if (region != null)
  82. {
  83. api.listen_RegionLeft(args, region);
  84. }
  85. }
  86. }
  87. [DescAttribute("区域刷新单位结束", "区域 - 刷新点")]
  88. public class SpawnUnitRegionIsDone : AbstractTrigger
  89. {
  90. [DescAttribute("区域")]
  91. public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
  92. public override string ToString()
  93. {
  94. return string.Format("当({0})单位刷新结束时", Region);
  95. }
  96. public override void Listen(EventTriggerAdapter api, EventArguments args)
  97. {
  98. ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
  99. if (region != null)
  100. {
  101. api.listen_RegionSpawnOver(args, region);
  102. }
  103. }
  104. }
  105. [DescAttribute("指定单位进入区域一次", "区域")]
  106. public class UnitEnterRegionOnce : AbstractTrigger
  107. {
  108. [DescAttribute("单位")]
  109. public UnitValue Unit = new UnitValue.Trigging();
  110. [DescAttribute("区域")]
  111. public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
  112. public override string ToString()
  113. {
  114. return string.Format("({0})进入({1})一次", Unit, Region);
  115. }
  116. public override void Listen(EventTriggerAdapter api, EventArguments args)
  117. {
  118. ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
  119. InstanceUnit unit = Unit.GetValue(api, args);
  120. if (region != null && unit != null)
  121. {
  122. args = args.Clone();
  123. region.ListenUnitEnterOnce(unit, (r, u) =>
  124. {
  125. args.TriggingFlag = r;
  126. args.TriggingUnit = u;
  127. api.TestAndDoAction(args);
  128. });
  129. }
  130. }
  131. }
  132. [DescAttribute("指定单位离开区域一次", "区域")]
  133. public class UnitLeaveRegionOnce : AbstractTrigger
  134. {
  135. [DescAttribute("单位")]
  136. public UnitValue Unit = new UnitValue.Trigging();
  137. [DescAttribute("区域")]
  138. public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
  139. public override string ToString()
  140. {
  141. return string.Format("({0})离开({1})一次", Unit, Region);
  142. }
  143. public override void Listen(EventTriggerAdapter api, EventArguments args)
  144. {
  145. ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
  146. InstanceUnit unit = Unit.GetValue(api, args);
  147. if (region != null && unit != null)
  148. {
  149. args = args.Clone();
  150. region.ListenUnitLeaveOnce(unit, (r, u) =>
  151. {
  152. args.TriggingFlag = r;
  153. args.TriggingUnit = u;
  154. api.TestAndDoAction(args);
  155. });
  156. }
  157. }
  158. }
  159. #endregion
  160. //-------------------------------------------------------------------------------------------
  161. #region __Area事件__
  162. [DescAttribute("单位进入Area", "Area")]
  163. public class UnitEnterArea : AbstractTrigger
  164. {
  165. [DescAttribute("Area")]
  166. public FlagValue.EditorArea Area = new FlagValue.EditorArea();
  167. public override string ToString()
  168. {
  169. return string.Format("当单位进入({0})", Area);
  170. }
  171. public override void Listen(EventTriggerAdapter api, EventArguments args)
  172. {
  173. ZoneArea region = Area.GetValue(api, args) as ZoneArea;
  174. if (region != null)
  175. {
  176. api.listen_AreaEntered(args, region);
  177. }
  178. }
  179. }
  180. [DescAttribute("单位离开Area", "Area")]
  181. public class UnitLeaveArea : AbstractTrigger
  182. {
  183. [DescAttribute("Area")]
  184. public FlagValue.EditorArea Area = new FlagValue.EditorArea();
  185. public override string ToString()
  186. {
  187. return string.Format("当单位离开({0})", Area);
  188. }
  189. public override void Listen(EventTriggerAdapter api, EventArguments args)
  190. {
  191. ZoneArea region = Area.GetValue(api, args) as ZoneArea;
  192. if (region != null)
  193. {
  194. api.listen_AreaLeft(args, region);
  195. }
  196. }
  197. }
  198. [DescAttribute("指定单位进入Area一次", "区域")]
  199. public class UnitEnterAreaOnce : AbstractTrigger
  200. {
  201. [DescAttribute("单位")]
  202. public UnitValue Unit = new UnitValue.Trigging();
  203. [DescAttribute("Area")]
  204. public FlagValue.EditorArea Area = new FlagValue.EditorArea();
  205. public override string ToString()
  206. {
  207. return string.Format("({0})进入({1})一次", Unit, Area);
  208. }
  209. public override void Listen(EventTriggerAdapter api, EventArguments args)
  210. {
  211. ZoneArea area = Area.GetValue(api, args) as ZoneArea;
  212. InstanceUnit unit = Unit.GetValue(api, args);
  213. if (area != null && unit != null)
  214. {
  215. args = args.Clone();
  216. area.ListenUnitEnterOnce(unit, (r, u) =>
  217. {
  218. args.TriggingFlag = r;
  219. args.TriggingUnit = u;
  220. api.TestAndDoAction(args);
  221. });
  222. }
  223. }
  224. }
  225. [DescAttribute("指定单位离开Area一次", "区域")]
  226. public class UnitLeaveAreaOnce : AbstractTrigger
  227. {
  228. [DescAttribute("单位")]
  229. public UnitValue Unit = new UnitValue.Trigging();
  230. [DescAttribute("Area")]
  231. public FlagValue.EditorArea Area = new FlagValue.EditorArea();
  232. public override string ToString()
  233. {
  234. return string.Format("({0})离开({1})一次", Unit, Area);
  235. }
  236. public override void Listen(EventTriggerAdapter api, EventArguments args)
  237. {
  238. ZoneArea area = Area.GetValue(api, args) as ZoneArea;
  239. InstanceUnit unit = Unit.GetValue(api, args);
  240. if (area != null && unit != null)
  241. {
  242. args = args.Clone();
  243. area.ListenUnitLeaveOnce(unit, (r, u) =>
  244. {
  245. args.TriggingFlag = r;
  246. args.TriggingUnit = u;
  247. api.TestAndDoAction(args);
  248. });
  249. }
  250. }
  251. }
  252. #endregion
  253. //-------------------------------------------------------------------------------------------
  254. }