InstanceZone.Events.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. using CommonAI.RTS;
  2. using CommonLang.Vector;
  3. using CommonAI.Zone.Attributes;
  4. using CommonAI.Zone.Formula;
  5. namespace CommonAI.Zone.Instance
  6. {
  7. partial class InstanceZone
  8. {
  9. public delegate void InitHandler(InstanceZone zone);
  10. public delegate void PostEventHandler(InstanceZone zone, Event e);
  11. public delegate void SendMessageB2RHandler(InstanceZone zone, CommonAI.ZoneServer.SendMessageB2R e);
  12. public delegate void RecvMessageR2BHandler(InstanceZone zone, CommonAI.ZoneServer.SendMessageR2B e);
  13. public delegate void SendEventB2RHandler(InstanceZone zone, CommonAI.ZoneServer.SendEventB2R e);
  14. public delegate void ObjectPosChangedHandler(InstanceZone zone, InstanceZoneObject o);
  15. public delegate void ObjectSpaceChangedHandler(InstanceZone zone, InstanceZoneObject o, SpaceDivision.SpaceCellNode old_node, SpaceDivision.SpaceCellNode new_node);
  16. public delegate void ObjectAreaChangedHandler(InstanceZone zone, InstanceZoneObject o, ZoneArea old_node, ZoneArea new_node);
  17. public delegate void GameOverHandler(InstanceZone zone, GameOverEvent evt);
  18. public delegate void OnHandleObjectActionHandler(InstanceZoneObject obj, ObjectAction act);
  19. public delegate void OnHandleActionHandler(InstanceZone zone, Action act);
  20. public delegate bool OnHandleTryAddUnit(UnitInfo info);
  21. public delegate bool OnHandleTryAddItem(ItemTemplate info);
  22. /// <summary>
  23. /// 场景更新触发
  24. /// </summary>
  25. /// <param name="zone"></param>
  26. public delegate void UpdateHandler(InstanceZone zone);
  27. /// <summary>
  28. /// 当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。
  29. /// </summary>
  30. /// <param name="zone"></param>
  31. /// <param name="obj"></param>
  32. public delegate void UnitActivatedHandler(InstanceZone zone, InstanceUnit obj);
  33. /// <summary>
  34. /// 单位进入触发
  35. /// </summary>
  36. /// <param name="zone"></param>
  37. /// <param name="obj"></param>
  38. public delegate void UnitAddedHandler(InstanceZone zone, InstanceUnit obj);
  39. /// <summary>
  40. /// 单位移除触发
  41. /// </summary>
  42. /// <param name="zone"></param>
  43. /// <param name="obj"></param>
  44. public delegate void UnitRemovedHandler(InstanceZone zone, InstanceUnit obj);
  45. /// <summary>
  46. /// 物品移除触发
  47. /// </summary>
  48. /// <param name="zone"></param>
  49. /// <param name="obj"></param>
  50. public delegate void ItemRemovedHandler(InstanceZone zone, InstanceItem obj);
  51. /// <summary>
  52. /// 单位开始放技能
  53. /// </summary>
  54. /// <param name="zone"></param>
  55. /// <param name="u"></param>
  56. /// <param name="skill"></param>
  57. public delegate void UnitLaunchSkillHandler(InstanceZone zone, InstanceUnit u, InstanceUnit.SkillState skill);
  58. /// <summary>
  59. /// 单位死亡触发
  60. /// </summary>
  61. /// <param name="zone"></param>
  62. /// <param name="obj"></param>
  63. /// <param name="attacker"></param>
  64. public delegate void UnitDeadHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker);
  65. /// <summary>
  66. /// 单位受到攻击触发
  67. /// </summary>
  68. /// <param name="zone"></param>
  69. /// <param name="obj"></param>
  70. /// <param name="attacker"></param>
  71. public delegate void UnitDamageHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker, int reduceHP, AttackSource source);
  72. /// <summary>
  73. /// 单位复活触发
  74. /// </summary>
  75. /// <param name="zone"></param>
  76. /// <param name="obj"></param>
  77. public delegate void UnitRebirthHandler(InstanceZone zone, InstanceUnit obj);
  78. /// <summary>
  79. /// 单位获取场景物品
  80. /// </summary>
  81. /// <param name="zone"></param>
  82. /// <param name="unit"></param>
  83. /// <param name="item"></param>
  84. public delegate void UnitGotInstanceItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
  85. /// <summary>
  86. /// 单位获取物品进背包
  87. /// </summary>
  88. /// <param name="zone"></param>
  89. /// <param name="unit"></param>
  90. /// <param name="item"></param>
  91. /// <param name="count"></param>
  92. public delegate void UnitGotInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count);
  93. /// <summary>
  94. /// 单位丢失物品
  95. /// </summary>
  96. /// <param name="zone"></param>
  97. /// <param name="unit"></param>
  98. /// <param name="item"></param>
  99. /// <param name="count"></param>
  100. public delegate void UnitLostInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count);
  101. /// <summary>
  102. /// 单位获取物品
  103. /// </summary>
  104. /// <param name="zone"></param>
  105. /// <param name="unit"></param>
  106. /// <param name="item"></param>
  107. /// <param name="item_creater"></param>
  108. public delegate void UnitUseItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, InstanceUnit item_creater);
  109. /// <summary>
  110. /// 单位中BUFF
  111. /// </summary>
  112. /// <param name="zone"></param>
  113. /// <param name="unit"></param>
  114. /// <param name="buff"></param>
  115. public delegate void UnitGotBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff);
  116. /// <summary>
  117. /// 单位失去BUFF
  118. /// </summary>
  119. /// <param name="zone"></param>
  120. /// <param name="unit"></param>
  121. /// <param name="buff"></param>
  122. public delegate void UnitLostBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff);
  123. /// <summary>
  124. /// 单位获取金币
  125. /// </summary>
  126. /// <param name="obj"></param>
  127. /// <param name="add_money"></param>
  128. public delegate void UnitGotMoneyHandler(InstanceUnit obj, int add_money);
  129. /// <summary>
  130. /// 单位和其他单位产生交互
  131. /// </summary>
  132. /// <param name="zone"></param>
  133. /// <param name="obj"></param>
  134. /// <param name="pickable"></param>
  135. public delegate void UnitPickUnitHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit pickable);
  136. /// <summary>
  137. /// 单位脱战
  138. /// </summary>
  139. /// <param name="zone"></param>
  140. /// <param name="obj"></param>
  141. /// <param name="pickable"></param>
  142. public delegate void UnitOutBattleHandler(InstanceZone zone, InstanceUnit obj);
  143. /// <summary>
  144. /// 单位尝试检取道具监听,
  145. /// 返回False禁止检取
  146. /// </summary>
  147. /// <param name="zone"></param>
  148. /// <param name="unit"></param>
  149. /// <param name="item"></param>
  150. /// <returns></returns>
  151. public delegate bool TryPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
  152. /// <summary>
  153. /// 单位完成采集道具
  154. /// </summary>
  155. /// <param name="zone"></param>
  156. /// <param name="unit"></param>
  157. /// <param name="item"></param>
  158. /// <returns></returns>
  159. public delegate bool FinishPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
  160. /// <summary>
  161. /// 添加物品到场景
  162. /// </summary>
  163. /// <param name="zone"></param>
  164. /// <param name="item"></param>
  165. /// <param name="item_creater"></param>
  166. public delegate void ItemAddedHandler(InstanceZone zone, InstanceItem item, InstanceUnit item_creater);
  167. //----------------------------------------------------------------------------------------------------
  168. /// <summary>
  169. /// 玩家准备完毕
  170. /// </summary>
  171. /// <param name="player"></param>
  172. public delegate void PlayerReadyHandler(InstancePlayer player);
  173. /// <summary>
  174. /// 【服务端】任务已接受
  175. /// </summary>
  176. /// <param name="player"></param>
  177. /// <param name="quest"></param>
  178. public delegate void QuestAcceptedHandler(InstancePlayer player, string quest);
  179. /// <summary>
  180. /// 【服务端】任务已提交
  181. /// </summary>
  182. /// <param name="player"></param>
  183. /// <param name="quest"></param>
  184. public delegate void QuestCommittedHandler(InstancePlayer player, string quest);
  185. /// <summary>
  186. /// 【服务端】任务已放弃
  187. /// </summary>
  188. /// <param name="player"></param>
  189. /// <param name="quest"></param>
  190. public delegate void QuestDroppedHandler(InstancePlayer player, string quest);
  191. /// <summary>
  192. /// 【服务端】任务状态已更新
  193. /// </summary>
  194. /// <param name="player"></param>
  195. /// <param name="quest"></param>
  196. /// <param name="key"></param>
  197. /// <param name="value"></param>
  198. public delegate void QuestStatusChangedHandler(InstancePlayer player, string quest, string key, string value);
  199. //----------------------------------------------------------------------------------------------------
  200. private UpdateHandler mOnUpdate;
  201. private InitHandler mOnInit;
  202. private ObjectPosChangedHandler mOnObjectPosChanged;
  203. private ObjectSpaceChangedHandler mOnObjectSpaceChanged;
  204. private ObjectAreaChangedHandler mOnObjectAreaChanged;
  205. private PostEventHandler mOnPostEvent;
  206. private SendMessageB2RHandler mOnSendToGS;
  207. private RecvMessageR2BHandler mOnRecvFromGS;
  208. private SendEventB2RHandler mOnSendMessageB2REvent;
  209. private UnitActivatedHandler mOnUnitActivated;
  210. private UnitAddedHandler mOnUnitAdded;
  211. private UnitRemovedHandler mOnUnitRemoved;
  212. private ItemRemovedHandler mOnItemRemoved;
  213. private UnitLaunchSkillHandler mOnUnitLaunchSkill;
  214. private UnitDeadHandler mOnUnitDead;
  215. private UnitDamageHandler mOnUnitDamage;
  216. private UnitRebirthHandler mOnUnitRebirth;
  217. private UnitGotInstanceItemHandler mOnUnitGotInstanceItem;
  218. private UnitGotInventoryItemHandler mOnUnitGotInventoryItem;
  219. private UnitLostInventoryItemHandler mOnUnitLostInventoryItem;
  220. private UnitUseItemHandler mOnUnitUseItem;
  221. private UnitGotBuffHandler mOnUnitGotBuff;
  222. private UnitLostBuffHandler mOnUnitLostBuff;
  223. private UnitGotMoneyHandler mOnUnitGotMoney;
  224. private UnitPickUnitHandler mOnUnitPickUnit;
  225. private UnitOutBattleHandler mOnUnitOutBattle;
  226. private GameOverHandler mOnGameOver;
  227. private OnHandleObjectActionHandler mOnHandleObjectAction;
  228. private OnHandleActionHandler mOnHandleAction;
  229. //是否可以加入单位
  230. private OnHandleTryAddUnit mTryAddUnit;
  231. private OnHandleTryAddItem mTryAddItem;
  232. private TryPickItemHandler mTryPickItem;
  233. private FinishPickItemHandler mFinishPickItem;
  234. private ItemAddedHandler mItemAdded;
  235. private PlayerReadyHandler mPlayerReady;
  236. private QuestAcceptedHandler mOnQuestAccepted;
  237. private QuestCommittedHandler mOnQuestCommitted;
  238. private QuestDroppedHandler mOnQuestDropped;
  239. private QuestStatusChangedHandler mOnQuestStatusChanged;
  240. protected virtual void ClearEvents()
  241. {
  242. this.mOnUpdate = null;
  243. this.mOnInit = null;
  244. this.mOnObjectPosChanged = null;
  245. this.mOnObjectSpaceChanged = null;
  246. this.mOnObjectAreaChanged = null;
  247. this.mOnPostEvent = null;
  248. this.mOnSendToGS = null;
  249. this.mOnRecvFromGS = null;
  250. this.mOnSendMessageB2REvent = null;
  251. this.mOnUnitActivated = null;
  252. this.mOnUnitAdded = null;
  253. this.mOnUnitRemoved = null;
  254. this.mOnItemRemoved = null;
  255. this.mOnUnitDead = null;
  256. this.mOnUnitDamage = null;
  257. this.mOnUnitRebirth = null;
  258. this.mOnUnitGotInstanceItem = null;
  259. this.mOnUnitGotInventoryItem = null;
  260. this.mOnUnitLostInventoryItem = null;
  261. this.mOnUnitUseItem = null;
  262. this.mOnUnitGotBuff = null;
  263. this.mOnUnitLostBuff = null;
  264. this.mOnUnitGotMoney = null;
  265. this.mOnUnitPickUnit = null;
  266. this.mOnGameOver = null;
  267. this.mOnHandleObjectAction = null;
  268. this.mOnHandleAction = null;
  269. this.mTryPickItem = null;
  270. this.mFinishPickItem = null;
  271. this.mItemAdded = null;
  272. this.mPlayerReady = null;
  273. this.mOnQuestAccepted = null;
  274. this.mOnQuestCommitted = null;
  275. this.mOnQuestDropped = null;
  276. this.mOnQuestStatusChanged = null;
  277. }
  278. //----------------------------------------------------------------------------------------------------
  279. public event UpdateHandler OnUpdate { add { mOnUpdate += value; } remove { mOnUpdate -= value; } }
  280. [EventTriggerDescAttribute("场景初始化时触发")]
  281. public event InitHandler OnInit { add { mOnInit += value; } remove { mOnInit -= value; } }
  282. [EventTriggerDescAttribute("单位位置发生变化时触发")]
  283. public event ObjectPosChangedHandler OnObjectPosChanged { add { mOnObjectPosChanged += value; } remove { mOnObjectPosChanged -= value; } }
  284. [EventTriggerDescAttribute("单位空间分割发生变化时触发")]
  285. public event ObjectSpaceChangedHandler OnObjectSpaceChanged { add { mOnObjectSpaceChanged += value; } remove { mOnObjectSpaceChanged -= value; } }
  286. [EventTriggerDescAttribute("单位Area发生变化时触发")]
  287. public event ObjectAreaChangedHandler OnObjectAreaChanged { add { mOnObjectAreaChanged += value; } remove { mOnObjectAreaChanged -= value; } }
  288. [EventTriggerDescAttribute("场景推送消息时触发")]
  289. public event PostEventHandler OnPostEvent { add { mOnPostEvent += value; } remove { mOnPostEvent -= value; } }
  290. [EventTriggerDescAttribute("【战斗服->游戏服】已发送字符串消息")]
  291. public event SendMessageB2RHandler OnSendMessageToGS { add { mOnSendToGS += value; } remove { mOnSendToGS -= value; } }
  292. [EventTriggerDescAttribute("【游戏服->战斗服】已接收字符串消息")]
  293. public event RecvMessageR2BHandler OnRecvMessageFromGS { add { mOnRecvFromGS += value; } remove { mOnRecvFromGS -= value; } }
  294. [EventTriggerDescAttribute("【战斗服->游戏服】发送自定义事件")]
  295. public event SendEventB2RHandler OnSendEventB2R { add { mOnSendMessageB2REvent += value; } remove { mOnSendMessageB2REvent -= value; } }
  296. [EventTriggerDescAttribute("当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。")]
  297. public event UnitActivatedHandler OnUnitActivated { add { mOnUnitActivated += value; } remove { mOnUnitActivated -= value; } }
  298. [EventTriggerDescAttribute("单位进入触发")]
  299. public event UnitAddedHandler OnUnitAdded { add { mOnUnitAdded += value; } remove { mOnUnitAdded -= value; } }
  300. [EventTriggerDescAttribute("单位移除触发")]
  301. public event UnitRemovedHandler OnUnitRemoved { add { mOnUnitRemoved += value; } remove { mOnUnitRemoved -= value; } }
  302. [EventTriggerDescAttribute("物品移除触发")]
  303. public event ItemRemovedHandler OnItemRemoved { add { mOnItemRemoved += value; } remove { mOnItemRemoved -= value; } }
  304. [EventTriggerDescAttribute("单位死亡触发")]
  305. public event UnitDeadHandler OnUnitDead { add { mOnUnitDead += value; } remove { mOnUnitDead -= value; } }
  306. [EventTriggerDescAttribute("单位受到攻击触发")]
  307. public event UnitDamageHandler OnUnitDamage { add { mOnUnitDamage += value; } remove { mOnUnitDamage -= value; } }
  308. [EventTriggerDescAttribute("单位复活触发")]
  309. public event UnitRebirthHandler OnUnitRebirth { add { mOnUnitRebirth += value; } remove { mOnUnitRebirth -= value; } }
  310. [EventTriggerDescAttribute("单位释放技能")]
  311. public event UnitLaunchSkillHandler OnUnitLaunchSkill { add { mOnUnitLaunchSkill += value; } remove { mOnUnitLaunchSkill -= value; } }
  312. [EventTriggerDescAttribute("单位获取物品")]
  313. public event UnitGotInstanceItemHandler OnUnitGotInstanceItem { add { mOnUnitGotInstanceItem += value; } remove { mOnUnitGotInstanceItem -= value; } }
  314. [EventTriggerDescAttribute("单位获取背包物品")]
  315. public event UnitGotInventoryItemHandler OnUnitGotInventoryItem { add { mOnUnitGotInventoryItem += value; } remove { mOnUnitGotInventoryItem -= value; } }
  316. [EventTriggerDescAttribute("单位丢失背包物品")]
  317. public event UnitLostInventoryItemHandler OnUnitLostInventoryItem { add { mOnUnitLostInventoryItem += value; } remove { mOnUnitLostInventoryItem -= value; } }
  318. [EventTriggerDescAttribute("单位使用道具")]
  319. public event UnitUseItemHandler OnUnitUseItem { add { mOnUnitUseItem += value; } remove { mOnUnitUseItem -= value; } }
  320. [EventTriggerDescAttribute("单位中BUFF")]
  321. public event UnitGotBuffHandler OnUnitGotBuff { add { mOnUnitGotBuff += value; } remove { mOnUnitGotBuff -= value; } }
  322. [EventTriggerDescAttribute("单位失去BUFF")]
  323. public event UnitLostBuffHandler OnUnitLostBuff { add { mOnUnitLostBuff += value; } remove { mOnUnitLostBuff -= value; } }
  324. [EventTriggerDescAttribute("单位获得金币")]
  325. public event UnitGotMoneyHandler OnUnitGotMoney { add { mOnUnitGotMoney += value; } remove { mOnUnitGotMoney -= value; } }
  326. [EventTriggerDescAttribute("单位和其他单位产生交互")]
  327. public event UnitPickUnitHandler OnUnitPickUnit { add { mOnUnitPickUnit += value; } remove { mOnUnitPickUnit -= value; } }
  328. [EventTriggerDescAttribute("单位脱战")]
  329. public event UnitOutBattleHandler OnUnitOutBattle { add { mOnUnitOutBattle += value; } remove { mOnUnitOutBattle -= value; } }
  330. [EventTriggerDescAttribute("收到游戏结束事件")]
  331. public event GameOverHandler OnGameOver { add { mOnGameOver += value; } remove { mOnGameOver -= value; } }
  332. [EventTriggerDescAttribute("收到客户端输入的动作")]
  333. public event OnHandleObjectActionHandler OnHandleObjectAction { add { mOnHandleObjectAction += value; } remove { mOnHandleObjectAction -= value; } }
  334. [EventTriggerDescAttribute("收到场景输入的动作(通常是游戏服)")]
  335. public event OnHandleActionHandler OnHandleAction { add { mOnHandleAction += value; } remove { mOnHandleAction -= value; } }
  336. [EventTriggerDescAttribute("单位尝试检取采集道具,返回False禁止检取")]
  337. public event TryPickItemHandler OnTryPickItem { add { mTryPickItem += value; } remove { mTryPickItem -= value; } }
  338. [EventTriggerDescAttribute("单位完成采集道具")]
  339. public event FinishPickItemHandler OnFinishPickItem { add { mFinishPickItem += value; } remove { mFinishPickItem -= value; } }
  340. [EventTriggerDescAttribute("添加物品单位到场景")]
  341. public event ItemAddedHandler OnItemAdded { add { mItemAdded += value; } remove { mItemAdded -= value; } }
  342. [EventTriggerDescAttribute("玩家准备完毕")]
  343. public event PlayerReadyHandler OnPlayerReady { add { mPlayerReady += value; } remove { mPlayerReady -= value; } }
  344. [EventTriggerDescAttribute("单位尝试加入到场景")]
  345. public event OnHandleTryAddUnit OnTryAddUnit { add { mTryAddUnit += value; } remove { mTryAddUnit -= value; } }
  346. [EventTriggerDescAttribute("物品尝试加入到场景")]
  347. public event OnHandleTryAddItem OnTryAddItem { add { mTryAddItem += value; } remove { mTryAddItem -= value; } }
  348. [EventTriggerDescAttribute("【游戏服->战斗服】任务已接受")]
  349. public event QuestAcceptedHandler OnQuestAccepted { add { mOnQuestAccepted += value; } remove { mOnQuestAccepted -= value; } }
  350. [EventTriggerDescAttribute("【游戏服->战斗服】任务已提交")]
  351. public event QuestCommittedHandler OnQuestCommitted { add { mOnQuestCommitted += value; } remove { mOnQuestCommitted -= value; } }
  352. [EventTriggerDescAttribute("【游戏服->战斗服】任务已放弃")]
  353. public event QuestDroppedHandler OnQuestDropped { add { mOnQuestDropped += value; } remove { mOnQuestDropped -= value; } }
  354. [EventTriggerDescAttribute("【游戏服->战斗服】任务状态已更新")]
  355. public event QuestStatusChangedHandler OnQuestStatusChanged { add { mOnQuestStatusChanged += value; } remove { mOnQuestStatusChanged -= value; } }
  356. }
  357. }