UnitEnvironment.Actions.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. using CommonAI.RTS; using CommonLang.Vector;
  2. using CommonAI.Zone.Attributes;
  3. using CommonAI.Zone.Instance;
  4. using CommonAI.Zone.ZoneEditor;
  5. using CommonAI.Zone.ZoneEditor.EventTrigger;
  6. using CommonLang.Property;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using CommonAI.Zone.EventTrigger;
  12. namespace CommonAI.Zone.ZoneEditor.EventTrigger
  13. {
  14. //-------------------------------------------------------------------------------------------
  15. #region _设置_单位变量_
  16. [DescAttribute("", "设置 - 单位变量")]
  17. public abstract class SetUnitVar<T> : AbstractAction
  18. {
  19. [DescAttribute("变量名")]
  20. public string Key = "VarName";
  21. [DescAttribute("单位")]
  22. public UnitValue Unit = new UnitValue.Trigging();
  23. [DescAttribute("是否同步到客户端(如果需要客户端显示,则填True)")]
  24. public bool SyncToClient = true;
  25. public override string ToString()
  26. {
  27. return string.Format("单位({2})设置变量\"{0}\"={1}", Key, TValue, Unit);
  28. }
  29. override public void DoAction(EventTriggerAdapter api, EventArguments args)
  30. {
  31. InstanceUnit unit = Unit.GetValue(api, args);
  32. if (unit != null)
  33. {
  34. T value = TValue.GetValue(api, args);
  35. unit.SetEnvironmentVar(Key, value, SyncToClient);
  36. }
  37. }
  38. abstract public AbstractValue<T> TValue { get; }
  39. }
  40. [DescAttribute("设置字符串型", "设置 - 单位变量")]
  41. public class SetUnitString : SetUnitVar<string>
  42. {
  43. [DescAttribute("变量值")]
  44. public StringValue Value = new StringValue.VALUE("text");
  45. override public AbstractValue<string> TValue { get { return Value; } }
  46. }
  47. [DescAttribute("设置整数型", "设置 - 单位变量")]
  48. public class SetUnitInteger : SetUnitVar<Int32>
  49. {
  50. [DescAttribute("变量值")]
  51. public IntegerValue Value = new IntegerValue.VALUE();
  52. override public AbstractValue<Int32> TValue { get { return Value; } }
  53. }
  54. [DescAttribute("设置小数型", "设置 - 单位变量")]
  55. public class SetUnitReal : SetUnitVar<Single>
  56. {
  57. [DescAttribute("变量值")]
  58. public RealValue Value = new RealValue.VALUE();
  59. override public AbstractValue<Single> TValue { get { return Value; } }
  60. }
  61. [DescAttribute("设置布尔型", "设置 - 单位变量")]
  62. public class SetUnitBool : SetUnitVar<Boolean>
  63. {
  64. [DescAttribute("变量值")]
  65. public BooleanValue Value = new BooleanValue.VALUE();
  66. override public AbstractValue<Boolean> TValue { get { return Value; } }
  67. }
  68. [DescAttribute("设置单位", "设置 - 单位变量")]
  69. public class SetUnitUnit : SetUnitVar<InstanceUnit>
  70. {
  71. [DescAttribute("变量值")]
  72. public UnitValue Value = new UnitValue.NA();
  73. override public AbstractValue<InstanceUnit> TValue { get { return Value; } }
  74. }
  75. [DescAttribute("设置Flag", "设置 - 单位变量")]
  76. public class SetUnitFlag : SetUnitVar<InstanceFlag>
  77. {
  78. [DescAttribute("变量值")]
  79. public FlagValue Value = new FlagValue.NA();
  80. override public AbstractValue<InstanceFlag> TValue { get { return Value; } }
  81. }
  82. [DescAttribute("设置物品", "设置 - 单位变量")]
  83. public class SetUnitItem : SetUnitVar<InstanceItem>
  84. {
  85. [DescAttribute("变量值")]
  86. public ItemValue Value = new ItemValue.NA();
  87. override public AbstractValue<InstanceItem> TValue { get { return Value; } }
  88. }
  89. [DescAttribute("设置位置坐标", "设置 - 单位变量")]
  90. public class SetUnitPosition : SetUnitVar<Vector2>
  91. {
  92. [DescAttribute("变量值")]
  93. public PositionValue Value = new PositionValue.VALUE();
  94. override public AbstractValue<Vector2> TValue { get { return Value; } }
  95. }
  96. #endregion
  97. //-------------------------------------------------------------------------------------------
  98. //-------------------------------------------------------------------------------------------
  99. #region _设置_单位变量_StringValueKey_
  100. [DescAttribute("", "设置 - 单位变量(变量索引)")]
  101. public abstract class SetUnitVarStringValueKey<T> : AbstractAction
  102. {
  103. [DescAttribute("变量名")]
  104. public StringValue Key = new StringValue.VALUE("VarName");
  105. [DescAttribute("单位")]
  106. public UnitValue Unit = new UnitValue.Trigging();
  107. [DescAttribute("是否同步到客户端(如果需要客户端显示,则填True)")]
  108. public bool SyncToClient = true;
  109. public override string ToString()
  110. {
  111. return string.Format("单位({2})设置变量\"{0}\"={1}", Key, TValue, Unit);
  112. }
  113. override public void DoAction(EventTriggerAdapter api, EventArguments args)
  114. {
  115. InstanceUnit unit = Unit.GetValue(api, args);
  116. string key = Key.GetValue(api, args);
  117. if (unit != null && key != null)
  118. {
  119. T value = TValue.GetValue(api, args);
  120. unit.SetEnvironmentVar(key, value, SyncToClient);
  121. }
  122. }
  123. abstract public AbstractValue<T> TValue { get; }
  124. }
  125. [DescAttribute("设置字符串型", "设置 - 单位变量(变量索引)")]
  126. public class SetUnitStringStringValueKey : SetUnitVarStringValueKey<string>
  127. {
  128. [DescAttribute("变量值")]
  129. public StringValue Value = new StringValue.VALUE("text");
  130. override public AbstractValue<string> TValue { get { return Value; } }
  131. }
  132. [DescAttribute("设置整数型", "设置 - 单位变量(变量索引)")]
  133. public class SetUnitIntegerStringValueKey : SetUnitVarStringValueKey<Int32>
  134. {
  135. [DescAttribute("变量值")]
  136. public IntegerValue Value = new IntegerValue.VALUE();
  137. override public AbstractValue<Int32> TValue { get { return Value; } }
  138. }
  139. [DescAttribute("设置小数型", "设置 - 单位变量(变量索引)")]
  140. public class SetUnitRealStringValueKey : SetUnitVarStringValueKey<Single>
  141. {
  142. [DescAttribute("变量值")]
  143. public RealValue Value = new RealValue.VALUE();
  144. override public AbstractValue<Single> TValue { get { return Value; } }
  145. }
  146. [DescAttribute("设置布尔型", "设置 - 单位变量(变量索引)")]
  147. public class SetUnitBoolStringValueKey : SetUnitVarStringValueKey<Boolean>
  148. {
  149. [DescAttribute("变量值")]
  150. public BooleanValue Value = new BooleanValue.VALUE();
  151. override public AbstractValue<Boolean> TValue { get { return Value; } }
  152. }
  153. [DescAttribute("设置单位", "设置 - 单位变量(变量索引)")]
  154. public class SetUnitUnitStringValueKey : SetUnitVarStringValueKey<InstanceUnit>
  155. {
  156. [DescAttribute("变量值")]
  157. public UnitValue Value = new UnitValue.NA();
  158. override public AbstractValue<InstanceUnit> TValue { get { return Value; } }
  159. }
  160. [DescAttribute("设置Flag", "设置 - 单位变量(变量索引)")]
  161. public class SetUnitFlagStringValueKey : SetUnitVarStringValueKey<InstanceFlag>
  162. {
  163. [DescAttribute("变量值")]
  164. public FlagValue Value = new FlagValue.NA();
  165. override public AbstractValue<InstanceFlag> TValue { get { return Value; } }
  166. }
  167. [DescAttribute("设置物品", "设置 - 单位变量(变量索引)")]
  168. public class SetUnitItemStringValueKey : SetUnitVarStringValueKey<InstanceItem>
  169. {
  170. [DescAttribute("变量值")]
  171. public ItemValue Value = new ItemValue.NA();
  172. override public AbstractValue<InstanceItem> TValue { get { return Value; } }
  173. }
  174. [DescAttribute("设置位置坐标", "设置 - 单位变量(变量索引)")]
  175. public class SetUnitPositionStringValueKey : SetUnitVarStringValueKey<Vector2>
  176. {
  177. [DescAttribute("变量值")]
  178. public PositionValue Value = new PositionValue.VALUE();
  179. override public AbstractValue<Vector2> TValue { get { return Value; } }
  180. }
  181. #endregion
  182. //-------------------------------------------------------------------------------------------
  183. }