Values.String.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using CommonLang.Property;
  5. using CommonAI.Zone.Attributes;
  6. using CommonAI.Zone.ZoneEditor;
  7. using CommonLang.Formula;
  8. using CommonAI.Zone.Instance;
  9. using CommonAI.RTS; using CommonLang.Vector;
  10. using CommonLang;
  11. using CommonAI.Zone.EventTrigger;
  12. namespace CommonAI.Zone.ZoneEditor.EventTrigger
  13. {
  14. [DescAttribute("字符串")]
  15. public abstract class StringValue : AbstractValue<string>
  16. {
  17. [DescAttribute("空", "值")]
  18. public class NULL : StringValue
  19. {
  20. public NULL() { }
  21. public override string ToString()
  22. {
  23. return "NULL";
  24. }
  25. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  26. {
  27. return null;
  28. }
  29. }
  30. [DescAttribute("值", "值")]
  31. public class VALUE : StringValue
  32. {
  33. [LocalizationTextAttribute]
  34. [DescAttribute("值")]
  35. public string Value = "";
  36. public VALUE() { }
  37. public VALUE(string value) { this.Value = value; }
  38. public override string ToString()
  39. {
  40. return Value + "";
  41. }
  42. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  43. {
  44. return Value;
  45. }
  46. }
  47. //---------------------------------------------------------------------------------------------------------------------
  48. #region __游戏__
  49. [DescAttribute("场景用户自定义属性", "场景")]
  50. public class ZoneTextAttribute : StringValue
  51. {
  52. [DescAttribute("键值")]
  53. public string Key;
  54. public override string ToString()
  55. {
  56. return string.Format("场景键值[{0}]", Key);
  57. }
  58. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  59. {
  60. return api.ZoneAPI.GetAttribute(Key) as string;
  61. }
  62. }
  63. [DescAttribute("最后接收到的消息(从服务器)", "场景")]
  64. public class ZoneLastRecvMessage : StringValue
  65. {
  66. public override string ToString()
  67. {
  68. return string.Format("最后从服务器接收到的消息");
  69. }
  70. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  71. {
  72. if (api.ZoneAPI.LastRecvMessageR2B != null)
  73. {
  74. return api.ZoneAPI.LastRecvMessageR2B.Message;
  75. }
  76. return null;
  77. }
  78. }
  79. [DescAttribute("最后发送到的消息(到服务器)", "场景")]
  80. public class ZoneLastSentMessage : StringValue
  81. {
  82. public override string ToString()
  83. {
  84. return string.Format("最后发送到服务器的消息");
  85. }
  86. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  87. {
  88. if (api.ZoneAPI.LastSentMessageB2R != null)
  89. {
  90. return api.ZoneAPI.LastSentMessageB2R.Message;
  91. }
  92. return null;
  93. }
  94. }
  95. [DescAttribute("单位用户自定义属性", "单位")]
  96. public class UnitTextAttribute : StringValue
  97. {
  98. [DescAttribute("单位")]
  99. public UnitValue Unit = new UnitValue.Trigging();
  100. [DescAttribute("键值")]
  101. public string Key;
  102. public override string ToString()
  103. {
  104. return string.Format("单位({0})键值[{1}]", Unit, Key);
  105. }
  106. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  107. {
  108. InstanceUnit unit = Unit.GetValue(api, args);
  109. if (unit != null)
  110. {
  111. return unit.GetAttribute(Key) as string;
  112. }
  113. return null;
  114. }
  115. }
  116. [DescAttribute("单位名字", "单位")]
  117. public class UnitName : StringValue
  118. {
  119. [DescAttribute("单位")]
  120. public UnitValue Unit = new UnitValue.Trigging();
  121. public override string ToString()
  122. {
  123. return string.Format("单位({0})名字", Unit);
  124. }
  125. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  126. {
  127. InstanceUnit unit = Unit.GetValue(api, args);
  128. if (unit != null)
  129. {
  130. return unit.Name;
  131. }
  132. return null;
  133. }
  134. }
  135. [DescAttribute("物品名字", "物品")]
  136. public class ItemName : StringValue
  137. {
  138. [DescAttribute("物品")]
  139. public ItemValue Item = new ItemValue.NA();
  140. public override string ToString()
  141. {
  142. return string.Format("物品({0})名字", Item);
  143. }
  144. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  145. {
  146. InstanceItem item = Item.GetValue(api, args);
  147. if (item != null)
  148. {
  149. return item.Name;
  150. }
  151. return null;
  152. }
  153. }
  154. [DescAttribute("玩家UUID", "单位")]
  155. public class PlayerUUID : StringValue
  156. {
  157. [DescAttribute("玩家单位")]
  158. public UnitValue Unit = new UnitValue.Trigging();
  159. public override string ToString()
  160. {
  161. return string.Format("玩家单位({0})UUID", Unit);
  162. }
  163. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  164. {
  165. var unit = Unit.GetValue(api, args);
  166. InstancePlayer retUnit = null;
  167. if (unit is InstancePlayer)
  168. {
  169. retUnit = unit as InstancePlayer;
  170. }
  171. else if (unit is InstancePet)
  172. {
  173. retUnit = (unit as InstancePet).Master as InstancePlayer;
  174. }
  175. else if (unit is InstanceSummon)
  176. {
  177. retUnit = (unit as InstanceSummon).SummonerUnit as InstancePlayer;
  178. }
  179. if (retUnit != null)
  180. {
  181. return retUnit.PlayerUUID;
  182. }
  183. return null;
  184. }
  185. }
  186. [DescAttribute("单位模板ID", "单位")]
  187. public class UnitTemplateID : StringValue
  188. {
  189. [DescAttribute("单位")]
  190. public UnitValue Unit = new UnitValue.Trigging();
  191. public override string ToString()
  192. {
  193. return string.Format("单位({0})模板ID", Unit);
  194. }
  195. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  196. {
  197. InstanceUnit unit = Unit.GetValue(api, args);
  198. if (unit != null)
  199. {
  200. return unit.Info.TemplateID.ToString();
  201. }
  202. return null;
  203. }
  204. }
  205. #endregion
  206. //---------------------------------------------------------------------------------------------------------------------
  207. #region __转换__
  208. [DescAttribute("整形转换为字符串", "转换")]
  209. public class IntegerToString : StringValue
  210. {
  211. [DescAttribute("值")]
  212. public IntegerValue Value = new IntegerValue.VALUE(1);
  213. public override string ToString()
  214. {
  215. return string.Format("({0})转换为字符串", Value);
  216. }
  217. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  218. {
  219. int value = Value.GetValue(api, args);
  220. return value.ToString();
  221. }
  222. }
  223. [DescAttribute("小数转换为字符串", "转换")]
  224. public class RealToString : StringValue
  225. {
  226. [DescAttribute("值")]
  227. public RealValue Value = new RealValue.VALUE(1);
  228. public override string ToString()
  229. {
  230. return string.Format("({0})转换为字符串", Value);
  231. }
  232. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  233. {
  234. float value = Value.GetValue(api, args);
  235. return value.ToString();
  236. }
  237. }
  238. #endregion
  239. //---------------------------------------------------------------------------------------------------------------------
  240. #region __字符串方法__
  241. [DescAttribute("字符串拼接", "字符串方法")]
  242. public class StringConcat : StringValue
  243. {
  244. [DescAttribute("串0")]
  245. public StringValue str0 = new StringValue.VALUE();
  246. [DescAttribute("串1")]
  247. public StringValue str1 = new StringValue.VALUE();
  248. [DescAttribute("串2")]
  249. public StringValue str2 = new StringValue.VALUE();
  250. [DescAttribute("串3")]
  251. public StringValue str3 = new StringValue.VALUE();
  252. public override string ToString()
  253. {
  254. return string.Format("{0}{1}{2}{3}", str0, str1, str2, str3);
  255. }
  256. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  257. {
  258. string[] array = new string[]
  259. {
  260. str0.GetValue(api, args),
  261. str1.GetValue(api, args),
  262. str2.GetValue(api, args),
  263. str3.GetValue(api, args),
  264. };
  265. StringBuilder sb = new StringBuilder();
  266. foreach (string c in array)
  267. {
  268. if (c != null)
  269. sb.Append(c);
  270. }
  271. return sb.ToString();
  272. }
  273. }
  274. [DescAttribute("字符串拼接(组)", "字符串方法")]
  275. public class StringConcatArray : StringValue
  276. {
  277. [DescAttribute("串0")]
  278. [ListAttribute(typeof(StringValue))]
  279. public List<StringValue> array = new List<StringValue>();
  280. public override string ToString()
  281. {
  282. StringBuilder sb = new StringBuilder();
  283. foreach (StringValue sv in array)
  284. {
  285. sb.Append(sv.ToString());
  286. }
  287. return sb.ToString();
  288. }
  289. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  290. {
  291. StringBuilder sb = new StringBuilder();
  292. foreach (StringValue sv in array)
  293. {
  294. string c = sv.GetValue(api, args);
  295. if (c != null)
  296. sb.Append(c);
  297. }
  298. return sb.ToString();
  299. }
  300. }
  301. [DescAttribute("字符串格式化", "字符串方法")]
  302. public class StringFormat4 : StringValue
  303. {
  304. [DescAttribute("格式化文本(最多4个参数)")]
  305. [LocalizationTextAttribute]
  306. public string FormatString = "{0}{1}{2}{3}";
  307. [DescAttribute("串0")]
  308. public StringValue str0 = new StringValue.VALUE();
  309. [DescAttribute("串1")]
  310. public StringValue str1 = new StringValue.VALUE();
  311. [DescAttribute("串2")]
  312. public StringValue str2 = new StringValue.VALUE();
  313. [DescAttribute("串3")]
  314. public StringValue str3 = new StringValue.VALUE();
  315. public override string ToString()
  316. {
  317. return string.Format(FormatString, str0, str1, str2, str3);
  318. }
  319. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  320. {
  321. return string.Format(FormatString,
  322. str0.GetValue(api, args),
  323. str1.GetValue(api, args),
  324. str2.GetValue(api, args),
  325. str3.GetValue(api, args));
  326. }
  327. }
  328. [DescAttribute("字符串格式化(组)", "字符串方法")]
  329. public class StringFormatArray : StringValue
  330. {
  331. [DescAttribute("格式化文本")]
  332. [LocalizationTextAttribute]
  333. public string FormatString = "{0}";
  334. [DescAttribute("参数")]
  335. [ListAttribute(typeof(StringValue))]
  336. public List<StringValue> array = new List<StringValue>();
  337. public override string ToString()
  338. {
  339. return string.Format(FormatString, array.ToArray());
  340. }
  341. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  342. {
  343. object[] param = new object[array.Count];
  344. for (int i = 0; i < param.Length;i++ )
  345. {
  346. string c = array[i].GetValue(api, args);
  347. param[i] = c;
  348. }
  349. return string.Format(FormatString, param);
  350. }
  351. }
  352. #endregion
  353. //---------------------------------------------------------------------------------------------------------------------
  354. }
  355. }