using System; using System.Collections.Generic; using ProtoCSStruct; using Sog; namespace Game { public class EventHandlerMgr : BaseReloadableService { public override int GetServiceType() { return GameServiceType.EventHandlerMgr; } public override void Dispose() { //清空所有事件 TriggerPlayerOnline = null; TriggerPlayerOffline = null; TriggerPlayerDisconnected = null; TriggerPlayerReOnline = null; TriggerPlayerBorn = null; TriggerNewDayStart = null; TriggerDailyStatisticsChanged = null; TriggerTotalStatisticsChanged = null; TriggerReloadConfig = null; TriggerPlayerPaySuccess = null; TriggerPlayerAddLevel = null; TriggerTaskexHandoverComplete = null; } /// /// 上线,第一次 /// /// public delegate void PlayerOnlineEvent(PlayerOnGame player); public PlayerOnlineEvent TriggerPlayerOnline; /// /// 上线之后同步协议用 /// /// public delegate void PlayerOnlineAfterEvent(PlayerOnGame player); public PlayerOnlineAfterEvent TriggerPlayerOnlineAfter; /// /// 断线了,这个在Offline之前有可能触发 /// /// public delegate void PlayerDisconnectedEvent(PlayerOnGame player); public PlayerDisconnectedEvent TriggerPlayerDisconnected; /// /// 下线,断线后一段时间,可配置,一般是5分钟 /// /// public delegate void PlayerOfflineEvent(PlayerOnGame player); public PlayerOfflineEvent TriggerPlayerOffline; /// /// 重新上线 /// /// public delegate void PlayerReOnlineEvent(PlayerOnGame player); public PlayerReOnlineEvent TriggerPlayerReOnline; /// /// 出生 /// public delegate void PlayerBornEvent(PlayerOnGame player); public PlayerBornEvent TriggerPlayerBorn; /// /// 新的一天开始 /// /// public delegate void NewDayStartEvent(PlayerOnGame player, bool notifyClient); public NewDayStartEvent TriggerNewDayStart; /// /// 每日统计数据改变 /// /// public delegate void DailyStatisticsChangedEvent(PlayerOnGame player, int statid, long newValue, long change); public DailyStatisticsChangedEvent TriggerDailyStatisticsChanged; /// /// 总共统计数据改变 /// /// public delegate void TotalStatisticsChangedEvent(PlayerOnGame player, int statid, long newValue, long change); public TotalStatisticsChangedEvent TriggerTotalStatisticsChanged; /// /// 服务器配置被重新加载 /// /// public delegate void ReloadConfigEvent(string excelConfigFile); public ReloadConfigEvent TriggerReloadConfig; /// /// 充值成功,payDiamond表示充值的钻石(原价,附送的不算) /// public delegate void PlayerPaySuccessEvent(PlayerOnGame player, int itemId, uint payDiamond, uint addDiamond, uint money, bool isPlayerFirstPay, long payTime3rd, ref CSPayGoogleSuccessRes csRes); public PlayerPaySuccessEvent TriggerPlayerPaySuccess; /// /// 升玩家等级 /// /// public delegate void PlayerAddLevel(PlayerOnGame player); public PlayerAddLevel TriggerPlayerAddLevel; public delegate void Addhero(PlayerOnGame player, int nHereDescID, int nNewStarLev, string reason); public Addhero TriggerAddhero; /// /// 任务交付成功后 /// /// /// public delegate void TaskexHandoverComplete(PlayerOnGame player, QuestEXDesc desc); public TaskexHandoverComplete TriggerTaskexHandoverComplete; public delegate void OnDataVersionChange(PlayerOnGame player); public OnDataVersionChange TriggerDataVersionChange; public delegate void OnHeroPowerChanged(PlayerOnGame player, long power); public OnHeroPowerChanged TriggerHeroPowerChanged; // 赠送好友礼物 public delegate void OnSendFriendGift(PlayerOnGame player, int num); public OnSendFriendGift TriggerSendFriendGift; public delegate void ClientUseGM(PlayerOnGame player); public ClientUseGM OnClientUseGM; public delegate void OnSystemUnlock(PlayerOnGame player, int id); public OnSystemUnlock TriggerSystemUnlock; /// /// 收集角色属性 /// /// /// public delegate void GetPlayerModuleProps(ref DBRoleData roleDat, RoleProp roleProp); public GetPlayerModuleProps TriggerGetPlayerModuleProps; public void RegisterAllEventHandler() { //online // 修改状态作为第一个online事件 TriggerPlayerOnline += GameServerUtils.GetPlayerDataSvc().OnPlayerOnline; TriggerPlayerOnline += PatchSvc.PatchAll; TriggerPlayerOnline += SystemUnlockEvent.OnRoleEnter; TriggerPlayerOnline += MailSvc.OnPlayerOnline; TriggerPlayerOnline += PayCommSvc.OnPlayerOnline; TriggerPlayerOnline += ClientBitFlagSvc.OnPlayerOnline; TriggerPlayerOnline += PlayerTickSvc.OnPlayerOnline; TriggerPlayerOnline += MarketShopEvent.OnPlayerOnline; TriggerPlayerOnline += TaskEXEvent.TriggerPlayerLogin; TriggerPlayerOnline += PlayerDataSvc.WritePlayerServer; TriggerPlayerOnline += StatisticsOp.OnPlayerOnline; TriggerPlayerOnline += LoginHandler.OnPlayerOnlineSyncPlayerInfoToOpSvr; TriggerPlayerOnline += EquipmentSvc.OnPlayerOnline; TriggerPlayerOnline += PlayerDataSvc.OnRoleEnter; TriggerPlayerOnline += ChapterSvc.OnEnter; TriggerPlayerOnline += WxFriendRankSvc.OnPlayerOnLine; TriggerPlayerOnline += SkinSvc.OnPlayerOnline; TriggerPlayerOnline += PopPackageSvc.OnRoleEnter; // 运营日志上报放到最后一个事件, 其他事件加到该事件前面 TriggerPlayerOnline += OperationLogSvc.OnPlayerOnline; TriggerPlayerOnline += ReturnSvc.OnPlayerOnline; //reonline TriggerPlayerReOnline += GameServerUtils.GetPlayerDataSvc().OnPlayerReOnline; TriggerPlayerReOnline += PatchSvc.PatchAll; TriggerPlayerReOnline += TaskEXEvent.TriggerPlayerLogin; TriggerPlayerReOnline += SystemUnlockEvent.OnRoleEnter; TriggerPlayerReOnline += BeginnerGuideEvent.OnRoleEnter; TriggerPlayerReOnline += PlayerDataSvc.OnRoleEnter; TriggerPlayerReOnline += ActivityTick.OnRoleEnter; TriggerPlayerReOnline += ChapterSvc.OnReEnter; TriggerPlayerReOnline += RecruitSvc.OnEnter; TriggerPlayerReOnline += FistPaymentEvent.OnEnter; TriggerPlayerReOnline += WingSvc.OnEnter; TriggerPlayerReOnline += PopPackageSvc.OnRoleEnter; //offline TriggerPlayerOffline += GameServerUtils.GetPlayerDataSvc().OnPlayerOffline; TriggerPlayerOffline += ChapterSvc.OnOffline; //TriggerPlayerOnlineAfter TriggerPlayerOnlineAfter += SystemUnlockEvent.OnRoleEnter; TriggerPlayerOnlineAfter += BeginnerGuideEvent.OnRoleEnter; TriggerPlayerOnlineAfter += HomeAdEvent.OnRoleEnter; TriggerPlayerOnlineAfter += ActivityTick.OnRoleEnter; TriggerPlayerOnlineAfter += RecruitSvc.OnEnter; TriggerPlayerOnlineAfter += FistPaymentEvent.OnEnter; TriggerPlayerOnlineAfter += WingSvc.OnEnter; TriggerPlayerOnlineAfter += FreeRewardSvc.OnEnter; TriggerPlayerOnlineAfter += PopPackageSvc.OnRoleEnter; //born TriggerPlayerBorn += TaskEXEvent.TiggerPlayerBornEvent; // 要保证任务的出生委托最先执行 TriggerPlayerBorn += GameServerUtils.GetPlayerDataSvc().OnPlayerBorn; TriggerPlayerBorn += IconFrameSvc.TiggerPlayerBornEvent; TriggerPlayerBorn += SystemUnlockEvent.OnPlayerBorn; TriggerPlayerBorn += FistPaymentEvent.OnPlayerBorn; TriggerPlayerBorn += ChapterSvc.OnPlayerBorn; TriggerPlayerBorn += WingSvc.OnPlayerBorn; TriggerPlayerBorn += CBattleSvc.OnBurn; TriggerPlayerBorn += TalentSvc.OnPlayerBorn; TriggerPlayerBorn += PlayerPresetSvc.PlayerBorn; TriggerPlayerBorn += FreeRewardSvc.PlayerBorn; //newday TriggerNewDayStart += HomeAdEvent.OnNewDay; TriggerNewDayStart += TaskEXSvc.OnNewDay; TriggerNewDayStart += PayCommSvc.OnNewDayStart; TriggerNewDayStart += TaskEXEvent.TiggerNewDayStart; TriggerNewDayStart += HomeAdEvent.OnNewDayStart; TriggerNewDayStart += MarketShopSvc.OnNewDayStart; TriggerNewDayStart += PlayerDataSvc.OnNewDay; TriggerNewDayStart += SystemUnlockEvent.OnNewDay; TriggerNewDayStart += CBattleSvc.OnNewDay; TriggerNewDayStart += FreeRewardSvc.OnNewDay; TriggerNewDayStart += PopPackageSvc.OnNewDayStart; //TriggerFocusfacebook //TriggerDailyStatisticsChanged TriggerDailyStatisticsChanged += FriendSvc.OnDailyStatisticsChanged; //TriggerTotalStatisticsChanged TriggerTotalStatisticsChanged += PayCommSvc.OnTotalStatisticsChanged; //TriggerPlayerSuccess TriggerPlayerPaySuccess += TaskEXEvent.TriggerPaySuccess; TriggerPlayerPaySuccess += HomeAdEvent.OnBuySuccess; TriggerPlayerPaySuccess += MonthlyCardSvc.OnBuySuccess; TriggerPlayerPaySuccess += PlayerDataSvc.OnBuySuccess; TriggerPlayerPaySuccess += BattlePassSvc.OnBuySuccess; TriggerPlayerPaySuccess += SignSvc.OnBuySuccess; TriggerPlayerPaySuccess += FistPaymentEvent.OnBuySuccess; //升级 TriggerPlayerAddLevel += GameServerUtils.GetPlayerDataSvc().OnPlayerAddLevel; TriggerPlayerAddLevel += SystemUnlockEvent.OnLevelChange; TriggerPlayerAddLevel += PayCommSvc.OnPlayerLevelUp; TriggerPlayerAddLevel += MarketShopEvent.OnPlayerLevelUp; TriggerPlayerAddLevel += PlayerNotify.NotifyWorldPlayerRolebaseChangeUpdate; //通知union TriggerPlayerAddLevel += LevelSvc.OnLevelUp; //vip等级 //英雄强化 //任务事件 //副本事件(主要是首次通关) TriggerAddhero += PayCommSvc.OnAddHero; TriggerTaskexHandoverComplete += SystemUnlockEvent.OnMissionComplete; //使用GM OnClientUseGM += SystemUnlockEvent.OnUseGM; TriggerSystemUnlock += MarketShopEvent.OnSystemUnlock; TriggerSystemUnlock += PlayerDataSvc.OnSystemUnlock; TriggerSystemUnlock += ActivityTick.OnSystemUnlock; TriggerSystemUnlock += WingSvc.OnSystemUnlock; //注意先后顺序 TriggerDataVersionChange += PlayerDataVersionUpdate.UpdateVersionAll; //收集属性 TriggerGetPlayerModuleProps += EquipmentSvc.CollectEquipProp; TriggerGetPlayerModuleProps += LevelSvc.CalcLevelProps; TriggerGetPlayerModuleProps += SkinSvc.CalcSkinProps; TriggerGetPlayerModuleProps += GemSvc.CollectGemProp; TriggerGetPlayerModuleProps += GmCmdSvc.CollectGmProp; TriggerGetPlayerModuleProps += MonthlyCardSvc.CollectMonthlyProp; TriggerGetPlayerModuleProps += WingSvc.CollectWingProp; TriggerGetPlayerModuleProps += TalentPeakSvc.CollectProp; } } }