Values.Templates.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using CommonLang.Property;
  6. using CommonAI.Zone.Attributes;
  7. using CommonLang.Formula;
  8. using CommonAI.Zone.EventTrigger;
  9. using CommonAI.Zone.Instance;
  10. namespace CommonAI.Zone.ZoneEditor.EventTrigger
  11. {
  12. //-----------------------------------------------------------------------------
  13. #region __BUFF模板__
  14. [DescAttribute("BUFF模板")]
  15. public abstract class BuffTemplateValue : AbstractValue<BuffTemplate>
  16. {
  17. [DescAttribute("BUFF模板", "编辑器")]
  18. public class Template : BuffTemplateValue
  19. {
  20. [DescAttribute("BUFF模板ID")]
  21. [TemplateIDAttribute(typeof(BuffTemplate))]
  22. public int BuffTemplateID;
  23. public override string ToString()
  24. {
  25. return string.Format("BUFF模板:{0}", BuffTemplateID);
  26. }
  27. public override BuffTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  28. {
  29. return api.Templates.getBuff(BuffTemplateID);
  30. }
  31. }
  32. [DescAttribute("触发的BUFF", "功能")]
  33. public class Trigging : BuffTemplateValue
  34. {
  35. public override string ToString()
  36. {
  37. return string.Format("触发的BUFF");
  38. }
  39. public override BuffTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  40. {
  41. return args.TriggingBuffTemplate;
  42. }
  43. }
  44. }
  45. [DescAttribute("BUFF模板", "比较")]
  46. public class BuffTemplateComparison : BooleanValue
  47. {
  48. [DescAttribute("物品1")]
  49. public BuffTemplateValue Value1 = new BuffTemplateValue.Trigging();
  50. [DescAttribute("比较符")]
  51. public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
  52. [DescAttribute("物品2")]
  53. public BuffTemplateValue Value2 = new BuffTemplateValue.Trigging();
  54. public override string ToString()
  55. {
  56. return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
  57. }
  58. public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
  59. {
  60. BuffTemplate c1 = Value1.GetValue(api, args);
  61. BuffTemplate c2 = Value2.GetValue(api, args);
  62. if (c1 == c2)
  63. {
  64. return true;
  65. }
  66. if (c1 != null && c2 != null)
  67. {
  68. return FormulaHelper.Compare(c1.ID, Op, c2.ID);
  69. }
  70. return FormulaHelper.Compare(c1, Op, c2);
  71. }
  72. }
  73. [DescAttribute("BUFF编辑器模板", "模板ID")]
  74. public class BuffTemplateID : IntegerValue
  75. {
  76. [DescAttribute("模板ID")]
  77. [TemplateIDAttribute(typeof(BuffTemplate))]
  78. public int ID;
  79. public override string ToString()
  80. {
  81. return string.Format("BUFF模板:{0}", ID);
  82. }
  83. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  84. {
  85. return ID;
  86. }
  87. }
  88. [DescAttribute("BUFF模板", "模板ID")]
  89. public class ValueBuffTemplateID : IntegerValue
  90. {
  91. [DescAttribute("BUFF")]
  92. public BuffTemplateValue Buff = new BuffTemplateValue.Trigging();
  93. public override string ToString()
  94. {
  95. return string.Format("BUFF({0})", Buff);
  96. }
  97. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  98. {
  99. BuffTemplate buff = Buff.GetValue(api, args);
  100. if (buff != null)
  101. {
  102. return buff.ID;
  103. }
  104. return 0;
  105. }
  106. }
  107. #endregion
  108. //-----------------------------------------------------------------------------
  109. //-----------------------------------------------------------------------------
  110. #region __物品模板__
  111. [DescAttribute("物品模板")]
  112. public abstract class ItemTemplateValue : AbstractValue<ItemTemplate>
  113. {
  114. [DescAttribute("物品模板", "编辑器")]
  115. public class Template : ItemTemplateValue
  116. {
  117. [DescAttribute("物品模板ID")]
  118. [TemplateIDAttribute(typeof(ItemTemplate))]
  119. public int ItemTemplateID;
  120. public override string ToString()
  121. {
  122. return string.Format("物品模板:{0}", ItemTemplateID);
  123. }
  124. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  125. {
  126. return api.Templates.getItem(ItemTemplateID);
  127. }
  128. }
  129. [DescAttribute("物品实体模板", "编辑器")]
  130. public class Instance : ItemTemplateValue
  131. {
  132. [DescAttribute("物品实体")]
  133. public ItemValue Item = new ItemValue.NA();
  134. public override string ToString()
  135. {
  136. return string.Format("物品实体模板:{0}", Item);
  137. }
  138. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  139. {
  140. InstanceItem item = Item.GetValue(api, args);
  141. if (item != null)
  142. {
  143. return item.Info;
  144. }
  145. return null;
  146. }
  147. }
  148. [DescAttribute("触发的物品模板", "功能")]
  149. public class Trigging : ItemTemplateValue
  150. {
  151. public override string ToString()
  152. {
  153. return string.Format("触发的物品模板");
  154. }
  155. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  156. {
  157. return args.TriggingItemTemplate;
  158. }
  159. }
  160. [DescAttribute("最后创建的物品模板", "功能")]
  161. public class LastCreatedItem : ItemTemplateValue
  162. {
  163. public override string ToString()
  164. {
  165. return string.Format("最后创建的物品模板");
  166. }
  167. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  168. {
  169. if (api.ZoneAPI.LastCreatedInstanceItem != null)
  170. {
  171. return api.ZoneAPI.LastCreatedInstanceItem.Info;
  172. }
  173. return null;
  174. }
  175. }
  176. [DescAttribute("最后使用的物品模板", "功能")]
  177. public class LastUsedItem : ItemTemplateValue
  178. {
  179. public override string ToString()
  180. {
  181. return string.Format("最后使用的物品模板");
  182. }
  183. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  184. {
  185. return api.ZoneAPI.LastUnitUseItem;
  186. }
  187. }
  188. [DescAttribute("单位最后进入背包的物品模板", "功能")]
  189. public class LastGotInventoryItem : ItemTemplateValue
  190. {
  191. public override string ToString()
  192. {
  193. return string.Format("单位最后进入背包的物品模板");
  194. }
  195. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  196. {
  197. return api.ZoneAPI.LastUnitGotInventoryItem;
  198. }
  199. }
  200. [DescAttribute("单位最后从场景检取物品模板", "功能")]
  201. public class LastGotInstanceItem : ItemTemplateValue
  202. {
  203. public override string ToString()
  204. {
  205. return string.Format("单位最后从场景检取物品模板");
  206. }
  207. public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  208. {
  209. if (api.ZoneAPI.LastUnitGotInstanceItem != null)
  210. {
  211. return api.ZoneAPI.LastUnitGotInstanceItem.Info;
  212. }
  213. return null;
  214. }
  215. }
  216. }
  217. [DescAttribute("物品模板", "比较")]
  218. public class ItemTemplateComparison : BooleanValue
  219. {
  220. [DescAttribute("物品1")]
  221. public ItemTemplateValue Value1 = new ItemTemplateValue.Trigging();
  222. [DescAttribute("比较符")]
  223. public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
  224. [DescAttribute("物品2")]
  225. public ItemTemplateValue Value2 = new ItemTemplateValue.Trigging();
  226. public override string ToString()
  227. {
  228. return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
  229. }
  230. public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
  231. {
  232. ItemTemplate c1 = Value1.GetValue(api, args);
  233. ItemTemplate c2 = Value2.GetValue(api, args);
  234. if (c1 == c2)
  235. {
  236. return true;
  237. }
  238. if (c1 != null && c2 != null)
  239. {
  240. return FormulaHelper.Compare(c1.ID, Op, c2.ID);
  241. }
  242. return FormulaHelper.Compare(c1, Op, c2);
  243. }
  244. }
  245. [DescAttribute("物品编辑器模板", "模板ID")]
  246. public class ItemTemplateID : IntegerValue
  247. {
  248. [DescAttribute("模板ID")]
  249. [TemplateIDAttribute(typeof(ItemTemplate))]
  250. public int ID;
  251. public override string ToString()
  252. {
  253. return string.Format("物品模板:{0}", ID);
  254. }
  255. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  256. {
  257. return ID;
  258. }
  259. }
  260. [DescAttribute("物品模板", "模板ID")]
  261. public class ValueItemTemplateID : IntegerValue
  262. {
  263. [DescAttribute("物品")]
  264. public ItemTemplateValue Item = new ItemTemplateValue.Trigging();
  265. public override string ToString()
  266. {
  267. return string.Format("物品({0})", Item);
  268. }
  269. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  270. {
  271. ItemTemplate item = Item.GetValue(api, args);
  272. if (item != null)
  273. {
  274. return item.ID;
  275. }
  276. return 0;
  277. }
  278. }
  279. [DescAttribute("物品单位模板", "模板ID")]
  280. public class InstanceItemTemplateID : IntegerValue
  281. {
  282. [DescAttribute("物品")]
  283. public ItemValue Item = new ItemValue.Trigging();
  284. public override string ToString()
  285. {
  286. return string.Format("物品单位({0})", Item);
  287. }
  288. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  289. {
  290. InstanceItem item = Item.GetValue(api, args);
  291. if (item != null)
  292. {
  293. return item.Info.ID;
  294. }
  295. return 0;
  296. }
  297. }
  298. #endregion
  299. //-----------------------------------------------------------------------------
  300. #region __技能模板__
  301. [DescAttribute("技能模板")]
  302. public abstract class SkillTemplateValue : AbstractValue<SkillTemplate>
  303. {
  304. [DescAttribute("技能模板", "编辑器")]
  305. public class Template : SkillTemplateValue
  306. {
  307. [DescAttribute("技能模板ID")]
  308. [TemplateIDAttribute(typeof(SkillTemplate))]
  309. public int SkillTemplateID;
  310. public override string ToString()
  311. {
  312. return string.Format("技能模板:{0}", SkillTemplateID);
  313. }
  314. public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  315. {
  316. return api.Templates.getSkill(SkillTemplateID);
  317. }
  318. }
  319. [DescAttribute("触发的技能", "功能")]
  320. public class Trigging : SkillTemplateValue
  321. {
  322. public override string ToString()
  323. {
  324. return string.Format("触发的技能");
  325. }
  326. public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  327. {
  328. return args.TriggingSkillTemplate ;
  329. }
  330. }
  331. [DescAttribute("最后释放的技能", "功能")]
  332. public class LastLaunchSkill : SkillTemplateValue
  333. {
  334. public override string ToString()
  335. {
  336. return string.Format("最后释放的技能");
  337. }
  338. public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  339. {
  340. return api.ZoneAPI.LastLaunchSkill;
  341. }
  342. }
  343. }
  344. [DescAttribute("技能模板", "比较")]
  345. public class SkillTemplateComparison : BooleanValue
  346. {
  347. [DescAttribute("技能1")]
  348. public SkillTemplateValue Value1 = new SkillTemplateValue.Trigging();
  349. [DescAttribute("比较符")]
  350. public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
  351. [DescAttribute("技能2")]
  352. public SkillTemplateValue Value2 = new SkillTemplateValue.Trigging();
  353. public override string ToString()
  354. {
  355. return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
  356. }
  357. public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
  358. {
  359. SkillTemplate c1 = Value1.GetValue(api, args);
  360. SkillTemplate c2 = Value2.GetValue(api, args);
  361. if (c1 == c2)
  362. {
  363. return true;
  364. }
  365. if (c1 != null && c2 != null)
  366. {
  367. return FormulaHelper.Compare(c1.ID, Op, c2.ID);
  368. }
  369. return FormulaHelper.Compare(c1, Op, c2);
  370. }
  371. }
  372. [DescAttribute("技能编辑器模板", "模板ID")]
  373. public class SkillTemplateID : IntegerValue
  374. {
  375. [DescAttribute("模板ID")]
  376. [TemplateIDAttribute(typeof(SkillTemplate))]
  377. public int ID;
  378. public override string ToString()
  379. {
  380. return string.Format("技能模板:{0}", ID);
  381. }
  382. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  383. {
  384. return ID;
  385. }
  386. }
  387. [DescAttribute("技能模板", "模板ID")]
  388. public class ValueSkillTemplateID : IntegerValue
  389. {
  390. [DescAttribute("技能")]
  391. public SkillTemplateValue Skill = new SkillTemplateValue.Trigging();
  392. public override string ToString()
  393. {
  394. return string.Format("技能({0})", Skill);
  395. }
  396. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  397. {
  398. SkillTemplate skill = Skill.GetValue(api, args);
  399. if (skill != null)
  400. {
  401. return skill.ID;
  402. }
  403. return 0;
  404. }
  405. }
  406. #endregion
  407. //-----------------------------------------------------------------------------
  408. #region __法术模板__
  409. [DescAttribute("法术模板")]
  410. public abstract class SpellTemplateValue : AbstractValue<SpellTemplate>
  411. {
  412. [DescAttribute("法术模板", "编辑器")]
  413. public class Template : SpellTemplateValue
  414. {
  415. [DescAttribute("法术模板ID")]
  416. [TemplateIDAttribute(typeof(SpellTemplate))]
  417. public int SpellTemplateID;
  418. public override string ToString()
  419. {
  420. return string.Format("法术模板:{0}", SpellTemplateID);
  421. }
  422. public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  423. {
  424. return api.Templates.getSpell(SpellTemplateID);
  425. }
  426. }
  427. [DescAttribute("触发的法术", "功能")]
  428. public class Trigging : SpellTemplateValue
  429. {
  430. public override string ToString()
  431. {
  432. return string.Format("触发的Spell");
  433. }
  434. public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  435. {
  436. return args.TriggingSpellTemplate;
  437. }
  438. }
  439. [DescAttribute("最后释放的法术", "功能")]
  440. public class LastLaunchSpell : SpellTemplateValue
  441. {
  442. public override string ToString()
  443. {
  444. return string.Format("最后释放的法术");
  445. }
  446. public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args)
  447. {
  448. return api.ZoneAPI.LastLaunchSpell;
  449. }
  450. }
  451. }
  452. [DescAttribute("法术模板", "比较")]
  453. public class SpellTemplateComparison : BooleanValue
  454. {
  455. [DescAttribute("法术1")]
  456. public SpellTemplateValue Value1 = new SpellTemplateValue.Trigging();
  457. [DescAttribute("比较符")]
  458. public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
  459. [DescAttribute("法术2")]
  460. public SpellTemplateValue Value2 = new SpellTemplateValue.Trigging();
  461. public override string ToString()
  462. {
  463. return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
  464. }
  465. public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
  466. {
  467. SpellTemplate c1 = Value1.GetValue(api, args);
  468. SpellTemplate c2 = Value2.GetValue(api, args);
  469. if (c1 == c2)
  470. {
  471. return true;
  472. }
  473. if (c1 != null && c2 != null)
  474. {
  475. return FormulaHelper.Compare(c1.ID, Op, c2.ID);
  476. }
  477. return FormulaHelper.Compare(c1, Op, c2);
  478. }
  479. }
  480. [DescAttribute("法术编辑器模板", "模板ID")]
  481. public class SpellTemplateID : IntegerValue
  482. {
  483. [DescAttribute("模板ID")]
  484. [TemplateIDAttribute(typeof(SpellTemplate))]
  485. public int ID;
  486. public override string ToString()
  487. {
  488. return string.Format("法术模板:{0}", ID);
  489. }
  490. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  491. {
  492. return ID;
  493. }
  494. }
  495. [DescAttribute("法术模板", "模板ID")]
  496. public class ValueSpellTemplateID : IntegerValue
  497. {
  498. [DescAttribute("法术")]
  499. public SpellTemplateValue Spell = new SpellTemplateValue.Trigging();
  500. public override string ToString()
  501. {
  502. return string.Format("法术({0})", Spell);
  503. }
  504. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  505. {
  506. SpellTemplate spell = Spell.GetValue(api, args);
  507. if (spell != null)
  508. {
  509. return spell.ID;
  510. }
  511. return 0;
  512. }
  513. }
  514. #endregion
  515. //-----------------------------------------------------------------------------
  516. #region __单位模板__
  517. [DescAttribute("单位模板", "模板ID")]
  518. public class UnitTemplateID : IntegerValue
  519. {
  520. [DescAttribute("模板ID")]
  521. [TemplateIDAttribute(typeof(UnitInfo))]
  522. public int ID;
  523. public override string ToString()
  524. {
  525. return string.Format("单位模板:{0}", ID);
  526. }
  527. public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
  528. {
  529. return ID;
  530. }
  531. }
  532. #endregion
  533. }