From 0672d839bb5ab8f92a93f529c8b9f8f40694690d Mon Sep 17 00:00:00 2001 From: milimoe <110188673+milimoe@users.noreply.github.com> Date: Thu, 7 Dec 2023 00:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0GamingModel=EF=BC=8C=E8=A1=A5?= =?UTF-8?q?=E5=85=85GamingEventHandler=20(#67)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Api/Utility/Implement.cs | 1 - Controller/RunTimeController.cs | 24 +- Docs/FunGame.Core.xml | 48 +- Entity/Item/ActiveItem.cs | 2 +- Interface/Base/IGameMode.cs | 4 +- Interface/Event/GamingEventHandlers.cs | 186 ++++--- Interface/Event/GamingEvents.cs | 163 +++--- Interface/General/IGameModeSupported.cs | 11 - Interface/General/IServer.cs | 6 +- Library/Common/Addon/GameMode.cs | 376 +++++++++----- Library/Common/JsonConverter/RoomConverter.cs | 6 +- Library/Constant/ConstantSet.cs | 3 +- Library/Constant/TypeEnum.cs | 5 +- Model/Gaming.cs | 486 ++++++++++++++++++ 14 files changed, 994 insertions(+), 327 deletions(-) delete mode 100644 Interface/General/IGameModeSupported.cs create mode 100644 Model/Gaming.cs diff --git a/Api/Utility/Implement.cs b/Api/Utility/Implement.cs index 30c4bbf..b3a9e5b 100644 --- a/Api/Utility/Implement.cs +++ b/Api/Utility/Implement.cs @@ -43,7 +43,6 @@ namespace Milimoe.FunGame.Core.Api.Utility { InterfaceType.IClient => InterfaceSet.Type.IClient, InterfaceType.IServer => InterfaceSet.Type.IServer, - InterfaceType.IGameModeSupported => InterfaceSet.Type.IGameModeSupported, _ => "" }; } diff --git a/Controller/RunTimeController.cs b/Controller/RunTimeController.cs index 71719ea..1357a52 100644 --- a/Controller/RunTimeController.cs +++ b/Controller/RunTimeController.cs @@ -125,7 +125,7 @@ namespace Milimoe.FunGame.Core.Controller } ConnectArgs.Clear(); - ConnectArgs = [ result, msg, servername, notice ]; + ConnectArgs = [result, msg, servername, notice]; AfterConnect(ConnectArgs); // 允许修改数组中的result,强行改变连接的结果 @@ -293,7 +293,7 @@ namespace Milimoe.FunGame.Core.Controller { return _Socket.ReceiveArray(); } - return Array.Empty(); + return []; } /// @@ -371,61 +371,61 @@ namespace Milimoe.FunGame.Core.Controller } /// - /// 客户端接收到服务器断开连接的通知后的处理方法 + /// 客户端接收服务器断开连接的通知 /// /// protected abstract void SocketHandler_Disconnect(SocketObject ServerMessage); /// - /// 客户端接收到服务器系统消息后的处理方法 + /// 客户端接收并处理服务器系统消息 /// /// protected abstract void SocketHandler_System(SocketObject ServerMessage); /// - /// 客户端接收到服务器心跳后的处理方法 + /// 客户端接收并处理服务器心跳 /// /// protected abstract void SocketHandler_HeartBeat(SocketObject ServerMessage); /// - /// 客户端接收到强制退出登录的通知后的处理方法 + /// 客户端接收强制退出登录的通知 /// /// protected abstract void SocketHandler_ForceLogout(SocketObject ServerMessage); /// - /// 客户端接收到聊天信息后的处理方法 + /// 客户端接收并处理聊天信息 /// /// protected abstract void SocketHandler_Chat(SocketObject ServerMessage); /// - /// 客户端接收到更换房主后的处理方法 + /// 客户端接收并处理更换房主信息 /// /// protected abstract void SocketHandler_UpdateRoomMaster(SocketObject ServerMessage); /// - /// 客户端接收到匹配房间成功后的处理方法 + /// 客户端接收并处理匹配房间成功信息 /// /// protected abstract void SocketHandler_MatchRoom(SocketObject ServerMessage); /// - /// 客户端接收到开始游戏信息后的处理方法 + /// 客户端接收并处理开始游戏信息 /// /// protected abstract void SocketHandler_StartGame(SocketObject ServerMessage); /// - /// 客户端接收到游戏结束信息后的处理方法 + /// 客户端接收并处理游戏结束信息 /// /// protected abstract void SocketHandler_EndGame(SocketObject ServerMessage); /// - /// 客户端接收到局内消息后的处理方法 + /// 客户端接收并处理局内消息 /// /// protected abstract void SocketHandler_Gaming(SocketObject ServerMessage); diff --git a/Docs/FunGame.Core.xml b/Docs/FunGame.Core.xml index f51c33a..16a4b25 100644 --- a/Docs/FunGame.Core.xml +++ b/Docs/FunGame.Core.xml @@ -1011,61 +1011,61 @@ - 客户端接收到服务器断开连接的通知后的处理方法 + 客户端接收服务器断开连接的通知 - 客户端接收到服务器系统消息后的处理方法 + 客户端接收并处理服务器系统消息 - 客户端接收到服务器心跳后的处理方法 + 客户端接收并处理服务器心跳 - 客户端接收到强制退出登录的通知后的处理方法 + 客户端接收强制退出登录的通知 - 客户端接收到聊天信息后的处理方法 + 客户端接收并处理聊天信息 - 客户端接收到更换房主后的处理方法 + 客户端接收并处理更换房主信息 - 客户端接收到匹配房间成功后的处理方法 + 客户端接收并处理匹配房间成功信息 - 客户端接收到开始游戏信息后的处理方法 + 客户端接收并处理开始游戏信息 - 客户端接收到游戏结束信息后的处理方法 + 客户端接收并处理游戏结束信息 - 客户端接收到局内消息后的处理方法 + 客户端接收并处理局内消息 @@ -1153,9 +1153,9 @@ 这是最基本的接口,要求客户端实现 - + - 服务端和客户端都应该实现这个接口,用于初始化支持的Mod列表 + 服务器需要实现此接口 @@ -1984,6 +1984,30 @@ 自动登录的秘钥 + + + 游戏局内类 + 客户端需要使用创建此类单例 + + + + + 传入游戏所需的参数,构造一个Gaming实例 + + + + + + + + + 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 + 客户端也可以参照此方法自行实现 + 此方法目的是为了触发 的局内事件实现 + + + + 服务器IP地址 diff --git a/Entity/Item/ActiveItem.cs b/Entity/Item/ActiveItem.cs index 6349ada..69a3d06 100644 --- a/Entity/Item/ActiveItem.cs +++ b/Entity/Item/ActiveItem.cs @@ -22,7 +22,7 @@ namespace Milimoe.FunGame.Core.Entity { return new(); } - + internal static ActiveItem GetInstance(int id, string name) { return new(id, name); diff --git a/Interface/Base/IGameMode.cs b/Interface/Base/IGameMode.cs index 07ebd2b..3d84e97 100644 --- a/Interface/Base/IGameMode.cs +++ b/Interface/Base/IGameMode.cs @@ -1,8 +1,8 @@ namespace Milimoe.FunGame.Core.Interface { public interface IGameMode : IAddon, IGamingConnectEventHandler, IGamingDisconnectEventHandler, IGamingReconnectEventHandler, IGamingBanCharacterEventHandler, IGamingPickCharacterEventHandler, - IGamingRandomEventHandler, IGamingMoveEventHandler, IGamingAttackEventHandler, IGamingSkillEventHandler, IGamingItemEventHandler, IGamingMagicEventHandler, IGamingBuyEventHandler, - IGamingSuperSkillEventHandler, IGamingPauseEventHandler, IGamingUnpauseEventHandler, IGamingSurrenderEventHandler, IGamingUpdateInfoEventHandler + IGamingRandomEventHandler, IGamingRoundEventHandler, IGamingLevelUpEventHandler, IGamingMoveEventHandler, IGamingAttackEventHandler, IGamingSkillEventHandler, IGamingItemEventHandler, IGamingMagicEventHandler, + IGamingBuyEventHandler, IGamingSuperSkillEventHandler, IGamingPauseEventHandler, IGamingUnpauseEventHandler, IGamingSurrenderEventHandler, IGamingUpdateInfoEventHandler, IGamingPunishEventHandler { public abstract bool StartUI(params object[] args); } diff --git a/Interface/Event/GamingEventHandlers.cs b/Interface/Event/GamingEventHandlers.cs index 6f2e144..15f67cf 100644 --- a/Interface/Event/GamingEventHandlers.cs +++ b/Interface/Event/GamingEventHandlers.cs @@ -1,4 +1,5 @@ -using Milimoe.FunGame.Core.Library.Common.Addon; +using System.Collections; +using Milimoe.FunGame.Core.Library.Common.Addon; using Milimoe.FunGame.Core.Library.Common.Event; namespace Milimoe.FunGame.Core.Interface @@ -8,10 +9,10 @@ namespace Milimoe.FunGame.Core.Interface /// public interface IGamingEventHandler { - public delegate void BeforeEventHandler(object sender, GamingEventArgs e); - public delegate void AfterEventHandler(object sender, GamingEventArgs e); - public delegate void SucceedEventHandler(object sender, GamingEventArgs e); - public delegate void FailedEventHandler(object sender, GamingEventArgs e); + public delegate void BeforeEventHandler(object sender, GamingEventArgs e, Hashtable data); + public delegate void AfterEventHandler(object sender, GamingEventArgs e, Hashtable data); + public delegate void SucceedEventHandler(object sender, GamingEventArgs e, Hashtable data); + public delegate void FailedEventHandler(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingConnectEventHandler : IGamingEventHandler @@ -21,10 +22,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingConnect; public event FailedEventHandler? FailedGamingConnect; - public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e); - public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e); - public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingDisconnectEventHandler : IGamingEventHandler @@ -34,10 +35,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingDisconnect; public event FailedEventHandler? FailedGamingDisconnect; - public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e); - public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e); - public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingReconnectEventHandler : IGamingEventHandler @@ -47,10 +48,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingReconnect; public event FailedEventHandler? FailedGamingReconnect; - public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e); - public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e); - public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingBanCharacterEventHandler : IGamingEventHandler @@ -60,10 +61,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingBanCharacter; public event FailedEventHandler? FailedGamingBanCharacter; - public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingPickCharacterEventHandler : IGamingEventHandler @@ -73,10 +74,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingPickCharacter; public event FailedEventHandler? FailedGamingPickCharacter; - public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingRandomEventHandler : IGamingEventHandler @@ -86,10 +87,36 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingRandom; public event FailedEventHandler? FailedGamingRandom; - public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e); - public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e); - public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingRoundEventHandler : IGamingEventHandler + { + public event BeforeEventHandler? BeforeGamingRound; + public event AfterEventHandler? AfterGamingRound; + public event SucceedEventHandler? SucceedGamingRound; + public event FailedEventHandler? FailedGamingRound; + + public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingLevelUpEventHandler : IGamingEventHandler + { + public event BeforeEventHandler? BeforeGamingLevelUp; + public event AfterEventHandler? AfterGamingLevelUp; + public event SucceedEventHandler? SucceedGamingLevelUp; + public event FailedEventHandler? FailedGamingLevelUp; + + public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingMoveEventHandler : IGamingEventHandler @@ -99,10 +126,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingMove; public event FailedEventHandler? FailedGamingMove; - public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e); - public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e); - public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingAttackEventHandler : IGamingEventHandler @@ -112,10 +139,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingAttack; public event FailedEventHandler? FailedGamingAttack; - public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e); - public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e); - public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSkillEventHandler : IGamingEventHandler @@ -125,10 +152,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSkill; public event FailedEventHandler? FailedGamingSkill; - public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e); - public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e); - public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingItemEventHandler : IGamingEventHandler @@ -138,10 +165,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingItem; public event FailedEventHandler? FailedGamingItem; - public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e); - public void OnAfterGamingItemEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e); - public void OnFailedGamingItemEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingMagicEventHandler : IGamingEventHandler @@ -151,10 +178,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingMagic; public event FailedEventHandler? FailedGamingMagic; - public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e); - public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e); - public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingBuyEventHandler : IGamingEventHandler @@ -164,10 +191,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingBuy; public event FailedEventHandler? FailedGamingBuy; - public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e); - public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e); - public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSuperSkillEventHandler : IGamingEventHandler @@ -177,10 +204,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSuperSkill; public event FailedEventHandler? FailedGamingSuperSkill; - public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingPauseEventHandler : IGamingEventHandler @@ -190,10 +217,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingPause; public event FailedEventHandler? FailedGamingPause; - public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e); - public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e); - public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingUnpauseEventHandler : IGamingEventHandler @@ -203,10 +230,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingUnpause; public event FailedEventHandler? FailedGamingUnpause; - public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e); - public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e); - public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSurrenderEventHandler : IGamingEventHandler @@ -216,10 +243,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSurrender; public event FailedEventHandler? FailedGamingSurrender; - public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e); - public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e); - public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingUpdateInfoEventHandler : IGamingEventHandler @@ -229,9 +256,22 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingUpdateInfo; public event FailedEventHandler? FailedGamingUpdateInfo; - public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e); + public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingPunishEventHandler : IGamingEventHandler + { + public event BeforeEventHandler? BeforeGamingPunish; + public event AfterEventHandler? AfterGamingPunish; + public event SucceedEventHandler? SucceedGamingPunish; + public event FailedEventHandler? FailedGamingPunish; + + public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); } } diff --git a/Interface/Event/GamingEvents.cs b/Interface/Event/GamingEvents.cs index 9dd10be..871ae84 100644 --- a/Interface/Event/GamingEvents.cs +++ b/Interface/Event/GamingEvents.cs @@ -1,141 +1,166 @@ -using Milimoe.FunGame.Core.Library.Common.Event; +using System.Collections; +using Milimoe.FunGame.Core.Library.Common.Event; // 模组需要实现什么事件就继承什么接口 namespace Milimoe.FunGame.Core.Interface { public interface IGamingConnectEvent { - public void BeforeGamingConnectEvent(object sender, GamingEventArgs e); - public void AfterGamingConnectEvent(object sender, GamingEventArgs e); - public void SucceedGamingConnectEvent(object sender, GamingEventArgs e); - public void FailedGamingConnectEvent(object sender, GamingEventArgs e); + public void BeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingDisconnectEvent { - public void BeforeGamingDisconnectEvent(object sender, GamingEventArgs e); - public void AfterGamingDisconnectEvent(object sender, GamingEventArgs e); - public void SucceedGamingDisconnectEvent(object sender, GamingEventArgs e); - public void FailedGamingDisconnectEvent(object sender, GamingEventArgs e); + public void BeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingReconnectEvent { - public void BeforeGamingReconnectEvent(object sender, GamingEventArgs e); - public void AfterGamingReconnectEvent(object sender, GamingEventArgs e); - public void SucceedGamingReconnectEvent(object sender, GamingEventArgs e); - public void FailedGamingReconnectEvent(object sender, GamingEventArgs e); + public void BeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingBanCharacterEvent { - public void BeforeGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void AfterGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void SucceedGamingBanCharacterEvent(object sender, GamingEventArgs e); - public void FailedGamingBanCharacterEvent(object sender, GamingEventArgs e); + public void BeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingPickCharacterEvent { - public void BeforeGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void AfterGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void SucceedGamingPickCharacterEvent(object sender, GamingEventArgs e); - public void FailedGamingPickCharacterEvent(object sender, GamingEventArgs e); + public void BeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingRandomEvent { - public void BeforeGamingRandomEvent(object sender, GamingEventArgs e); - public void AfterGamingRandomEvent(object sender, GamingEventArgs e); - public void SucceedGamingRandomEvent(object sender, GamingEventArgs e); - public void FailedGamingRandomEvent(object sender, GamingEventArgs e); + public void BeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingLevelUpEvent + { + public void BeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingRoundEvent + { + public void BeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingMoveEvent { - public void BeforeGamingMoveEvent(object sender, GamingEventArgs e); - public void AfterGamingMoveEvent(object sender, GamingEventArgs e); - public void SucceedGamingMoveEvent(object sender, GamingEventArgs e); - public void FailedGamingMoveEvent(object sender, GamingEventArgs e); + public void BeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingAttackEvent { - public void BeforeGamingAttackEvent(object sender, GamingEventArgs e); - public void AfterGamingAttackEvent(object sender, GamingEventArgs e); - public void SucceedGamingAttackEvent(object sender, GamingEventArgs e); - public void FailedGamingAttackEvent(object sender, GamingEventArgs e); + public void BeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSkillEvent { - public void BeforeGamingSkillEvent(object sender, GamingEventArgs e); - public void AfterGamingSkillEvent(object sender, GamingEventArgs e); - public void SucceedGamingSkillEvent(object sender, GamingEventArgs e); - public void FailedGamingSkillEvent(object sender, GamingEventArgs e); + public void BeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingItemEvent { - public void BeforeGamingItemEvent(object sender, GamingEventArgs e); - public void AfterGamingItemEvent(object sender, GamingEventArgs e); - public void SucceedGamingItemEvent(object sender, GamingEventArgs e); - public void FailedGamingItemEvent(object sender, GamingEventArgs e); + public void BeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingMagicEvent { - public void BeforeGamingMagicEvent(object sender, GamingEventArgs e); - public void AfterGamingMagicEvent(object sender, GamingEventArgs e); - public void SucceedGamingMagicEvent(object sender, GamingEventArgs e); - public void FailedGamingMagicEvent(object sender, GamingEventArgs e); + public void BeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingBuyEvent { - public void BeforeGamingBuyEvent(object sender, GamingEventArgs e); - public void AfterGamingBuyEvent(object sender, GamingEventArgs e); - public void SucceedGamingBuyEvent(object sender, GamingEventArgs e); - public void FailedGamingBuyEvent(object sender, GamingEventArgs e); + public void BeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSuperSkillEvent { - public void BeforeGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void AfterGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void SucceedGamingSuperSkillEvent(object sender, GamingEventArgs e); - public void FailedGamingSuperSkillEvent(object sender, GamingEventArgs e); + public void BeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingPauseEvent { - public void BeforeGamingPauseEvent(object sender, GamingEventArgs e); - public void AfterGamingPauseEvent(object sender, GamingEventArgs e); - public void SucceedGamingPauseEvent(object sender, GamingEventArgs e); - public void FailedGamingPauseEvent(object sender, GamingEventArgs e); + public void BeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingUnpauseEvent { - public void BeforeGamingUnpauseEvent(object sender, GamingEventArgs e); - public void AfterGamingUnpauseEvent(object sender, GamingEventArgs e); - public void SucceedGamingUnpauseEvent(object sender, GamingEventArgs e); - public void FailedGamingUnpauseEvent(object sender, GamingEventArgs e); + public void BeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingSurrenderEvent { - public void BeforeGamingSurrenderEvent(object sender, GamingEventArgs e); - public void AfterGamingSurrenderEvent(object sender, GamingEventArgs e); - public void SucceedGamingSurrenderEvent(object sender, GamingEventArgs e); - public void FailedGamingSurrenderEvent(object sender, GamingEventArgs e); + public void BeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); } public interface IGamingUpdateInfoEvent { - public void BeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void AfterGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void SucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e); - public void FailedGamingUpdateInfoEvent(object sender, GamingEventArgs e); + public void BeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); + } + + public interface IGamingPunishEvent + { + public void BeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void AfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void SucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); + public void FailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); } } diff --git a/Interface/General/IGameModeSupported.cs b/Interface/General/IGameModeSupported.cs deleted file mode 100644 index 79e368e..0000000 --- a/Interface/General/IGameModeSupported.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Milimoe.FunGame.Core.Interface -{ - /// - /// 服务端和客户端都应该实现这个接口,用于初始化支持的Mod列表 - /// - public interface IGameModeSupported - { - public string[] GameModeList { get; } - public string[] GameMapList { get; } - } -} diff --git a/Interface/General/IServer.cs b/Interface/General/IServer.cs index cc19f1e..b544616 100644 --- a/Interface/General/IServer.cs +++ b/Interface/General/IServer.cs @@ -1,7 +1,11 @@ namespace Milimoe.FunGame.Core.Interface { + /// + /// 服务器需要实现此接口 + /// public interface IServer { - + public string[] GameModeList { get; } + public string[] GameMapList { get; } } } diff --git a/Library/Common/Addon/GameMode.cs b/Library/Common/Addon/GameMode.cs index 6a6ef47..7e1c199 100644 --- a/Library/Common/Addon/GameMode.cs +++ b/Library/Common/Addon/GameMode.cs @@ -1,4 +1,5 @@ -using Milimoe.FunGame.Core.Api.Transmittal; +using System.Collections; +using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Interface; using Milimoe.FunGame.Core.Library.Common.Event; using Milimoe.FunGame.Core.Library.Constant; @@ -32,7 +33,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// 默认地图 /// public abstract string DefaultMap { get; } - + /// /// 模组所使用的地图 /// @@ -191,6 +192,24 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon FailedGamingRandom += bind.FailedGamingRandomEvent; } + if (this is IGamingRoundEvent) + { + IGamingRoundEvent bind = (IGamingRoundEvent)this; + BeforeGamingRound += bind.BeforeGamingRoundEvent; + AfterGamingRound += bind.AfterGamingRoundEvent; + SucceedGamingRound += bind.SucceedGamingRoundEvent; + FailedGamingRound += bind.FailedGamingRoundEvent; + } + + if (this is IGamingLevelUpEvent) + { + IGamingLevelUpEvent bind = (IGamingLevelUpEvent)this; + BeforeGamingLevelUp += bind.BeforeGamingLevelUpEvent; + AfterGamingLevelUp += bind.AfterGamingLevelUpEvent; + SucceedGamingLevelUp += bind.SucceedGamingLevelUpEvent; + FailedGamingLevelUp += bind.FailedGamingLevelUpEvent; + } + if (this is IGamingMoveEvent) { IGamingMoveEvent bind = (IGamingMoveEvent)this; @@ -289,6 +308,15 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon SucceedGamingUpdateInfo += bind.SucceedGamingUpdateInfoEvent; FailedGamingUpdateInfo += bind.FailedGamingUpdateInfoEvent; } + + if (this is IGamingPunishEvent) + { + IGamingPunishEvent bind = (IGamingPunishEvent)this; + BeforeGamingPunish += bind.BeforeGamingPunishEvent; + AfterGamingPunish += bind.AfterGamingPunishEvent; + SucceedGamingPunish += bind.SucceedGamingPunishEvent; + FailedGamingPunish += bind.FailedGamingPunishEvent; + } } public event IGamingEventHandler.BeforeEventHandler? BeforeGamingConnect; @@ -315,6 +343,14 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public event IGamingEventHandler.AfterEventHandler? AfterGamingRandom; public event IGamingEventHandler.SucceedEventHandler? SucceedGamingRandom; public event IGamingEventHandler.FailedEventHandler? FailedGamingRandom; + public event IGamingEventHandler.BeforeEventHandler? BeforeGamingRound; + public event IGamingEventHandler.AfterEventHandler? AfterGamingRound; + public event IGamingEventHandler.SucceedEventHandler? SucceedGamingRound; + public event IGamingEventHandler.FailedEventHandler? FailedGamingRound; + public event IGamingEventHandler.BeforeEventHandler? BeforeGamingLevelUp; + public event IGamingEventHandler.AfterEventHandler? AfterGamingLevelUp; + public event IGamingEventHandler.SucceedEventHandler? SucceedGamingLevelUp; + public event IGamingEventHandler.FailedEventHandler? FailedGamingLevelUp; public event IGamingEventHandler.BeforeEventHandler? BeforeGamingMove; public event IGamingEventHandler.AfterEventHandler? AfterGamingMove; public event IGamingEventHandler.SucceedEventHandler? SucceedGamingMove; @@ -359,345 +395,409 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public event IGamingEventHandler.AfterEventHandler? AfterGamingUpdateInfo; public event IGamingEventHandler.SucceedEventHandler? SucceedGamingUpdateInfo; public event IGamingEventHandler.FailedEventHandler? FailedGamingUpdateInfo; + public event IGamingEventHandler.BeforeEventHandler? BeforeGamingPunish; + public event IGamingEventHandler.AfterEventHandler? AfterGamingPunish; + public event IGamingEventHandler.SucceedEventHandler? SucceedGamingPunish; + public event IGamingEventHandler.FailedEventHandler? FailedGamingPunish; - public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingConnect?.Invoke(sender, e); + BeforeGamingConnect?.Invoke(sender, e, data); } - public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e) + public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingConnect?.Invoke(sender, e); + AfterGamingConnect?.Invoke(sender, e, data); } - public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingConnect?.Invoke(sender, e); + SucceedGamingConnect?.Invoke(sender, e, data); } - public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e) + public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingConnect?.Invoke(sender, e); + FailedGamingConnect?.Invoke(sender, e, data); } - public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingDisconnect?.Invoke(sender, e); + BeforeGamingDisconnect?.Invoke(sender, e, data); } - public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e) + public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingDisconnect?.Invoke(sender, e); + AfterGamingDisconnect?.Invoke(sender, e, data); } - public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingDisconnect?.Invoke(sender, e); + SucceedGamingDisconnect?.Invoke(sender, e, data); } - public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e) + public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingDisconnect?.Invoke(sender, e); + FailedGamingDisconnect?.Invoke(sender, e, data); } - public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingReconnect?.Invoke(sender, e); + BeforeGamingReconnect?.Invoke(sender, e, data); } - public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e) + public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingReconnect?.Invoke(sender, e); + AfterGamingReconnect?.Invoke(sender, e, data); } - public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingReconnect?.Invoke(sender, e); + SucceedGamingReconnect?.Invoke(sender, e, data); } - public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e) + public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingReconnect?.Invoke(sender, e); + FailedGamingReconnect?.Invoke(sender, e, data); } - public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingBanCharacter?.Invoke(sender, e); + BeforeGamingBanCharacter?.Invoke(sender, e, data); } - public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e) + public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingBanCharacter?.Invoke(sender, e); + AfterGamingBanCharacter?.Invoke(sender, e, data); } - public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingBanCharacter?.Invoke(sender, e); + SucceedGamingBanCharacter?.Invoke(sender, e, data); } - public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e) + public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingBanCharacter?.Invoke(sender, e); + FailedGamingBanCharacter?.Invoke(sender, e, data); } - public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingPickCharacter?.Invoke(sender, e); + BeforeGamingPickCharacter?.Invoke(sender, e, data); } - public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e) + public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingPickCharacter?.Invoke(sender, e); + AfterGamingPickCharacter?.Invoke(sender, e, data); } - public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingPickCharacter?.Invoke(sender, e); + SucceedGamingPickCharacter?.Invoke(sender, e, data); } - public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e) + public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingPickCharacter?.Invoke(sender, e); + FailedGamingPickCharacter?.Invoke(sender, e, data); } - public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingRandom?.Invoke(sender, e); + BeforeGamingRandom?.Invoke(sender, e, data); } - public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e) + public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingRandom?.Invoke(sender, e); + AfterGamingRandom?.Invoke(sender, e, data); } - public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingRandom?.Invoke(sender, e); + SucceedGamingRandom?.Invoke(sender, e, data); } - public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e) + public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingRandom?.Invoke(sender, e); + FailedGamingRandom?.Invoke(sender, e, data); } - public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingMove?.Invoke(sender, e); + BeforeGamingRound?.Invoke(sender, e, data); } - public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e) + public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingMove?.Invoke(sender, e); + AfterGamingRound?.Invoke(sender, e, data); } - public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingMove?.Invoke(sender, e); + SucceedGamingRound?.Invoke(sender, e, data); } - public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e) + public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingMove?.Invoke(sender, e); + FailedGamingRound?.Invoke(sender, e, data); } - public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingAttack?.Invoke(sender, e); + BeforeGamingLevelUp?.Invoke(sender, e, data); } - public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e) + public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingAttack?.Invoke(sender, e); + AfterGamingLevelUp?.Invoke(sender, e, data); } - public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingAttack?.Invoke(sender, e); + SucceedGamingLevelUp?.Invoke(sender, e, data); } - public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e) + public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingAttack?.Invoke(sender, e); + FailedGamingLevelUp?.Invoke(sender, e, data); } - public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingSkill?.Invoke(sender, e); + BeforeGamingMove?.Invoke(sender, e, data); } - public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e) + public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingSkill?.Invoke(sender, e); + AfterGamingMove?.Invoke(sender, e, data); } - public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingSkill?.Invoke(sender, e); + SucceedGamingMove?.Invoke(sender, e, data); } - public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e) + public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingSkill?.Invoke(sender, e); + FailedGamingMove?.Invoke(sender, e, data); } - public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingItem?.Invoke(sender, e); + BeforeGamingAttack?.Invoke(sender, e, data); } - public void OnAfterGamingItemEvent(object sender, GamingEventArgs e) + public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingItem?.Invoke(sender, e); + AfterGamingAttack?.Invoke(sender, e, data); } - public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingItem?.Invoke(sender, e); + SucceedGamingAttack?.Invoke(sender, e, data); } - public void OnFailedGamingItemEvent(object sender, GamingEventArgs e) + public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingItem?.Invoke(sender, e); + FailedGamingAttack?.Invoke(sender, e, data); } - public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingMagic?.Invoke(sender, e); + BeforeGamingSkill?.Invoke(sender, e, data); } - public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e) + public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingMagic?.Invoke(sender, e); + AfterGamingSkill?.Invoke(sender, e, data); } - public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingMagic?.Invoke(sender, e); + SucceedGamingSkill?.Invoke(sender, e, data); } - public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e) + public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingMagic?.Invoke(sender, e); + FailedGamingSkill?.Invoke(sender, e, data); } - public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingBuy?.Invoke(sender, e); + BeforeGamingItem?.Invoke(sender, e, data); } - public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e) + public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingBuy?.Invoke(sender, e); + AfterGamingItem?.Invoke(sender, e, data); } - public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingBuy?.Invoke(sender, e); + SucceedGamingItem?.Invoke(sender, e, data); } - public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e) + public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingBuy?.Invoke(sender, e); + FailedGamingItem?.Invoke(sender, e, data); } - public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingSuperSkill?.Invoke(sender, e); + BeforeGamingMagic?.Invoke(sender, e, data); } - public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e) + public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingSuperSkill?.Invoke(sender, e); + AfterGamingMagic?.Invoke(sender, e, data); } - public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingSuperSkill?.Invoke(sender, e); + SucceedGamingMagic?.Invoke(sender, e, data); } - public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e) + public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingSuperSkill?.Invoke(sender, e); + FailedGamingMagic?.Invoke(sender, e, data); } - public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingPause?.Invoke(sender, e); + BeforeGamingBuy?.Invoke(sender, e, data); } - public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e) + public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingPause?.Invoke(sender, e); + AfterGamingBuy?.Invoke(sender, e, data); } - public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingPause?.Invoke(sender, e); + SucceedGamingBuy?.Invoke(sender, e, data); } - public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e) + public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingPause?.Invoke(sender, e); + FailedGamingBuy?.Invoke(sender, e, data); } - public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingUnpause?.Invoke(sender, e); + BeforeGamingSuperSkill?.Invoke(sender, e, data); } - public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e) + public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingUnpause?.Invoke(sender, e); + AfterGamingSuperSkill?.Invoke(sender, e, data); } - public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingUnpause?.Invoke(sender, e); + SucceedGamingSuperSkill?.Invoke(sender, e, data); } - public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e) + public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingUnpause?.Invoke(sender, e); + FailedGamingSuperSkill?.Invoke(sender, e, data); } - public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingSurrender?.Invoke(sender, e); + BeforeGamingPause?.Invoke(sender, e, data); } - public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e) + public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingSurrender?.Invoke(sender, e); + AfterGamingPause?.Invoke(sender, e, data); } - public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingSurrender?.Invoke(sender, e); + SucceedGamingPause?.Invoke(sender, e, data); } - public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e) + public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingSurrender?.Invoke(sender, e); + FailedGamingPause?.Invoke(sender, e, data); } - public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e) + public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) { - BeforeGamingUpdateInfo?.Invoke(sender, e); + BeforeGamingUnpause?.Invoke(sender, e, data); } - public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e) + public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) { - AfterGamingUpdateInfo?.Invoke(sender, e); + AfterGamingUnpause?.Invoke(sender, e, data); } - public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e) + public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) { - SucceedGamingUpdateInfo?.Invoke(sender, e); + SucceedGamingUnpause?.Invoke(sender, e, data); } - public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e) + public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) { - FailedGamingUpdateInfo?.Invoke(sender, e); + FailedGamingUnpause?.Invoke(sender, e, data); + } + + public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + { + BeforeGamingSurrender?.Invoke(sender, e, data); + } + + public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + { + AfterGamingSurrender?.Invoke(sender, e, data); + } + + public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + { + SucceedGamingSurrender?.Invoke(sender, e, data); + } + + public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + { + FailedGamingSurrender?.Invoke(sender, e, data); + } + + public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + { + BeforeGamingUpdateInfo?.Invoke(sender, e, data); + } + + public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + { + AfterGamingUpdateInfo?.Invoke(sender, e, data); + } + + public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + { + SucceedGamingUpdateInfo?.Invoke(sender, e, data); + } + + public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + { + FailedGamingUpdateInfo?.Invoke(sender, e, data); + } + + public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + { + BeforeGamingPunish?.Invoke(sender, e, data); + } + + public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + { + AfterGamingPunish?.Invoke(sender, e, data); + } + + public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + { + SucceedGamingPunish?.Invoke(sender, e, data); + } + + public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + { + FailedGamingPunish?.Invoke(sender, e, data); } } } diff --git a/Library/Common/JsonConverter/RoomConverter.cs b/Library/Common/JsonConverter/RoomConverter.cs index 371ac3e..5e417de 100644 --- a/Library/Common/JsonConverter/RoomConverter.cs +++ b/Library/Common/JsonConverter/RoomConverter.cs @@ -53,11 +53,11 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case RoomQuery.Column_RoomType: room.RoomType = (RoomType)reader.GetInt64(); break; - + case RoomQuery.Column_GameMode: room.GameMode = reader.GetString() ?? ""; break; - + case RoomQuery.Column_GameMap: room.GameMap = reader.GetString() ?? ""; break; @@ -65,7 +65,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case RoomQuery.Column_RoomState: room.RoomState = (RoomState)reader.GetInt64(); break; - + case RoomQuery.Column_IsRank: room.IsRank = reader.GetBoolean(); break; diff --git a/Library/Constant/ConstantSet.cs b/Library/Constant/ConstantSet.cs index 0010f4c..cc46acc 100644 --- a/Library/Constant/ConstantSet.cs +++ b/Library/Constant/ConstantSet.cs @@ -12,7 +12,6 @@ namespace Milimoe.FunGame.Core.Library.Constant { public const string IClient = "IClientImpl"; public const string IServer = "IServerImpl"; - public const string IGameModeSupported = "IGameModeSupported"; } public class Method @@ -175,6 +174,7 @@ namespace Milimoe.FunGame.Core.Library.Constant public const string Unpause = "Gaming::Unpause"; public const string Surrender = "Gaming::Surrender"; public const string UpdateInfo = "Gaming::UpdateInfo"; + public const string Punish = "Gaming::Punish"; /// /// 获取Type的等效字符串 @@ -204,6 +204,7 @@ namespace Milimoe.FunGame.Core.Library.Constant GamingType.Unpause => Unpause, GamingType.Surrender => Surrender, GamingType.UpdateInfo => UpdateInfo, + GamingType.Punish => Punish, _ => None }; } diff --git a/Library/Constant/TypeEnum.cs b/Library/Constant/TypeEnum.cs index bce1d43..f74a027 100644 --- a/Library/Constant/TypeEnum.cs +++ b/Library/Constant/TypeEnum.cs @@ -27,8 +27,7 @@ namespace Milimoe.FunGame.Core.Library.Constant public enum InterfaceType { IClient, - IServer, - IGameModeSupported + IServer } /// @@ -104,7 +103,7 @@ namespace Milimoe.FunGame.Core.Library.Constant Room_GetRoomSettings, Room_GetRoomPlayerCount, Room_UpdateRoomMaster, - Gaming, + Gaming } /// diff --git a/Model/Gaming.cs b/Model/Gaming.cs new file mode 100644 index 0000000..6708568 --- /dev/null +++ b/Model/Gaming.cs @@ -0,0 +1,486 @@ +using System.Collections; +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Common.Addon; +using Milimoe.FunGame.Core.Library.Common.Event; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Milimoe.FunGame.Core.Model +{ + /// + /// 游戏局内类 + /// 客户端需要使用创建此类单例 + /// + public class Gaming + { + private readonly GameMode GameMode; + private readonly Room Room; + private readonly List Users; + private readonly List Characters; + private readonly GamingEventArgs EventArgs; + + private Gaming(GameMode GameMode, Room Room, List Users) + { + this.GameMode = GameMode; + this.Room = Room; + this.Users = Users; + Characters = []; + EventArgs = new(Room, Users, Characters); + } + + /// + /// 传入游戏所需的参数,构造一个Gaming实例 + /// + /// + /// + /// + /// + public static Gaming StartGame(GameMode GameMode, Room Room, List Users) + { + Gaming instance = new(GameMode, Room, Users); + // 新建线程来启动模组的界面 + TaskUtility.NewTask(() => + { + GameMode.StartUI(instance.EventArgs); + }); + return instance; + } + + /// + /// 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 + /// 客户端也可以参照此方法自行实现 + /// 此方法目的是为了触发 的局内事件实现 + /// + /// + /// + public void GamingHandler(GamingType GamingType, Hashtable Data) + { + switch (GamingType) + { + case GamingType.Connect: + Connect(Data); + break; + case GamingType.Disconnect: + Disconnect(Data); + break; + case GamingType.Reconnect: + Reconnect(Data); + break; + case GamingType.BanCharacter: + BanCharacter(Data); + break; + case GamingType.PickCharacter: + PickCharacter(Data); + break; + case GamingType.Random: + Random(Data); + break; + case GamingType.Round: + Round(Data); + break; + case GamingType.LevelUp: + LevelUp(Data); + break; + case GamingType.Move: + Move(Data); + break; + case GamingType.Attack: + Attack(Data); + break; + case GamingType.Skill: + Skill(Data); + break; + case GamingType.Item: + Item(Data); + break; + case GamingType.Magic: + Magic(Data); + break; + case GamingType.Buy: + Buy(Data); + break; + case GamingType.SuperSkill: + SuperSkill(Data); + break; + case GamingType.Pause: + Pause(Data); + break; + case GamingType.Unpause: + Unpause(Data); + break; + case GamingType.Surrender: + Surrender(Data); + break; + case GamingType.UpdateInfo: + UpdateInfo(Data); + break; + case GamingType.Punish: + Punish(Data); + break; + case GamingType.None: + default: + break; + } + } + + private void Connect(Hashtable data) + { + GameMode.OnBeforeGamingConnectEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingConnectEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingConnectEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingConnectEvent(this, EventArgs, data); + } + + private void Disconnect(Hashtable data) + { + GameMode.OnBeforeGamingDisconnectEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingDisconnectEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingDisconnectEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingDisconnectEvent(this, EventArgs, data); + } + + private void Reconnect(Hashtable data) + { + GameMode.OnBeforeGamingReconnectEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingReconnectEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingReconnectEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingReconnectEvent(this, EventArgs, data); + } + + private void BanCharacter(Hashtable data) + { + GameMode.OnBeforeGamingBanCharacterEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingBanCharacterEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingBanCharacterEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingBanCharacterEvent(this, EventArgs, data); + } + + private void PickCharacter(Hashtable data) + { + GameMode.OnBeforeGamingPickCharacterEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingPickCharacterEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingPickCharacterEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingPickCharacterEvent(this, EventArgs, data); + } + + private void Random(Hashtable data) + { + GameMode.OnBeforeGamingRandomEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingRandomEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingRandomEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingRandomEvent(this, EventArgs, data); + } + + private void Round(Hashtable data) + { + GameMode.OnBeforeGamingRoundEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingRoundEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingRoundEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingRoundEvent(this, EventArgs, data); + } + + private void LevelUp(Hashtable data) + { + GameMode.OnBeforeGamingLevelUpEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingLevelUpEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingLevelUpEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingLevelUpEvent(this, EventArgs, data); + } + + private void Move(Hashtable data) + { + GameMode.OnBeforeGamingMoveEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingMoveEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingMoveEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingMoveEvent(this, EventArgs, data); + } + + private void Attack(Hashtable data) + { + GameMode.OnBeforeGamingAttackEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingAttackEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingAttackEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingAttackEvent(this, EventArgs, data); + } + + private void Skill(Hashtable data) + { + GameMode.OnBeforeGamingSkillEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingSkillEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingSkillEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingSkillEvent(this, EventArgs, data); + } + + private void Item(Hashtable data) + { + GameMode.OnBeforeGamingItemEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingItemEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingItemEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingItemEvent(this, EventArgs, data); + } + + private void Magic(Hashtable data) + { + GameMode.OnBeforeGamingMagicEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingMagicEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingMagicEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingMagicEvent(this, EventArgs, data); + } + + private void Buy(Hashtable data) + { + GameMode.OnBeforeGamingBuyEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingBuyEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingBuyEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingBuyEvent(this, EventArgs, data); + } + + private void SuperSkill(Hashtable data) + { + GameMode.OnBeforeGamingSuperSkillEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingSuperSkillEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingSuperSkillEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingSuperSkillEvent(this, EventArgs, data); + } + + private void Pause(Hashtable data) + { + GameMode.OnBeforeGamingPauseEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingPauseEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingPauseEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingPauseEvent(this, EventArgs, data); + } + + private void Unpause(Hashtable data) + { + GameMode.OnBeforeGamingUnpauseEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingUnpauseEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingUnpauseEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingUnpauseEvent(this, EventArgs, data); + } + + private void Surrender(Hashtable data) + { + GameMode.OnBeforeGamingSurrenderEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingSurrenderEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingSurrenderEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingSurrenderEvent(this, EventArgs, data); + } + + private void UpdateInfo(Hashtable data) + { + GameMode.OnBeforeGamingUpdateInfoEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingUpdateInfoEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingUpdateInfoEvent(this, EventArgs, data); + } + + private void Punish(Hashtable data) + { + GameMode.OnBeforeGamingPunishEvent(this, EventArgs, data); + if (EventArgs.Cancel) + { + return; + } + if (!EventArgs.Cancel) + { + GameMode.OnSucceedGamingPunishEvent(this, EventArgs, data); + } + else + { + GameMode.OnFailedGamingPunishEvent(this, EventArgs, data); + } + GameMode.OnAfterGamingPunishEvent(this, EventArgs, data); + } + } +}