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); /// <summary> /// 场景更新触发 /// </summary> /// <param name="zone"></param> public delegate void UpdateHandler(InstanceZone zone); /// <summary> /// 当单位可攻击时触发,如果单位有出生动画,则动画完结后触发。 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> public delegate void UnitActivatedHandler(InstanceZone zone, InstanceUnit obj); /// <summary> /// 单位进入触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> public delegate void UnitAddedHandler(InstanceZone zone, InstanceUnit obj); /// <summary> /// 单位移除触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> public delegate void UnitRemovedHandler(InstanceZone zone, InstanceUnit obj); /// <summary> /// 物品移除触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> public delegate void ItemRemovedHandler(InstanceZone zone, InstanceItem obj); /// <summary> /// 单位开始放技能 /// </summary> /// <param name="zone"></param> /// <param name="u"></param> /// <param name="skill"></param> public delegate void UnitLaunchSkillHandler(InstanceZone zone, InstanceUnit u, InstanceUnit.SkillState skill); /// <summary> /// 单位死亡触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> /// <param name="attacker"></param> public delegate void UnitDeadHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker); /// <summary> /// 单位受到攻击触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> /// <param name="attacker"></param> public delegate void UnitDamageHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker, int reduceHP, AttackSource source); /// <summary> /// 单位复活触发 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> public delegate void UnitRebirthHandler(InstanceZone zone, InstanceUnit obj); /// <summary> /// 单位获取场景物品 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> public delegate void UnitGotInstanceItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item); /// <summary> /// 单位获取物品进背包 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> /// <param name="count"></param> public delegate void UnitGotInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count); /// <summary> /// 单位丢失物品 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> /// <param name="count"></param> public delegate void UnitLostInventoryItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, int count); /// <summary> /// 单位获取物品 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> /// <param name="item_creater"></param> public delegate void UnitUseItemHandler(InstanceZone zone, InstanceUnit unit, ItemTemplate item, InstanceUnit item_creater); /// <summary> /// 单位中BUFF /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="buff"></param> public delegate void UnitGotBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff); /// <summary> /// 单位失去BUFF /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="buff"></param> public delegate void UnitLostBuffHandler(InstanceZone zone, InstanceUnit unit, InstanceUnit.BuffState buff); /// <summary> /// 单位获取金币 /// </summary> /// <param name="obj"></param> /// <param name="add_money"></param> public delegate void UnitGotMoneyHandler(InstanceUnit obj, int add_money); /// <summary> /// 单位和其他单位产生交互 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> /// <param name="pickable"></param> public delegate void UnitPickUnitHandler(InstanceZone zone, InstanceUnit obj, InstanceUnit pickable); /// <summary> /// 单位脱战 /// </summary> /// <param name="zone"></param> /// <param name="obj"></param> /// <param name="pickable"></param> public delegate void UnitOutBattleHandler(InstanceZone zone, InstanceUnit obj); /// <summary> /// 单位尝试检取道具监听, /// 返回False禁止检取 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> /// <returns></returns> public delegate bool TryPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item); /// <summary> /// 单位完成采集道具 /// </summary> /// <param name="zone"></param> /// <param name="unit"></param> /// <param name="item"></param> /// <returns></returns> public delegate bool FinishPickItemHandler(InstanceZone zone, InstanceUnit unit, InstanceItem item); /// <summary> /// 添加物品到场景 /// </summary> /// <param name="zone"></param> /// <param name="item"></param> /// <param name="item_creater"></param> public delegate void ItemAddedHandler(InstanceZone zone, InstanceItem item, InstanceUnit item_creater); //---------------------------------------------------------------------------------------------------- /// <summary> /// 玩家准备完毕 /// </summary> /// <param name="player"></param> public delegate void PlayerReadyHandler(InstancePlayer player); /// <summary> /// 【服务端】任务已接受 /// </summary> /// <param name="player"></param> /// <param name="quest"></param> public delegate void QuestAcceptedHandler(InstancePlayer player, string quest); /// <summary> /// 【服务端】任务已提交 /// </summary> /// <param name="player"></param> /// <param name="quest"></param> public delegate void QuestCommittedHandler(InstancePlayer player, string quest); /// <summary> /// 【服务端】任务已放弃 /// </summary> /// <param name="player"></param> /// <param name="quest"></param> public delegate void QuestDroppedHandler(InstancePlayer player, string quest); /// <summary> /// 【服务端】任务状态已更新 /// </summary> /// <param name="player"></param> /// <param name="quest"></param> /// <param name="key"></param> /// <param name="value"></param> 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; } } } }