InstanceUnit.Events.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. using CommonAI.Zone.Attributes;
  2. using CommonAI.Zone.Formula;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. namespace CommonAI.Zone.Instance
  8. {
  9. partial class InstanceUnit
  10. {
  11. /// <summary>
  12. /// 单位更新触发
  13. /// </summary>
  14. /// <param name="unit"></param>
  15. public delegate void UpdateHandler(InstanceUnit unit);
  16. /// <summary>
  17. /// 收到网络协议
  18. /// </summary>
  19. /// <param name="unit"></param>
  20. /// <param name="act"></param>
  21. public delegate void HandleActionHandler(InstanceUnit unit, ObjectAction act);
  22. /// <summary>
  23. /// 单位添加到场景
  24. /// </summary>
  25. /// <param name="unit"></param>
  26. public delegate void AddedHandler(InstanceUnit unit);
  27. /// <summary>
  28. /// 单位被移除触发
  29. /// </summary>
  30. /// <param name="unit"></param>
  31. public delegate void RemovedHandler(InstanceUnit unit);
  32. /// <summary>
  33. /// 当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。
  34. /// </summary>
  35. /// <param name="unit"></param>
  36. public delegate void ActivatedHandler(InstanceUnit unit);
  37. /// <summary>
  38. /// 单位死亡触发
  39. /// </summary>
  40. /// <param name="unit"></param>
  41. /// <param name="attacker"></param>
  42. public delegate void DeadHandler(InstanceUnit unit, InstanceUnit attacker);
  43. /// <summary>
  44. /// 单位重生触发
  45. /// </summary>
  46. /// <param name="unit"></param>
  47. public delegate void RebirthHandler(InstanceUnit unit);
  48. /// <summary>
  49. /// 单位受到攻击触发
  50. /// </summary>
  51. /// <param name="obj"></param>
  52. /// <param name="attacker"></param>
  53. /// <param name="hp"></param>
  54. /// <param name="source"></param>
  55. public delegate void DamageHandler(InstanceUnit obj, InstanceUnit attacker, int hp, AttackSource source);
  56. /// <summary>
  57. /// 单位打到别人触发
  58. /// </summary>
  59. /// <param name="obj"></param>
  60. /// <param name="target"></param>
  61. /// <param name="hp"></param>
  62. /// <param name="source"></param>
  63. public delegate void AttackHandler(InstanceUnit obj, InstanceUnit target, int hp, AttackSource source);
  64. public delegate void GotInstanceItemHandler(InstanceUnit obj, InstanceItem item);
  65. public delegate void GotInventoryItemHandler(InstanceUnit obj, ItemTemplate item);
  66. public delegate void LostInventoryItemHandler(InstanceUnit obj, ItemTemplate item);
  67. public delegate void UseItemHandler(InstanceUnit obj, ItemTemplate item, InstanceUnit item_creater);
  68. public delegate void GotBuffHandler(InstanceUnit obj, InstanceUnit.BuffState buff);
  69. public delegate void LostBuffHandler(InstanceUnit obj, InstanceUnit.BuffState buff);
  70. /// <summary>
  71. /// 单位状态机切换
  72. /// </summary>
  73. /// <param name="old_state"></param>
  74. /// <param name="new_state"></param>
  75. public delegate void StateChangedHandler(InstanceUnit obj, State old_state, State new_state);
  76. /// <summary>
  77. /// 技能改变
  78. /// </summary>
  79. /// <param name="obj"></param>
  80. /// <param name="baseSkill"></param>
  81. /// <param name="skills"></param>
  82. public delegate void SkillChangedHandler(InstanceUnit obj, SkillState baseSkill, SkillState[] skills);
  83. public delegate void OnLaunchSkillHandler(InstanceUnit obj, SkillState skill);
  84. // 单位区域传送触发
  85. public delegate void OnRegionTransportHandler();
  86. /// <summary>
  87. /// 尝试Pick单位
  88. /// </summary>
  89. /// <param name="obj"></param>
  90. /// <param name="picking"></param>
  91. /// <returns></returns>
  92. public delegate bool TryPickUnitHandler(InstanceUnit obj, InstanceUnit picking);
  93. /// <summary>
  94. /// 单位和其他单位产生交互
  95. /// </summary>
  96. /// <param name="obj"></param>
  97. /// <param name="pickable"></param>
  98. public delegate void PickUnitHandler(InstanceUnit obj, InstanceUnit pickable);
  99. /// <summary>
  100. /// 单位尝试添加技能,可重置技能属性
  101. /// </summary>
  102. /// <param name="unit"></param>
  103. /// <param name="sk"></param>
  104. /// <returns></returns>
  105. public delegate bool TryAddSkill(InstanceUnit unit, ref SkillTemplate sk);
  106. public delegate void SkillAdded(InstanceUnit unit, SkillState sk);
  107. public delegate void SkillRemoved(InstanceUnit unit, SkillState sk);
  108. /// <summary>
  109. /// 技能打中目标,每关键帧(带attack)调用一次,也就是每次attack不管命中多少个人,只执行一次
  110. /// </summary>
  111. public delegate void SkillHitTargetHandler();
  112. //----------------------------------------------------------------------------------------------------
  113. private UpdateHandler mOnUpdate;
  114. private HandleActionHandler mOnHandleObjectAction;
  115. private AddedHandler mOnAdded;
  116. private RemovedHandler mOnRemoved;
  117. private ActivatedHandler mOnActivated;
  118. private DeadHandler mOnDead;
  119. private DamageHandler mOnDamage;
  120. private AttackHandler mOnAttack;
  121. private RebirthHandler mOnRebirth;
  122. private GotInstanceItemHandler mOnGotInstanceItem;
  123. private GotInventoryItemHandler mOnGotInventoryItem;
  124. private LostInventoryItemHandler mOnLostInventoryItem;
  125. private UseItemHandler mOnUseItem;
  126. private GotBuffHandler mOnGotBuff;
  127. private LostBuffHandler mOnLostBuff;
  128. private StateChangedHandler mOnStateChanged;
  129. private SkillChangedHandler mOnSkillChanged;
  130. private OnLaunchSkillHandler mOnLaunchSkill;
  131. private PickUnitHandler mOnPickUnit;
  132. private TryPickUnitHandler mOnTryPickUnit;
  133. private TryAddSkill mOnTryAddSkill;
  134. private SkillAdded mOnSkillAdded;
  135. private SkillRemoved mOnSkillRemoved;
  136. private SkillHitTargetHandler mOnSkillHitTarger;
  137. private OnRegionTransportHandler mOnRegionTransport;
  138. protected override void clearEvents()
  139. {
  140. base.clearEvents();
  141. this.mOnUpdate = null;
  142. this.mOnHandleObjectAction = null;
  143. this.mOnAdded = null;
  144. this.mOnRemoved = null;
  145. this.mOnActivated = null;
  146. this.mOnDead = null;
  147. this.mOnDamage = null;
  148. this.mOnAttack = null;
  149. this.mOnRebirth = null;
  150. this.mOnGotInstanceItem = null;
  151. this.mOnGotInventoryItem = null;
  152. this.mOnLostInventoryItem = null;
  153. this.mOnUseItem = null;
  154. this.mOnGotBuff = null;
  155. this.mOnLostBuff = null;
  156. this.mOnStateChanged = null;
  157. this.mOnSkillChanged = null;
  158. this.mOnLaunchSkill = null;
  159. this.mOnTryPickUnit = null;
  160. this.mOnPickUnit = null;
  161. this.mOnTryAddSkill = null;
  162. this.mOnSkillAdded = null;
  163. this.mOnSkillRemoved = null;
  164. this.mOnSkillHitTarger = null;
  165. }
  166. //----------------------------------------------------------------------------------------------------
  167. public event UpdateHandler OnUpdate { add { mOnUpdate += value; } remove { mOnUpdate -= value; } }
  168. public event HandleActionHandler OnHandleAction { add { mOnHandleObjectAction += value; } remove { mOnHandleObjectAction -= value; } }
  169. [EventTriggerDescAttribute("单位添加到场景时触发")]
  170. public event AddedHandler OnAdded { add { mOnAdded += value; } remove { mOnAdded -= value; } }
  171. [EventTriggerDescAttribute("单位被移除时触发")]
  172. public event RemovedHandler OnRemoved { add { mOnRemoved += value; } remove { mOnRemoved -= value; } }
  173. [EventTriggerDescAttribute("当单位可攻击时触发,如果单位有出生动画(SpawnTimeMS>0),则动画完结后触发")]
  174. public event ActivatedHandler OnActivated { add { mOnActivated += value; } remove { mOnActivated -= value; } }
  175. [EventTriggerDescAttribute("单位死亡时触发")]
  176. public event DeadHandler OnDead { add { mOnDead += value; } remove { mOnDead -= value; } }
  177. [EventTriggerDescAttribute("单位受到伤害时触发")]
  178. public event DamageHandler OnDamage { add { mOnDamage += value; } remove { mOnDamage -= value; } }
  179. [EventTriggerDescAttribute("单位攻击别人时触发")]
  180. public event AttackHandler OnAttack { add { mOnAttack += value; } remove { mOnAttack -= value; } }
  181. [EventTriggerDescAttribute("单位复活时触发")]
  182. public event RebirthHandler OnRebirth { add { mOnRebirth += value; } remove { mOnRebirth -= value; } }
  183. [EventTriggerDescAttribute("单位获得物品时触发")]
  184. public event GotInstanceItemHandler OnGotInstanceItem { add { mOnGotInstanceItem += value; } remove { mOnGotInstanceItem -= value; } }
  185. [EventTriggerDescAttribute("单位获得物品进入背包时触发")]
  186. public event GotInventoryItemHandler OnGotInventoryItem { add { mOnGotInventoryItem += value; } remove { mOnGotInventoryItem -= value; } }
  187. [EventTriggerDescAttribute("单位丢掉背包中的物品时触发")]
  188. public event LostInventoryItemHandler OnLostInventoryItem { add { mOnLostInventoryItem += value; } remove { mOnLostInventoryItem -= value; } }
  189. [EventTriggerDescAttribute("单位使用物品时触发(包括捡到物品立即使用)")]
  190. public event UseItemHandler OnUseItem { add { mOnUseItem += value; } remove { mOnUseItem -= value; } }
  191. [EventTriggerDescAttribute("单位获得BUFF时触发")]
  192. public event GotBuffHandler OnGotBuff { add { mOnGotBuff += value; } remove { mOnGotBuff -= value; } }
  193. [EventTriggerDescAttribute("单位失去BUFF时触发")]
  194. public event LostBuffHandler OnLostBuff { add { mOnLostBuff += value; } remove { mOnLostBuff -= value; } }
  195. [EventTriggerDescAttribute("单位状态机改变时触发")]
  196. public event StateChangedHandler OnStateChanged { add { mOnStateChanged += value; } remove { mOnStateChanged -= value; } }
  197. [EventTriggerDescAttribute("单位技能发生变化时触发")]
  198. public event SkillChangedHandler OnSkillChanged { add { mOnSkillChanged += value; } remove { mOnSkillChanged -= value; } }
  199. [EventTriggerDescAttribute("单位释放技能")]
  200. public event OnLaunchSkillHandler OnLaunchSkill { add { mOnLaunchSkill += value; } remove { mOnLaunchSkill -= value; } }
  201. [EventTriggerDescAttribute("区域传送触发")]
  202. public event OnRegionTransportHandler OnRegionTransport { add { mOnRegionTransport += value; } remove { mOnRegionTransport -= value; } }
  203. [EventTriggerDescAttribute("尝试Pick单位")]
  204. public event TryPickUnitHandler TryPickUnit { add { mOnTryPickUnit += value; } remove { mOnTryPickUnit -= value; } }
  205. [EventTriggerDescAttribute("单位和其他单位产生交互时触发")]
  206. public event PickUnitHandler OnPickUnit { add { mOnPickUnit += value; } remove { mOnPickUnit -= value; } }
  207. [EventTriggerDescAttribute("单位尝试添加技能,可重置技能属性")]
  208. public event TryAddSkill OnTryAddSkill { add { mOnTryAddSkill += value; } remove { mOnTryAddSkill -= value; } }
  209. [EventTriggerDescAttribute("单位获得技能")]
  210. public event SkillAdded OnSkillAdded { add { mOnSkillAdded += value; } remove { mOnSkillAdded -= value; } }
  211. [EventTriggerDescAttribute("单位移除技能")]
  212. public event SkillRemoved OnSkillRemoved { add { mOnSkillRemoved += value; } remove { mOnSkillRemoved -= value; } }
  213. [EventTriggerDescAttribute("技能击中目标")]
  214. public event SkillHitTargetHandler OnSkillHitTarget { add { mOnSkillHitTarger += value; } remove { mOnSkillHitTarger -= value; } }
  215. }
  216. }