using CommonAI.Zone.Attributes;
using CommonAI.Zone.Formula;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CommonAI.Zone.Instance
{
partial class InstanceUnit
{
///
/// 单位更新触发
///
///
public delegate void UpdateHandler(InstanceUnit unit);
///
/// 收到网络协议
///
///
///
public delegate void HandleActionHandler(InstanceUnit unit, ObjectAction act);
///
/// 单位添加到场景
///
///
public delegate void AddedHandler(InstanceUnit unit);
///
/// 单位被移除触发
///
///
public delegate void RemovedHandler(InstanceUnit unit);
///
/// 当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。
///
///
public delegate void ActivatedHandler(InstanceUnit unit);
///
/// 单位死亡触发
///
///
///
public delegate void DeadHandler(InstanceUnit unit, InstanceUnit attacker);
///
/// 单位重生触发
///
///
public delegate void RebirthHandler(InstanceUnit unit);
///
/// 单位受到攻击触发
///
///
///
///
///
public delegate void DamageHandler(InstanceUnit obj, InstanceUnit attacker, int hp, AttackSource source);
///
/// 单位打到别人触发
///
///
///
///
///
public delegate void AttackHandler(InstanceUnit obj, InstanceUnit target, int hp, AttackSource source);
public delegate void GotInstanceItemHandler(InstanceUnit obj, InstanceItem item);
public delegate void GotInventoryItemHandler(InstanceUnit obj, ItemTemplate item);
public delegate void LostInventoryItemHandler(InstanceUnit obj, ItemTemplate item);
public delegate void UseItemHandler(InstanceUnit obj, ItemTemplate item, InstanceUnit item_creater);
public delegate void GotBuffHandler(InstanceUnit obj, InstanceUnit.BuffState buff);
public delegate void LostBuffHandler(InstanceUnit obj, InstanceUnit.BuffState buff);
///
/// 单位状态机切换
///
///
///
public delegate void StateChangedHandler(InstanceUnit obj, State old_state, State new_state);
///
/// 技能改变
///
///
///
///
public delegate void SkillChangedHandler(InstanceUnit obj, SkillState baseSkill, SkillState[] skills);
public delegate void OnLaunchSkillHandler(InstanceUnit obj, SkillState skill);
// 单位区域传送触发
public delegate void OnRegionTransportHandler();
///
/// 尝试Pick单位
///
///
///
///
public delegate bool TryPickUnitHandler(InstanceUnit obj, InstanceUnit picking);
///
/// 单位和其他单位产生交互
///
///
///
public delegate void PickUnitHandler(InstanceUnit obj, InstanceUnit pickable);
///
/// 单位尝试添加技能,可重置技能属性
///
///
///
///
public delegate bool TryAddSkill(InstanceUnit unit, ref SkillTemplate sk);
public delegate void SkillAdded(InstanceUnit unit, SkillState sk);
public delegate void SkillRemoved(InstanceUnit unit, SkillState sk);
///
/// 技能打中目标,每关键帧(带attack)调用一次,也就是每次attack不管命中多少个人,只执行一次
///
public delegate void SkillHitTargetHandler();
//----------------------------------------------------------------------------------------------------
private UpdateHandler mOnUpdate;
private HandleActionHandler mOnHandleObjectAction;
private AddedHandler mOnAdded;
private RemovedHandler mOnRemoved;
private ActivatedHandler mOnActivated;
private DeadHandler mOnDead;
private DamageHandler mOnDamage;
private AttackHandler mOnAttack;
private RebirthHandler mOnRebirth;
private GotInstanceItemHandler mOnGotInstanceItem;
private GotInventoryItemHandler mOnGotInventoryItem;
private LostInventoryItemHandler mOnLostInventoryItem;
private UseItemHandler mOnUseItem;
private GotBuffHandler mOnGotBuff;
private LostBuffHandler mOnLostBuff;
private StateChangedHandler mOnStateChanged;
private SkillChangedHandler mOnSkillChanged;
private OnLaunchSkillHandler mOnLaunchSkill;
private PickUnitHandler mOnPickUnit;
private TryPickUnitHandler mOnTryPickUnit;
private TryAddSkill mOnTryAddSkill;
private SkillAdded mOnSkillAdded;
private SkillRemoved mOnSkillRemoved;
private SkillHitTargetHandler mOnSkillHitTarger;
private OnRegionTransportHandler mOnRegionTransport;
protected override void clearEvents()
{
base.clearEvents();
this.mOnUpdate = null;
this.mOnHandleObjectAction = null;
this.mOnAdded = null;
this.mOnRemoved = null;
this.mOnActivated = null;
this.mOnDead = null;
this.mOnDamage = null;
this.mOnAttack = null;
this.mOnRebirth = null;
this.mOnGotInstanceItem = null;
this.mOnGotInventoryItem = null;
this.mOnLostInventoryItem = null;
this.mOnUseItem = null;
this.mOnGotBuff = null;
this.mOnLostBuff = null;
this.mOnStateChanged = null;
this.mOnSkillChanged = null;
this.mOnLaunchSkill = null;
this.mOnTryPickUnit = null;
this.mOnPickUnit = null;
this.mOnTryAddSkill = null;
this.mOnSkillAdded = null;
this.mOnSkillRemoved = null;
this.mOnSkillHitTarger = null;
}
//----------------------------------------------------------------------------------------------------
public event UpdateHandler OnUpdate { add { mOnUpdate += value; } remove { mOnUpdate -= value; } }
public event HandleActionHandler OnHandleAction { add { mOnHandleObjectAction += value; } remove { mOnHandleObjectAction -= value; } }
[EventTriggerDescAttribute("单位添加到场景时触发")]
public event AddedHandler OnAdded { add { mOnAdded += value; } remove { mOnAdded -= value; } }
[EventTriggerDescAttribute("单位被移除时触发")]
public event RemovedHandler OnRemoved { add { mOnRemoved += value; } remove { mOnRemoved -= value; } }
[EventTriggerDescAttribute("当单位可攻击时触发,如果单位有出生动画(SpawnTimeMS>0),则动画完结后触发")]
public event ActivatedHandler OnActivated { add { mOnActivated += value; } remove { mOnActivated -= value; } }
[EventTriggerDescAttribute("单位死亡时触发")]
public event DeadHandler OnDead { add { mOnDead += value; } remove { mOnDead -= value; } }
[EventTriggerDescAttribute("单位受到伤害时触发")]
public event DamageHandler OnDamage { add { mOnDamage += value; } remove { mOnDamage -= value; } }
[EventTriggerDescAttribute("单位攻击别人时触发")]
public event AttackHandler OnAttack { add { mOnAttack += value; } remove { mOnAttack -= value; } }
[EventTriggerDescAttribute("单位复活时触发")]
public event RebirthHandler OnRebirth { add { mOnRebirth += value; } remove { mOnRebirth -= value; } }
[EventTriggerDescAttribute("单位获得物品时触发")]
public event GotInstanceItemHandler OnGotInstanceItem { add { mOnGotInstanceItem += value; } remove { mOnGotInstanceItem -= value; } }
[EventTriggerDescAttribute("单位获得物品进入背包时触发")]
public event GotInventoryItemHandler OnGotInventoryItem { add { mOnGotInventoryItem += value; } remove { mOnGotInventoryItem -= value; } }
[EventTriggerDescAttribute("单位丢掉背包中的物品时触发")]
public event LostInventoryItemHandler OnLostInventoryItem { add { mOnLostInventoryItem += value; } remove { mOnLostInventoryItem -= value; } }
[EventTriggerDescAttribute("单位使用物品时触发(包括捡到物品立即使用)")]
public event UseItemHandler OnUseItem { add { mOnUseItem += value; } remove { mOnUseItem -= value; } }
[EventTriggerDescAttribute("单位获得BUFF时触发")]
public event GotBuffHandler OnGotBuff { add { mOnGotBuff += value; } remove { mOnGotBuff -= value; } }
[EventTriggerDescAttribute("单位失去BUFF时触发")]
public event LostBuffHandler OnLostBuff { add { mOnLostBuff += value; } remove { mOnLostBuff -= value; } }
[EventTriggerDescAttribute("单位状态机改变时触发")]
public event StateChangedHandler OnStateChanged { add { mOnStateChanged += value; } remove { mOnStateChanged -= value; } }
[EventTriggerDescAttribute("单位技能发生变化时触发")]
public event SkillChangedHandler OnSkillChanged { add { mOnSkillChanged += value; } remove { mOnSkillChanged -= value; } }
[EventTriggerDescAttribute("单位释放技能")]
public event OnLaunchSkillHandler OnLaunchSkill { add { mOnLaunchSkill += value; } remove { mOnLaunchSkill -= value; } }
[EventTriggerDescAttribute("区域传送触发")]
public event OnRegionTransportHandler OnRegionTransport { add { mOnRegionTransport += value; } remove { mOnRegionTransport -= value; } }
[EventTriggerDescAttribute("尝试Pick单位")]
public event TryPickUnitHandler TryPickUnit { add { mOnTryPickUnit += value; } remove { mOnTryPickUnit -= value; } }
[EventTriggerDescAttribute("单位和其他单位产生交互时触发")]
public event PickUnitHandler OnPickUnit { add { mOnPickUnit += value; } remove { mOnPickUnit -= value; } }
[EventTriggerDescAttribute("单位尝试添加技能,可重置技能属性")]
public event TryAddSkill OnTryAddSkill { add { mOnTryAddSkill += value; } remove { mOnTryAddSkill -= value; } }
[EventTriggerDescAttribute("单位获得技能")]
public event SkillAdded OnSkillAdded { add { mOnSkillAdded += value; } remove { mOnSkillAdded -= value; } }
[EventTriggerDescAttribute("单位移除技能")]
public event SkillRemoved OnSkillRemoved { add { mOnSkillRemoved += value; } remove { mOnSkillRemoved -= value; } }
[EventTriggerDescAttribute("技能击中目标")]
public event SkillHitTargetHandler OnSkillHitTarget { add { mOnSkillHitTarger += value; } remove { mOnSkillHitTarger -= value; } }
}
}