Quest.Values.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. using CommonAI.Zone.Attributes;
  2. using CommonAI.Zone.Instance;
  3. using CommonLang.Property;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using CommonAI.Zone.EventTrigger;
  9. using CommonAI.Zone.Helper;
  10. namespace CommonAI.Zone.ZoneEditor.EventTrigger
  11. {
  12. [DescAttribute("触发的任务ID", "任务")]
  13. public class TriggingQuestIdentify : StringValue
  14. {
  15. public override string ToString()
  16. {
  17. return string.Format("触发的任务");
  18. }
  19. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  20. {
  21. return args.TriggingQuestID;
  22. }
  23. }
  24. [DescAttribute("单位任务子状态查询", "任务")]
  25. public class GetQuestField : StringValue
  26. {
  27. [DescAttribute("单位")]
  28. public UnitValue Unit = new UnitValue.Trigging();
  29. [DescAttribute("任务ID")]
  30. public StringValue QuestID = new TriggingQuestIdentify();
  31. [DescAttribute("任务子状态字段")]
  32. public StringValue Key = new StringValue.VALUE("key");
  33. public override string ToString()
  34. {
  35. return string.Format("单位[{0}]任务[{1}]子状态[{2}]", Unit, QuestID, Key);
  36. }
  37. public override string GetValue(IEditorValueAdapter api, EventArguments args)
  38. {
  39. InstancePlayer p = Unit.GetValue(api, args) as InstancePlayer;
  40. if (p != null)
  41. {
  42. string quest_id = QuestID.GetValue(api, args);
  43. string key = Key.GetValue(api, args);
  44. if (!string.IsNullOrEmpty(quest_id) && !string.IsNullOrEmpty(key))
  45. {
  46. QuestData qd = p.GetQuest(quest_id);
  47. if (qd != null)
  48. {
  49. return qd.Attributes.Get(key);
  50. }
  51. }
  52. }
  53. return null;
  54. }
  55. }
  56. [DescAttribute("单位任务主状态判断", "任务")]
  57. public class GetQuestState : BooleanValue
  58. {
  59. [DescAttribute("单位")]
  60. public UnitValue Unit = new UnitValue.Trigging();
  61. [DescAttribute("任务ID")]
  62. public StringValue QuestID = new TriggingQuestIdentify();
  63. [DescAttribute("预期任务状态")]
  64. public QuestState ExpectState = QuestState.Accepted;
  65. public override string ToString()
  66. {
  67. return string.Format("单位[{0}]任务[{1}]状态是否为{2}", Unit, QuestID, ExpectState);
  68. }
  69. public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
  70. {
  71. InstancePlayer p = Unit.GetValue(api, args) as InstancePlayer;
  72. if (p != null)
  73. {
  74. string quest_id = QuestID.GetValue(api, args);
  75. if (!string.IsNullOrEmpty(quest_id))
  76. {
  77. QuestData qd = p.GetQuest(quest_id);
  78. if (qd != null)
  79. {
  80. return qd.State == ExpectState;
  81. }
  82. }
  83. }
  84. return false;
  85. }
  86. }
  87. [DescAttribute("任务是否已接受", "任务")]
  88. public class QuestAccepted : BooleanValue
  89. {
  90. [DescAttribute("单位 - 某个单位")]
  91. public UnitValue Unit = new UnitValue.Trigging();
  92. [QuestIDAttribute]
  93. [DescAttribute("任务ID")]
  94. public string Quest;
  95. public override string ToString()
  96. {
  97. return string.Format("任务[{0}]是否已接受", Quest);
  98. }
  99. public override bool GetValue(IEditorValueAdapter api, EventArguments args)
  100. {
  101. InstancePlayer p = Unit.GetValue(api, args) as InstancePlayer;
  102. if (p != null)
  103. {
  104. return p.IsQuestAccepted(Quest);
  105. }
  106. return false;
  107. }
  108. }
  109. [DescAttribute("任务是否已接受(变量)", "任务")]
  110. public class QuestAcceptedSV : BooleanValue
  111. {
  112. [DescAttribute("单位 - 某个单位")]
  113. public UnitValue Unit = new UnitValue.Trigging();
  114. [DescAttribute("任务ID")]
  115. public StringValue QuestID = new TriggingQuestIdentify();
  116. public override string ToString()
  117. {
  118. return string.Format("任务[{0}]是否已接受", QuestID);
  119. }
  120. public override bool GetValue(IEditorValueAdapter api, EventArguments args)
  121. {
  122. InstancePlayer p = Unit.GetValue(api, args) as InstancePlayer;
  123. string questID = QuestID.GetValue(api, args);
  124. if (p != null)
  125. {
  126. return p.IsQuestAccepted(questID);
  127. }
  128. return false;
  129. }
  130. }
  131. }