using CommonAI.RTS;
using CommonLang.Vector;
using CommonAI.Zone.Attributes;
using CommonAI.Zone.Formula;
namespace CommonAI.Zone.Instance
{
partial class InstanceZone
{
public delegate void InitHandler(InstanceZone zone);
public delegate void PostEventHandler(InstanceZone zone, Event e);
public delegate void SendMessageB2RHandler(InstanceZone zone, CommonAI.ZoneServer.SendMessageB2R e);
public delegate void RecvMessageR2BHandler(InstanceZone zone, CommonAI.ZoneServer.SendMessageR2B e);
public delegate void SendEventB2RHandler(InstanceZone zone, CommonAI.ZoneServer.SendEventB2R e);
public delegate void ObjectPosChangedHandler(InstanceZone zone, InstanceZoneObject o);
public delegate void ObjectSpaceChangedHandler(InstanceZone zone, InstanceZoneObject o, SpaceDivision.SpaceCellNode old_node, SpaceDivision.SpaceCellNode new_node);
public delegate void ObjectAreaChangedHandler(InstanceZone zone, InstanceZoneObject o, ZoneArea old_node, ZoneArea new_node);
public delegate void GameOverHandler(InstanceZone zone, GameOverEvent evt);
public delegate void OnHandleObjectActionHandler(InstanceZoneObject obj, ObjectAction act);
public delegate void OnHandleActionHandler(InstanceZone zone, Action act);
public delegate bool OnHandleTryAddUnit(UnitInfo info);
public delegate bool OnHandleTryAddItem(ItemTemplate info);
///
/// 场景更新触发
///
///
public delegate void UpdateHandler(InstanceZone zone);
///
/// 当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。
///
///
///
public delegate void UnitActivatedHandler(InstanceZone zone, InstanceUnit obj);
///
/// 单位进入触发
///
///
///
public delegate void UnitAddedHandler(InstanceZone zone, InstanceUnit obj);
///
/// 单位移除触发
///
///
///
public delegate void UnitRemovedHandler(InstanceZone zone, InstanceUnit obj);
///
/// 物品移除触发
///
///
///
public delegate void ItemRemovedHandler(InstanceZone zone, InstanceItem obj);
///
/// 单位开始放技能
///
///
///
///
public delegate void UnitLaunchSkillHandler(InstanceZone zone, InstanceUnit u, InstanceUnit.SkillState skill);
///
/// 单位死亡触发
///
///
///
///
public delegate void UnitDeadHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker);
///
/// 单位受到攻击触发
///
///
///
///
public delegate void UnitDamageHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker, int reduceHP, AttackSource source);
///
/// 单位复活触发
///
///
///
public delegate void UnitRebirthHandler(InstanceZone zone, InstanceUnit obj);
///
/// 单位获取场景物品
///
///
///
///
public delegate void UnitGotInstanceItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
///
/// 单位获取物品进背包
///
///
///
///
///
public delegate void UnitGotInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count);
///
/// 单位丢失物品
///
///
///
///
///
public delegate void UnitLostInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count);
///
/// 单位获取物品
///
///
///
///
///
public delegate void UnitUseItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, InstanceUnit item_creater);
///
/// 单位中BUFF
///
///
///
///
public delegate void UnitGotBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff);
///
/// 单位失去BUFF
///
///
///
///
public delegate void UnitLostBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff);
///
/// 单位获取金币
///
///
///
public delegate void UnitGotMoneyHandler(InstanceUnit obj, int add_money);
///
/// 单位和其他单位产生交互
///
///
///
///
public delegate void UnitPickUnitHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit pickable);
///
/// 单位脱战
///
///
///
///
public delegate void UnitOutBattleHandler(InstanceZone zone, InstanceUnit obj);
///
/// 单位尝试检取道具监听,
/// 返回False禁止检取
///
///
///
///
///
public delegate bool TryPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
///
/// 单位完成采集道具
///
///
///
///
///
public delegate bool FinishPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item);
///
/// 添加物品到场景
///
///
///
///
public delegate void ItemAddedHandler(InstanceZone zone, InstanceItem item, InstanceUnit item_creater);
//----------------------------------------------------------------------------------------------------
///
/// 玩家准备完毕
///
///
public delegate void PlayerReadyHandler(InstancePlayer player);
///
/// 【服务端】任务已接受
///
///
///
public delegate void QuestAcceptedHandler(InstancePlayer player, string quest);
///
/// 【服务端】任务已提交
///
///
///
public delegate void QuestCommittedHandler(InstancePlayer player, string quest);
///
/// 【服务端】任务已放弃
///
///
///
public delegate void QuestDroppedHandler(InstancePlayer player, string quest);
///
/// 【服务端】任务状态已更新
///
///
///
///
///
public delegate void QuestStatusChangedHandler(InstancePlayer player, string quest, string key, string value);
//----------------------------------------------------------------------------------------------------
private UpdateHandler mOnUpdate;
private InitHandler mOnInit;
private ObjectPosChangedHandler mOnObjectPosChanged;
private ObjectSpaceChangedHandler mOnObjectSpaceChanged;
private ObjectAreaChangedHandler mOnObjectAreaChanged;
private PostEventHandler mOnPostEvent;
private SendMessageB2RHandler mOnSendToGS;
private RecvMessageR2BHandler mOnRecvFromGS;
private SendEventB2RHandler mOnSendMessageB2REvent;
private UnitActivatedHandler mOnUnitActivated;
private UnitAddedHandler mOnUnitAdded;
private UnitRemovedHandler mOnUnitRemoved;
private ItemRemovedHandler mOnItemRemoved;
private UnitLaunchSkillHandler mOnUnitLaunchSkill;
private UnitDeadHandler mOnUnitDead;
private UnitDamageHandler mOnUnitDamage;
private UnitRebirthHandler mOnUnitRebirth;
private UnitGotInstanceItemHandler mOnUnitGotInstanceItem;
private UnitGotInventoryItemHandler mOnUnitGotInventoryItem;
private UnitLostInventoryItemHandler mOnUnitLostInventoryItem;
private UnitUseItemHandler mOnUnitUseItem;
private UnitGotBuffHandler mOnUnitGotBuff;
private UnitLostBuffHandler mOnUnitLostBuff;
private UnitGotMoneyHandler mOnUnitGotMoney;
private UnitPickUnitHandler mOnUnitPickUnit;
private UnitOutBattleHandler mOnUnitOutBattle;
private GameOverHandler mOnGameOver;
private OnHandleObjectActionHandler mOnHandleObjectAction;
private OnHandleActionHandler mOnHandleAction;
//是否可以加入单位
private OnHandleTryAddUnit mTryAddUnit;
private OnHandleTryAddItem mTryAddItem;
private TryPickItemHandler mTryPickItem;
private FinishPickItemHandler mFinishPickItem;
private ItemAddedHandler mItemAdded;
private PlayerReadyHandler mPlayerReady;
private QuestAcceptedHandler mOnQuestAccepted;
private QuestCommittedHandler mOnQuestCommitted;
private QuestDroppedHandler mOnQuestDropped;
private QuestStatusChangedHandler mOnQuestStatusChanged;
protected virtual void ClearEvents()
{
this.mOnUpdate = null;
this.mOnInit = null;
this.mOnObjectPosChanged = null;
this.mOnObjectSpaceChanged = null;
this.mOnObjectAreaChanged = null;
this.mOnPostEvent = null;
this.mOnSendToGS = null;
this.mOnRecvFromGS = null;
this.mOnSendMessageB2REvent = null;
this.mOnUnitActivated = null;
this.mOnUnitAdded = null;
this.mOnUnitRemoved = null;
this.mOnItemRemoved = null;
this.mOnUnitDead = null;
this.mOnUnitDamage = null;
this.mOnUnitRebirth = null;
this.mOnUnitGotInstanceItem = null;
this.mOnUnitGotInventoryItem = null;
this.mOnUnitLostInventoryItem = null;
this.mOnUnitUseItem = null;
this.mOnUnitGotBuff = null;
this.mOnUnitLostBuff = null;
this.mOnUnitGotMoney = null;
this.mOnUnitPickUnit = null;
this.mOnGameOver = null;
this.mOnHandleObjectAction = null;
this.mOnHandleAction = null;
this.mTryPickItem = null;
this.mFinishPickItem = null;
this.mItemAdded = null;
this.mPlayerReady = null;
this.mOnQuestAccepted = null;
this.mOnQuestCommitted = null;
this.mOnQuestDropped = null;
this.mOnQuestStatusChanged = null;
}
//----------------------------------------------------------------------------------------------------
public event UpdateHandler OnUpdate { add { mOnUpdate += value; } remove { mOnUpdate -= value; } }
[EventTriggerDescAttribute("场景初始化时触发")]
public event InitHandler OnInit { add { mOnInit += value; } remove { mOnInit -= value; } }
[EventTriggerDescAttribute("单位位置发生变化时触发")]
public event ObjectPosChangedHandler OnObjectPosChanged { add { mOnObjectPosChanged += value; } remove { mOnObjectPosChanged -= value; } }
[EventTriggerDescAttribute("单位空间分割发生变化时触发")]
public event ObjectSpaceChangedHandler OnObjectSpaceChanged { add { mOnObjectSpaceChanged += value; } remove { mOnObjectSpaceChanged -= value; } }
[EventTriggerDescAttribute("单位Area发生变化时触发")]
public event ObjectAreaChangedHandler OnObjectAreaChanged { add { mOnObjectAreaChanged += value; } remove { mOnObjectAreaChanged -= value; } }
[EventTriggerDescAttribute("场景推送消息时触发")]
public event PostEventHandler OnPostEvent { add { mOnPostEvent += value; } remove { mOnPostEvent -= value; } }
[EventTriggerDescAttribute("【战斗服->游戏服】已发送字符串消息")]
public event SendMessageB2RHandler OnSendMessageToGS { add { mOnSendToGS += value; } remove { mOnSendToGS -= value; } }
[EventTriggerDescAttribute("【游戏服->战斗服】已接收字符串消息")]
public event RecvMessageR2BHandler OnRecvMessageFromGS { add { mOnRecvFromGS += value; } remove { mOnRecvFromGS -= value; } }
[EventTriggerDescAttribute("【战斗服->游戏服】发送自定义事件")]
public event SendEventB2RHandler OnSendEventB2R { add { mOnSendMessageB2REvent += value; } remove { mOnSendMessageB2REvent -= value; } }
[EventTriggerDescAttribute("当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。")]
public event UnitActivatedHandler OnUnitActivated { add { mOnUnitActivated += value; } remove { mOnUnitActivated -= value; } }
[EventTriggerDescAttribute("单位进入触发")]
public event UnitAddedHandler OnUnitAdded { add { mOnUnitAdded += value; } remove { mOnUnitAdded -= value; } }
[EventTriggerDescAttribute("单位移除触发")]
public event UnitRemovedHandler OnUnitRemoved { add { mOnUnitRemoved += value; } remove { mOnUnitRemoved -= value; } }
[EventTriggerDescAttribute("物品移除触发")]
public event ItemRemovedHandler OnItemRemoved { add { mOnItemRemoved += value; } remove { mOnItemRemoved -= value; } }
[EventTriggerDescAttribute("单位死亡触发")]
public event UnitDeadHandler OnUnitDead { add { mOnUnitDead += value; } remove { mOnUnitDead -= value; } }
[EventTriggerDescAttribute("单位受到攻击触发")]
public event UnitDamageHandler OnUnitDamage { add { mOnUnitDamage += value; } remove { mOnUnitDamage -= value; } }
[EventTriggerDescAttribute("单位复活触发")]
public event UnitRebirthHandler OnUnitRebirth { add { mOnUnitRebirth += value; } remove { mOnUnitRebirth -= value; } }
[EventTriggerDescAttribute("单位释放技能")]
public event UnitLaunchSkillHandler OnUnitLaunchSkill { add { mOnUnitLaunchSkill += value; } remove { mOnUnitLaunchSkill -= value; } }
[EventTriggerDescAttribute("单位获取物品")]
public event UnitGotInstanceItemHandler OnUnitGotInstanceItem { add { mOnUnitGotInstanceItem += value; } remove { mOnUnitGotInstanceItem -= value; } }
[EventTriggerDescAttribute("单位获取背包物品")]
public event UnitGotInventoryItemHandler OnUnitGotInventoryItem { add { mOnUnitGotInventoryItem += value; } remove { mOnUnitGotInventoryItem -= value; } }
[EventTriggerDescAttribute("单位丢失背包物品")]
public event UnitLostInventoryItemHandler OnUnitLostInventoryItem { add { mOnUnitLostInventoryItem += value; } remove { mOnUnitLostInventoryItem -= value; } }
[EventTriggerDescAttribute("单位使用道具")]
public event UnitUseItemHandler OnUnitUseItem { add { mOnUnitUseItem += value; } remove { mOnUnitUseItem -= value; } }
[EventTriggerDescAttribute("单位中BUFF")]
public event UnitGotBuffHandler OnUnitGotBuff { add { mOnUnitGotBuff += value; } remove { mOnUnitGotBuff -= value; } }
[EventTriggerDescAttribute("单位失去BUFF")]
public event UnitLostBuffHandler OnUnitLostBuff { add { mOnUnitLostBuff += value; } remove { mOnUnitLostBuff -= value; } }
[EventTriggerDescAttribute("单位获得金币")]
public event UnitGotMoneyHandler OnUnitGotMoney { add { mOnUnitGotMoney += value; } remove { mOnUnitGotMoney -= value; } }
[EventTriggerDescAttribute("单位和其他单位产生交互")]
public event UnitPickUnitHandler OnUnitPickUnit { add { mOnUnitPickUnit += value; } remove { mOnUnitPickUnit -= value; } }
[EventTriggerDescAttribute("单位脱战")]
public event UnitOutBattleHandler OnUnitOutBattle { add { mOnUnitOutBattle += value; } remove { mOnUnitOutBattle -= value; } }
[EventTriggerDescAttribute("收到游戏结束事件")]
public event GameOverHandler OnGameOver { add { mOnGameOver += value; } remove { mOnGameOver -= value; } }
[EventTriggerDescAttribute("收到客户端输入的动作")]
public event OnHandleObjectActionHandler OnHandleObjectAction { add { mOnHandleObjectAction += value; } remove { mOnHandleObjectAction -= value; } }
[EventTriggerDescAttribute("收到场景输入的动作(通常是游戏服)")]
public event OnHandleActionHandler OnHandleAction { add { mOnHandleAction += value; } remove { mOnHandleAction -= value; } }
[EventTriggerDescAttribute("单位尝试检取采集道具,返回False禁止检取")]
public event TryPickItemHandler OnTryPickItem { add { mTryPickItem += value; } remove { mTryPickItem -= value; } }
[EventTriggerDescAttribute("单位完成采集道具")]
public event FinishPickItemHandler OnFinishPickItem { add { mFinishPickItem += value; } remove { mFinishPickItem -= value; } }
[EventTriggerDescAttribute("添加物品单位到场景")]
public event ItemAddedHandler OnItemAdded { add { mItemAdded += value; } remove { mItemAdded -= value; } }
[EventTriggerDescAttribute("玩家准备完毕")]
public event PlayerReadyHandler OnPlayerReady { add { mPlayerReady += value; } remove { mPlayerReady -= value; } }
[EventTriggerDescAttribute("单位尝试加入到场景")]
public event OnHandleTryAddUnit OnTryAddUnit { add { mTryAddUnit += value; } remove { mTryAddUnit -= value; } }
[EventTriggerDescAttribute("物品尝试加入到场景")]
public event OnHandleTryAddItem OnTryAddItem { add { mTryAddItem += value; } remove { mTryAddItem -= value; } }
[EventTriggerDescAttribute("【游戏服->战斗服】任务已接受")]
public event QuestAcceptedHandler OnQuestAccepted { add { mOnQuestAccepted += value; } remove { mOnQuestAccepted -= value; } }
[EventTriggerDescAttribute("【游戏服->战斗服】任务已提交")]
public event QuestCommittedHandler OnQuestCommitted { add { mOnQuestCommitted += value; } remove { mOnQuestCommitted -= value; } }
[EventTriggerDescAttribute("【游戏服->战斗服】任务已放弃")]
public event QuestDroppedHandler OnQuestDropped { add { mOnQuestDropped += value; } remove { mOnQuestDropped -= value; } }
[EventTriggerDescAttribute("【游戏服->战斗服】任务状态已更新")]
public event QuestStatusChangedHandler OnQuestStatusChanged { add { mOnQuestStatusChanged += value; } remove { mOnQuestStatusChanged -= value; } }
}
}