From c51b7c50fa3dfd4c775871571a9e4fef20656f3c Mon Sep 17 00:00:00 2001 From: milimoe <110188673+milimoe@users.noreply.github.com> Date: Thu, 1 Aug 2024 20:40:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=91=BD=E5=90=8D=20?= =?UTF-8?q?=E5=B9=B6=E7=A6=81=E6=AD=A2GameModuleServer=E8=B0=83=E7=94=A8Da?= =?UTF-8?q?taRequest=20(#81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 统一命名 并禁止GameModuleServer调用DataRequest * 添加了GameModuleDepend (依赖集合) 用于整合Maps Characters Items Skills --- Api/Factory/RoomFactory.cs | 4 +- Api/Transmittal/DataRequest.cs | 2 +- Api/Utility/Factory.cs | 14 +- ...{GameModeLoader.cs => GameModuleLoader.cs} | 22 +- Api/Utility/Implement.cs | 2 +- Api/Utility/PluginLoader.cs | 2 +- Controller/AddonController.cs | 73 ++-- Controller/BaseAddonController.cs | 70 ++++ Docs/FunGame.Core.xml | 380 ++++++++++++------ Entity/System/Room.cs | 6 +- Interface/Base/Addons/IAddonController.cs | 4 +- Interface/Base/Addons/IGameMode.cs | 9 - Interface/Base/Addons/IGameModule.cs | 12 + Interface/Base/Addons/IGameModuleDepend.cs | 9 + ...GameModeServer.cs => IGameModuleServer.cs} | 4 +- Interface/Base/Addons/IPlugin.cs | 2 +- Interface/Base/IServerModel.cs | 4 +- Interface/Event/GamingEventHandlers.cs | 170 ++++---- Interface/Event/GamingEvents.cs | 160 ++++---- Interface/General/IServer.cs | 2 +- .../{CharacterMode.cs => CharacterModule.cs} | 2 +- .../Common/Addon/Example/ExampleGameModule.cs | 211 ++++++++++ .../Addon/{ => Example}/ExamplePlugin.cs | 5 +- .../Addon/{GameMode.cs => GameModule.cs} | 355 ++++++++-------- Library/Common/Addon/GameModuleDepend.cs | 28 ++ ...{GameModeServer.cs => GameModuleServer.cs} | 14 +- .../Addon/{ItemMode.cs => ItemModule.cs} | 2 +- Library/Common/Addon/Plugin.cs | 15 +- .../Addon/{SkillMode.cs => SkillModule.cs} | 2 +- Library/Common/Event/GamingEventArgs.cs | 4 +- Library/Common/Event/RoomEventArgs.cs | 4 +- Library/Common/JsonConverter/RoomConverter.cs | 6 +- Library/Constant/ConstantSet.cs | 4 +- Library/Constant/FunGameInfo.cs | 2 +- Library/Constant/MethodEnum.cs | 2 +- Library/Constant/TypeEnum.cs | 2 +- Library/Exception/Exception.cs | 5 + Library/SQLScript/Entity/RoomQuery.cs | 8 +- Model/Gaming.cs | 291 +++++++------- Service/AddonManager.cs | 48 +-- 40 files changed, 1210 insertions(+), 751 deletions(-) rename Api/Utility/{GameModeLoader.cs => GameModuleLoader.cs} (78%) create mode 100644 Controller/BaseAddonController.cs delete mode 100644 Interface/Base/Addons/IGameMode.cs create mode 100644 Interface/Base/Addons/IGameModule.cs create mode 100644 Interface/Base/Addons/IGameModuleDepend.cs rename Interface/Base/Addons/{IGameModeServer.cs => IGameModuleServer.cs} (51%) rename Library/Common/Addon/{CharacterMode.cs => CharacterModule.cs} (97%) create mode 100644 Library/Common/Addon/Example/ExampleGameModule.cs rename Library/Common/Addon/{ => Example}/ExamplePlugin.cs (86%) rename Library/Common/Addon/{GameMode.cs => GameModule.cs} (70%) create mode 100644 Library/Common/Addon/GameModuleDepend.cs rename Library/Common/Addon/{GameModeServer.cs => GameModuleServer.cs} (85%) rename Library/Common/Addon/{ItemMode.cs => ItemModule.cs} (97%) rename Library/Common/Addon/{SkillMode.cs => SkillModule.cs} (97%) diff --git a/Api/Factory/RoomFactory.cs b/Api/Factory/RoomFactory.cs index acefc84..c9a96ad 100644 --- a/Api/Factory/RoomFactory.cs +++ b/Api/Factory/RoomFactory.cs @@ -13,9 +13,9 @@ namespace Milimoe.FunGame.Core.Api.Factory return RoomFactory.Create(); } - public static Room Create(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameMode = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") + public static Room Create(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameModule = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") { - return new Room(Id, Roomid, CreateTime, RoomMaster, RoomType, GameMode, GameMap, RoomState, IsRank, Password); + return new Room(Id, Roomid, CreateTime, RoomMaster, RoomType, GameModule, GameMap, RoomState, IsRank, Password); } } } diff --git a/Api/Transmittal/DataRequest.cs b/Api/Transmittal/DataRequest.cs index fc4788d..028232a 100644 --- a/Api/Transmittal/DataRequest.cs +++ b/Api/Transmittal/DataRequest.cs @@ -54,7 +54,7 @@ namespace Milimoe.FunGame.Core.Api.Transmittal { Worker = new(Socket, RequestType, Guid.NewGuid(), IsLongRunning); } - + /// /// 添加数据 /// diff --git a/Api/Utility/Factory.cs b/Api/Utility/Factory.cs index ecb5e7c..5a31eec 100644 --- a/Api/Utility/Factory.cs +++ b/Api/Utility/Factory.cs @@ -69,15 +69,15 @@ namespace Milimoe.FunGame.Core.Api.Utility /// 创建时间 /// 房主 /// 房间类型 - /// 游戏模组 + /// 游戏模组 /// /// 房间状态 /// /// 房间密码 /// - public static Room GetRoom(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameMode = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") + public static Room GetRoom(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameModule = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") { - return RoomFactory.Create(Id, Roomid, CreateTime, RoomMaster, RoomType, GameMode, GameMap, RoomState, IsRank, Password); + return RoomFactory.Create(Id, Roomid, CreateTime, RoomMaster, RoomType, GameModule, GameMap, RoomState, IsRank, Password); } /// @@ -96,12 +96,12 @@ namespace Milimoe.FunGame.Core.Api.Utility DateTime CreateTime = (DateTime)DrRoom[RoomQuery.Column_CreateTime]; User RoomMaster = User; RoomType RoomType = (RoomType)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomType]); - string GameMode = (string)DrRoom[RoomQuery.Column_GameMode]; + string GameModule = (string)DrRoom[RoomQuery.Column_GameModule]; string GameMap = (string)DrRoom[RoomQuery.Column_GameMap]; RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]); bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1; string Password = (string)DrRoom[RoomQuery.Column_Password]; - room = GetRoom(Id, Roomid, CreateTime, RoomMaster, RoomType, GameMode, GameMap, RoomState, IsRank, Password); + room = GetRoom(Id, Roomid, CreateTime, RoomMaster, RoomType, GameModule, GameMap, RoomState, IsRank, Password); } return room; } @@ -135,12 +135,12 @@ namespace Milimoe.FunGame.Core.Api.Utility } } RoomType RoomType = (RoomType)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomType]); - string GameMode = (string)DrRoom[RoomQuery.Column_GameMode]; + string GameModule = (string)DrRoom[RoomQuery.Column_GameModule]; string GameMap = (string)DrRoom[RoomQuery.Column_GameMap]; RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]); bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1; string Password = (string)DrRoom[RoomQuery.Column_Password]; - list.Add(GetRoom(Id, Roomid, CreateTime, RoomMaster, RoomType, GameMode, GameMap, RoomState, IsRank, Password)); + list.Add(GetRoom(Id, Roomid, CreateTime, RoomMaster, RoomType, GameModule, GameMap, RoomState, IsRank, Password)); } } return list; diff --git a/Api/Utility/GameModeLoader.cs b/Api/Utility/GameModuleLoader.cs similarity index 78% rename from Api/Utility/GameModeLoader.cs rename to Api/Utility/GameModuleLoader.cs index be5a7d0..6d328c9 100644 --- a/Api/Utility/GameModeLoader.cs +++ b/Api/Utility/GameModuleLoader.cs @@ -6,17 +6,17 @@ using Milimoe.FunGame.Core.Service; namespace Milimoe.FunGame.Core.Api.Utility { - public class GameModeLoader + public class GameModuleLoader { /// /// 适用于客户端的模组集 /// - public Dictionary Modes { get; } = []; + public Dictionary Modes { get; } = []; /// /// 适用于服务器的模组集 /// - public Dictionary ServerModes { get; } = []; + public Dictionary ServerModes { get; } = []; /// /// 游戏地图集 @@ -38,7 +38,7 @@ namespace Milimoe.FunGame.Core.Api.Utility /// public List Items { get; } = []; - private GameModeLoader() + private GameModuleLoader() { } @@ -50,20 +50,20 @@ namespace Milimoe.FunGame.Core.Api.Utility /// 都会读取 /// /// 传入 类型来创建指定端的模组读取器 - /// 用于构建 + /// 用于构建 /// 其他需要传入给插件初始化的对象 /// - public static GameModeLoader LoadGameModes(FunGameInfo.FunGame runtime, Hashtable delegates, params object[] otherobjs) + public static GameModuleLoader LoadGameModules(FunGameInfo.FunGame runtime, Hashtable delegates, params object[] otherobjs) { - GameModeLoader loader = new(); + GameModuleLoader loader = new(); if (runtime == FunGameInfo.FunGame.FunGame_Desktop) { - AddonManager.LoadGameModes(loader.Modes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs); + AddonManager.LoadGameModules(loader.Modes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs); AddonManager.LoadGameMaps(loader.Maps, otherobjs); } else if (runtime == FunGameInfo.FunGame.FunGame_Server) { - AddonManager.LoadGameModesForServer(loader.ServerModes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs); + AddonManager.LoadGameModulesForServer(loader.ServerModes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs); AddonManager.LoadGameMaps(loader.Maps, otherobjs); } return loader; @@ -75,7 +75,7 @@ namespace Milimoe.FunGame.Core.Api.Utility /// /// /// - public GameMode this[string name] + public GameModule this[string name] { get { @@ -92,7 +92,7 @@ namespace Milimoe.FunGame.Core.Api.Utility /// /// /// - public GameModeServer GetServerMode(string name) + public GameModuleServer GetServerMode(string name) { return ServerModes[name]; } diff --git a/Api/Utility/Implement.cs b/Api/Utility/Implement.cs index b3a9e5b..bb94e1f 100644 --- a/Api/Utility/Implement.cs +++ b/Api/Utility/Implement.cs @@ -59,7 +59,7 @@ namespace Milimoe.FunGame.Core.Api.Utility InterfaceMethod.RemoteServerIP => InterfaceSet.Method.RemoteServerIP, InterfaceMethod.DBConnection => InterfaceSet.Method.DBConnection, InterfaceMethod.GetServerSettings => InterfaceSet.Method.GetServerSettings, - InterfaceMethod.GameModeList => InterfaceSet.Method.GameModeList, + InterfaceMethod.GameModuleList => InterfaceSet.Method.GameModuleList, InterfaceMethod.GameMapList => InterfaceSet.Method.GameMapList, _ => "" }; diff --git a/Api/Utility/PluginLoader.cs b/Api/Utility/PluginLoader.cs index 5a78cc7..40875a5 100644 --- a/Api/Utility/PluginLoader.cs +++ b/Api/Utility/PluginLoader.cs @@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Core.Api.Utility /// /// 构建一个插件读取器并读取插件 /// - /// 用于构建 + /// 用于构建 /// 其他需要传入给插件初始化的对象 /// public static PluginLoader LoadPlugins(Hashtable delegates, params object[] otherobjs) diff --git a/Controller/AddonController.cs b/Controller/AddonController.cs index 63e1d13..35dadbb 100644 --- a/Controller/AddonController.cs +++ b/Controller/AddonController.cs @@ -5,20 +5,12 @@ using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Controller { - public class AddonController + /// + /// 这个控制器在Base的基础上添加了DataRequest + /// + /// + public class AddonController : BaseAddonController where T : IAddon { - private IAddon Addon { get; } - - /// - /// 输出系统消息 - /// - private Action MaskMethod_WriteLine { get; set; } - - /// - /// 输出错误消息 - /// - private Action MaskMethod_Error { get; set; } - /// /// 基于本地已连接的Socket创建新的数据请求 /// @@ -29,62 +21,49 @@ namespace Milimoe.FunGame.Core.Controller /// private Func MaskMethod_NewLongRunningDataRequest { get; set; } - /// - /// 输出系统消息 - /// - /// - /// - public void WriteLine(string msg) => MaskMethod_WriteLine(msg); - - /// - /// 输出错误消息 - /// - /// - /// - public void Error(Exception e) => MaskMethod_Error(e); - /// /// 基于本地已连接的Socket创建新的数据请求 - /// 请勿在 中调用此方法 /// /// /// - public DataRequest NewDataRequest(DataRequestType type) => MaskMethod_NewDataRequest(type); + /// + public DataRequest NewDataRequest(DataRequestType type) + { + if (typeof(T).IsAssignableFrom(typeof(IGameModuleServer))) + { + throw new ModuleServerNewDataRequestException(); + } + return MaskMethod_NewDataRequest(type); + } /// /// 基于本地已连接的Socket创建长时间运行的数据请求 - /// 请勿在 中调用此方法 /// /// /// - public DataRequest NewLongRunningDataRequest(DataRequestType type) => MaskMethod_NewLongRunningDataRequest(type); + /// + public DataRequest NewLongRunningDataRequest(DataRequestType type) + { + if (typeof(T).IsAssignableFrom(typeof(IGameModuleServer))) + { + throw new ModuleServerNewDataRequestException(); + } + return MaskMethod_NewLongRunningDataRequest(type); + } /// /// 新建一个AddonController /// - /// + /// /// - public AddonController(IAddon Addon, Hashtable delegates) + public AddonController(IAddon addon, Hashtable delegates) : base(addon, delegates) { - this.Addon = Addon; - if (delegates.ContainsKey("WriteLine")) MaskMethod_WriteLine = delegates["WriteLine"] != null ? (Action)delegates["WriteLine"]! : new(DefaultPrint); - if (delegates.ContainsKey("Error")) MaskMethod_Error = delegates["Error"] != null ? (Action)delegates["Error"]! : new(DefaultPrint); if (delegates.ContainsKey("NewDataRequest")) MaskMethod_NewDataRequest = delegates["NewDataRequest"] != null ? (Func)delegates["NewDataRequest"]! : new(DefaultNewDataRequest); if (delegates.ContainsKey("NewLongRunningDataRequest")) MaskMethod_NewLongRunningDataRequest = delegates["NewLongRunningDataRequest"] != null ? (Func)delegates["NewLongRunningDataRequest"]! : new(DefaultNewDataRequest); - MaskMethod_WriteLine ??= new(DefaultPrint); - MaskMethod_Error ??= new(DefaultPrint); MaskMethod_NewDataRequest ??= new(DefaultNewDataRequest); MaskMethod_NewLongRunningDataRequest ??= new(DefaultNewDataRequest); } - private void DefaultPrint(string msg) => Console.Write("\r" + msg + "\n\r> "); - - private void DefaultPrint(Exception e) => DefaultPrint(e.ToString()); - - private DataRequest DefaultNewDataRequest(DataRequestType type) - { - if (Addon is IGameModeServer) throw new NotSupportedException("请勿在GameModeServer类中调用此方法"); - else throw new ConnectFailedException(); - } + private DataRequest DefaultNewDataRequest(DataRequestType type) => throw new ConnectFailedException(); } } diff --git a/Controller/BaseAddonController.cs b/Controller/BaseAddonController.cs new file mode 100644 index 0000000..20767c2 --- /dev/null +++ b/Controller/BaseAddonController.cs @@ -0,0 +1,70 @@ +using System.Collections; +using Milimoe.FunGame.Core.Interface.Addons; +using Milimoe.FunGame.Core.Library.Common.Addon; + +namespace Milimoe.FunGame.Core.Controller +{ + /// + /// 这是通用的控制器,仅提供基本功能 + /// + /// Addon的类型,如或者 + public class BaseAddonController where T : IAddon + { + /// + /// 控制器的本体 + /// + public T Addon { get; } + + /// + /// 输出系统消息 + /// + protected Action MaskMethod_WriteLine { get; set; } + + /// + /// 输出错误消息 + /// + protected Action MaskMethod_Error { get; set; } + + /// + /// 输出系统消息 + /// + /// + /// + public void WriteLine(string msg) => MaskMethod_WriteLine(msg); + + /// + /// 输出错误消息 + /// + /// + /// + public void Error(Exception e) => MaskMethod_Error(e); + + /// + /// 新建一个BaseAddonController + /// + /// + /// + public BaseAddonController(IAddon addon, Hashtable delegates) + { + Addon = (T)addon; + if (delegates.ContainsKey("WriteLine")) MaskMethod_WriteLine = delegates["WriteLine"] != null ? (Action)delegates["WriteLine"]! : new(DefaultPrint); + if (delegates.ContainsKey("Error")) MaskMethod_Error = delegates["Error"] != null ? (Action)delegates["Error"]! : new(DefaultPrint); + MaskMethod_WriteLine ??= new(DefaultPrint); + MaskMethod_Error ??= new(DefaultPrint); + } + + /// + /// 默认的输出错误消息方法 + /// + /// + /// + private void DefaultPrint(string msg) => Console.Write("\r" + msg + "\n\r> "); + + /// + /// 输出错误消息 + /// + /// + /// + private void DefaultPrint(Exception e) => DefaultPrint(e.ToString()); + } +} diff --git a/Docs/FunGame.Core.xml b/Docs/FunGame.Core.xml index ba76000..9311262 100644 --- a/Docs/FunGame.Core.xml +++ b/Docs/FunGame.Core.xml @@ -302,7 +302,7 @@ 创建时间 房主 房间类型 - 游戏模组 + 游戏模组 房间状态 @@ -389,64 +389,64 @@ - + 适用于客户端的模组集 - + 适用于服务器的模组集 - + 游戏地图集 - + 角色表 - + 技能表 - + 物品表 - + 传入 类型来创建指定端的模组读取器 - runtime = 时,仅读取 - runtime = 时,仅读取 - 都会读取 + runtime = 时,仅读取 + runtime = 时,仅读取 + 都会读取 传入 类型来创建指定端的模组读取器 - 用于构建 + 用于构建 其他需要传入给插件初始化的对象 - + 获取对应名称的模组实例 - 如果需要取得服务器模组的实例,请调用 + 如果需要取得服务器模组的实例,请调用 - + 获取对应名称的服务器模组实例 - + 获取对应名称的游戏地图 @@ -943,7 +943,7 @@ 构建一个插件读取器并读取插件 - 用于构建 + 用于构建 其他需要传入给插件初始化的对象 @@ -1146,63 +1146,101 @@ - + - 输出系统消息 + 这个控制器在Base的基础上添加了DataRequest + - - - 输出错误消息 - - - + 基于本地已连接的Socket创建新的数据请求 - + 基于本地已连接的Socket创建长时间运行的数据请求 - + + + 基于本地已连接的Socket创建新的数据请求 + + + + + + + + 基于本地已连接的Socket创建长时间运行的数据请求 + + + + + + + + 新建一个AddonController + + + + + + + 这是通用的控制器,仅提供基本功能 + + Addon的类型,如或者 + + + + 控制器的本体 + + + + + 输出系统消息 + + + + + 输出错误消息 + + + 输出系统消息 - + 输出错误消息 - + - 基于本地已连接的Socket创建新的数据请求 - 请勿在 中调用此方法 + 新建一个BaseAddonController - - - - - - 基于本地已连接的Socket创建长时间运行的数据请求 - 请勿在 中调用此方法 - - - - - - - 新建一个AddonController - - + + + + 默认的输出错误消息方法 + + + + + + + 输出错误消息 + + + + 此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能 @@ -1518,7 +1556,7 @@ 开始接收客户端消息 - 请勿在 中调用此方法 + 请勿在 中调用此方法 @@ -1526,7 +1564,7 @@ 启动对客户端的监听 - 请勿在 中调用此方法 + 请勿在 中调用此方法 @@ -1536,7 +1574,7 @@ - 局内事件的接口,与 配套使用 + 局内事件的接口,与 配套使用 @@ -1549,53 +1587,75 @@ 服务器需要实现此接口 - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的角色 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + + + 建议使用一个类来存储常量,方便重用 + + + + + 模组:必须继承基类: + 继承事件接口并实现其方法来使模组生效。例如继承: + + + + + 模组服务器:必须继承基类: + 使用switch块分类处理 。 + + + + + 地图:必须继承基类: + + + 必须继承基类: 继承事件接口并实现其方法来使插件生效。例如继承: @@ -1659,145 +1719,188 @@ - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 默认地图 - + - 模组所使用的地图 + 模组的依赖集合 - + 适用的房间模式 - + 包含了一些常用方法的控制器 - + + + base控制器,没有DataRequest + + + 控制器内部变量 - + + + 必须重写此方法,游戏的主要逻辑写在这里面 + 此方法会在 时调用 + + + + + + 如模组有界面,请重写此方法 - 此方法会在StartGame时调用 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + 传递委托以便让模组调用 - + Session对象 - + Config对象 - + - 绑定事件。在后触发 + 绑定事件。在后触发 - + + + 模组的依赖集合 + + + + + 模组的依赖集合 + + + + + 模组所使用的地图组 + + + + + 模组所使用的角色组 + + + + + 模组所使用的物品组 + + + + + 模组所使用的技能组 + + + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 默认地图 - + - 模组所使用的地图 + 模组的依赖集合 - + 包含了一些常用方法的控制器 - + 控制器内部变量 - + 启动服务器监听 请在此处实现服务器逻辑 - + @@ -1805,7 +1908,7 @@ - + 接收并处理GamingMessage @@ -1814,68 +1917,68 @@ 消息参数 底层会将哈希表中的数据发送给客户端 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的物品 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 @@ -1906,6 +2009,11 @@ 包含了一些常用方法的控制器 + + + base控制器,没有DataRequest + + 控制器内部变量 @@ -1952,47 +2060,47 @@ 绑定事件。在后触发 - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的技能 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 @@ -2468,23 +2576,35 @@ 客户端需要使用创建此类单例 - + + + 使用的模组实例 + + + + + 游戏的参数 + + + 传入游戏所需的参数,构造一个Gaming实例 - - - + + + + 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 客户端也可以参照此方法自行实现 - 此方法目的是为了触发 的局内事件实现 + 此方法目的是为了触发 的局内事件实现 - - + 消息类型 + 接收到的数据 + 底层会将哈希表中的数据发送给服务器 @@ -2530,11 +2650,11 @@ - + - 从gamemodes目录加载所有模组 + 从modules目录加载所有模组 - + @@ -2542,11 +2662,11 @@ - + - 从gamemodes目录加载所有适用于服务器的模组 + 从modules目录加载所有适用于服务器的模组 - + @@ -2556,9 +2676,9 @@ - 从gamemaps目录加载所有地图 + 从maps目录加载所有地图 - + diff --git a/Entity/System/Room.cs b/Entity/System/Room.cs index 564bce6..8e9b141 100644 --- a/Entity/System/Room.cs +++ b/Entity/System/Room.cs @@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Entity public DateTime CreateTime { get; set; } = General.DefaultTime; public User RoomMaster { get; set; } = General.UnknownUserInstance; public RoomType RoomType { get; set; } = RoomType.All; - public string GameMode { get; set; } = ""; + public string GameModule { get; set; } = ""; public string GameMap { get; set; } = ""; public RoomState RoomState { get; set; } public bool IsRank { get; set; } = false; @@ -24,14 +24,14 @@ namespace Milimoe.FunGame.Core.Entity Statistics = new(this); } - internal Room(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameMode = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") + internal Room(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameModule = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "") { this.Id = Id; this.Roomid = Roomid; this.CreateTime = CreateTime ?? General.DefaultTime; this.RoomMaster = RoomMaster ?? General.UnknownUserInstance; this.RoomType = RoomType; - this.GameMode = GameMode; + this.GameModule = GameModule; this.GameMap = GameMap; this.RoomState = RoomState; this.IsRank = IsRank; diff --git a/Interface/Base/Addons/IAddonController.cs b/Interface/Base/Addons/IAddonController.cs index 594888d..8c0ab4b 100644 --- a/Interface/Base/Addons/IAddonController.cs +++ b/Interface/Base/Addons/IAddonController.cs @@ -2,8 +2,8 @@ namespace Milimoe.FunGame.Core.Interface.Addons { - public interface IAddonController + public interface IAddonController where T : IAddon { - public AddonController Controller { get; set; } + public BaseAddonController Controller { get; set; } } } diff --git a/Interface/Base/Addons/IGameMode.cs b/Interface/Base/Addons/IGameMode.cs deleted file mode 100644 index be9ba22..0000000 --- a/Interface/Base/Addons/IGameMode.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Milimoe.FunGame.Core.Interface.Addons -{ - public interface IGameMode : IAddon, IAddonController, IGamingConnectEventHandler, IGamingDisconnectEventHandler, IGamingReconnectEventHandler, IGamingBanCharacterEventHandler, IGamingPickCharacterEventHandler, - 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/Base/Addons/IGameModule.cs b/Interface/Base/Addons/IGameModule.cs new file mode 100644 index 0000000..fde6564 --- /dev/null +++ b/Interface/Base/Addons/IGameModule.cs @@ -0,0 +1,12 @@ +using Milimoe.FunGame.Core.Model; + +namespace Milimoe.FunGame.Core.Interface.Addons +{ + public interface IGameModule : IAddon, IAddonController, IGamingConnectEventHandler, IGamingDisconnectEventHandler, IGamingReconnectEventHandler, IGamingBanCharacterEventHandler, IGamingPickCharacterEventHandler, + IGamingRandomEventHandler, IGamingRoundEventHandler, IGamingLevelUpEventHandler, IGamingMoveEventHandler, IGamingAttackEventHandler, IGamingSkillEventHandler, IGamingItemEventHandler, IGamingMagicEventHandler, + IGamingBuyEventHandler, IGamingSuperSkillEventHandler, IGamingPauseEventHandler, IGamingUnpauseEventHandler, IGamingSurrenderEventHandler, IGamingUpdateInfoEventHandler, IGamingPunishEventHandler, IGameModuleDepend + { + public abstract void StartGame(Gaming instance, params object[] args); + public abstract void StartUI(params object[] args); + } +} diff --git a/Interface/Base/Addons/IGameModuleDepend.cs b/Interface/Base/Addons/IGameModuleDepend.cs new file mode 100644 index 0000000..7d0107d --- /dev/null +++ b/Interface/Base/Addons/IGameModuleDepend.cs @@ -0,0 +1,9 @@ +using Milimoe.FunGame.Core.Library.Common.Addon; + +namespace Milimoe.FunGame.Core.Interface.Addons +{ + public interface IGameModuleDepend + { + public GameModuleDepend GameModuleDepend { get; } + } +} diff --git a/Interface/Base/Addons/IGameModeServer.cs b/Interface/Base/Addons/IGameModuleServer.cs similarity index 51% rename from Interface/Base/Addons/IGameModeServer.cs rename to Interface/Base/Addons/IGameModuleServer.cs index 5451758..118c33a 100644 --- a/Interface/Base/Addons/IGameModeServer.cs +++ b/Interface/Base/Addons/IGameModuleServer.cs @@ -5,9 +5,9 @@ using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Interface.Addons { - public interface IGameModeServer : IAddon, IAddonController + public interface IGameModuleServer : IAddon, IAddonController, IGameModuleDepend { - public bool StartServer(string GameMode, Room Room, List Users, IServerModel RoomMasterServerModel, Dictionary OthersServerModel, params object[] args); + public bool StartServer(string GameModule, Room Room, List Users, IServerModel RoomMasterServerModel, Dictionary OthersServerModel, params object[] args); public Hashtable GamingMessageHandler(string username, GamingType type, Hashtable data); } diff --git a/Interface/Base/Addons/IPlugin.cs b/Interface/Base/Addons/IPlugin.cs index f321c60..107a147 100644 --- a/Interface/Base/Addons/IPlugin.cs +++ b/Interface/Base/Addons/IPlugin.cs @@ -1,6 +1,6 @@ namespace Milimoe.FunGame.Core.Interface.Addons { - public interface IPlugin : IAddon, IAddonController, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler, + public interface IPlugin : IAddon, IAddonController, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler, ICreateRoomEventHandler, IQuitRoomEventHandler, IChangeRoomSettingEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IChangeProfileEventHandler, IChangeAccountSettingEventHandler, IOpenInventoryEventHandler, ISignInEventHandler, IOpenStoreEventHandler, IBuyItemEventHandler, IShowRankingEventHandler, IUseItemEventHandler, IEndGameEventHandler { diff --git a/Interface/Base/IServerModel.cs b/Interface/Base/IServerModel.cs index 849cfdb..66b90ae 100644 --- a/Interface/Base/IServerModel.cs +++ b/Interface/Base/IServerModel.cs @@ -59,7 +59,7 @@ namespace Milimoe.FunGame.Core.Interface.Base /// /// 开始接收客户端消息 - /// 请勿在 中调用此方法 + /// 请勿在 中调用此方法 /// /// /// @@ -67,7 +67,7 @@ namespace Milimoe.FunGame.Core.Interface.Base /// /// 启动对客户端的监听 - /// 请勿在 中调用此方法 + /// 请勿在 中调用此方法 /// public void Start(); } diff --git a/Interface/Event/GamingEventHandlers.cs b/Interface/Event/GamingEventHandlers.cs index 15f67cf..82d3262 100644 --- a/Interface/Event/GamingEventHandlers.cs +++ b/Interface/Event/GamingEventHandlers.cs @@ -5,14 +5,14 @@ using Milimoe.FunGame.Core.Library.Common.Event; namespace Milimoe.FunGame.Core.Interface { /// - /// 局内事件的接口,与 配套使用 + /// 局内事件的接口,与 配套使用 /// public interface IGamingEventHandler { - 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 delegate void BeforeEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public delegate void AfterEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public delegate void SucceedEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public delegate void FailedEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingConnectEventHandler : IGamingEventHandler @@ -22,10 +22,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingConnect; public event FailedEventHandler? FailedGamingConnect; - 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 void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingDisconnectEventHandler : IGamingEventHandler @@ -35,10 +35,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingDisconnect; public event FailedEventHandler? FailedGamingDisconnect; - 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 void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingReconnectEventHandler : IGamingEventHandler @@ -48,10 +48,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingReconnect; public event FailedEventHandler? FailedGamingReconnect; - 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 void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingBanCharacterEventHandler : IGamingEventHandler @@ -61,10 +61,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingBanCharacter; public event FailedEventHandler? FailedGamingBanCharacter; - 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 void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingPickCharacterEventHandler : IGamingEventHandler @@ -74,10 +74,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingPickCharacter; public event FailedEventHandler? FailedGamingPickCharacter; - 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 void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingRandomEventHandler : IGamingEventHandler @@ -87,10 +87,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingRandom; public event FailedEventHandler? FailedGamingRandom; - 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 void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingRoundEventHandler : IGamingEventHandler @@ -100,10 +100,10 @@ namespace Milimoe.FunGame.Core.Interface 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 void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingLevelUpEventHandler : IGamingEventHandler @@ -113,10 +113,10 @@ namespace Milimoe.FunGame.Core.Interface 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 void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingMoveEventHandler : IGamingEventHandler @@ -126,10 +126,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingMove; public event FailedEventHandler? FailedGamingMove; - 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 void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingAttackEventHandler : IGamingEventHandler @@ -139,10 +139,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingAttack; public event FailedEventHandler? FailedGamingAttack; - 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 void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSkillEventHandler : IGamingEventHandler @@ -152,10 +152,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSkill; public event FailedEventHandler? FailedGamingSkill; - 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 void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingItemEventHandler : IGamingEventHandler @@ -165,10 +165,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingItem; public event FailedEventHandler? FailedGamingItem; - 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 void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingMagicEventHandler : IGamingEventHandler @@ -178,10 +178,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingMagic; public event FailedEventHandler? FailedGamingMagic; - 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 void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingBuyEventHandler : IGamingEventHandler @@ -191,10 +191,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingBuy; public event FailedEventHandler? FailedGamingBuy; - 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 void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSuperSkillEventHandler : IGamingEventHandler @@ -204,10 +204,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSuperSkill; public event FailedEventHandler? FailedGamingSuperSkill; - 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 void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingPauseEventHandler : IGamingEventHandler @@ -217,10 +217,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingPause; public event FailedEventHandler? FailedGamingPause; - 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 void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingUnpauseEventHandler : IGamingEventHandler @@ -230,10 +230,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingUnpause; public event FailedEventHandler? FailedGamingUnpause; - 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 void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSurrenderEventHandler : IGamingEventHandler @@ -243,10 +243,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingSurrender; public event FailedEventHandler? FailedGamingSurrender; - 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 void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingUpdateInfoEventHandler : IGamingEventHandler @@ -256,10 +256,10 @@ namespace Milimoe.FunGame.Core.Interface public event SucceedEventHandler? SucceedGamingUpdateInfo; public event FailedEventHandler? FailedGamingUpdateInfo; - 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 void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingPunishEventHandler : IGamingEventHandler @@ -269,9 +269,9 @@ namespace Milimoe.FunGame.Core.Interface 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); + public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } } diff --git a/Interface/Event/GamingEvents.cs b/Interface/Event/GamingEvents.cs index 8e4c074..36fc350 100644 --- a/Interface/Event/GamingEvents.cs +++ b/Interface/Event/GamingEvents.cs @@ -6,161 +6,161 @@ namespace Milimoe.FunGame.Core.Interface { public interface IGamingConnectEvent { - 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 void BeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingDisconnectEvent { - 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 void BeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingReconnectEvent { - 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 void BeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingBanCharacterEvent { - 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 void BeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingPickCharacterEvent { - 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 void BeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingRandomEvent { - 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 void BeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } 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 void BeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } 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 void BeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingMoveEvent { - 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 void BeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingAttackEvent { - 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 void BeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSkillEvent { - 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 void BeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingItemEvent { - 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 void BeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingMagicEvent { - 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 void BeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingBuyEvent { - 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 void BeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSuperSkillEvent { - 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 void BeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingPauseEvent { - 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 void BeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingUnpauseEvent { - 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 void BeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingSurrenderEvent { - 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 void BeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } public interface IGamingUpdateInfoEvent { - 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 void BeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } 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); + public void BeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void AfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void SucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); + public void FailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result); } } diff --git a/Interface/General/IServer.cs b/Interface/General/IServer.cs index b544616..d235185 100644 --- a/Interface/General/IServer.cs +++ b/Interface/General/IServer.cs @@ -5,7 +5,7 @@ /// public interface IServer { - public string[] GameModeList { get; } + public string[] GameModuleList { get; } public string[] GameMapList { get; } } } diff --git a/Library/Common/Addon/CharacterMode.cs b/Library/Common/Addon/CharacterModule.cs similarity index 97% rename from Library/Common/Addon/CharacterMode.cs rename to Library/Common/Addon/CharacterModule.cs index 388b5d1..b51523f 100644 --- a/Library/Common/Addon/CharacterMode.cs +++ b/Library/Common/Addon/CharacterModule.cs @@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons; namespace Milimoe.FunGame.Core.Library.Common.Addon { - public abstract class CharacterMode : IAddon + public abstract class CharacterModule : IAddon { /// /// 模组名称 diff --git a/Library/Common/Addon/Example/ExampleGameModule.cs b/Library/Common/Addon/Example/ExampleGameModule.cs new file mode 100644 index 0000000..a82ecf5 --- /dev/null +++ b/Library/Common/Addon/Example/ExampleGameModule.cs @@ -0,0 +1,211 @@ +using System.Collections; +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Interface; +using Milimoe.FunGame.Core.Interface.Base; +using Milimoe.FunGame.Core.Library.Common.Event; +using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Model; + +// 此演示包含GameModule、GameModuleServer、GameMap +namespace Milimoe.FunGame.Core.Library.Common.Addon.Example +{ + /// + /// 建议使用一个类来存储常量,方便重用 + /// + public class ExampleGameModuleConstant + { + public static GameModuleDepend GameModuleDepend => _depends; + + private static readonly string[] Maps = ["Example GameMap"]; + private static readonly string[] Characters = []; + private static readonly string[] Items = []; + private static readonly string[] Skills = []; + private static readonly GameModuleDepend _depends = new(Maps, Characters, Items, Skills); + } + + /// + /// 模组:必须继承基类: + /// 继承事件接口并实现其方法来使模组生效。例如继承: + /// + public class ExampleGameModule : GameModule, IGamingConnectEvent + { + public override string Name => "FunGame Example GameModule"; + + public override string Description => "My First GameModule"; + + public override string Version => "1.0.0"; + + public override string Author => "FunGamer"; + + public override string DefaultMap => GameModuleDepend.Maps.Length > 0 ? GameModuleDepend.Maps[0] : ""; + + public override GameModuleDepend GameModuleDepend => ExampleGameModuleConstant.GameModuleDepend; + + public override RoomType RoomType => RoomType.Mix; + + protected Gaming? Instance; + protected Room room = General.HallInstance; + protected List users = []; + protected Dictionary characters = []; + + public override void StartGame(Gaming instance, params object[] args) + { + Instance = instance; + // 取得房间玩家等信息 + GamingEventArgs eventArgs = instance.EventArgs; + room = eventArgs.Room; + users = eventArgs.Users; + characters = eventArgs.Characters; + // 客户端做好准备后,等待服务器的消息通知,下面可以根据需求进一步处理 + } + + public override void StartUI(params object[] args) + { + // 如果你是一个WPF或者Winform项目,可以在这里启动你的界面 + // 如果没有,则不需要重写此方法 + } + + public void BeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) + { + // 此方法预处理攻击消息 + // 如果这里将Cancel设置为true,那么这个方法结束后,后续的事件就会终止 + e.Cancel = true; + } + + public void AfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) + { + + } + + public void SucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) + { + + } + + public void FailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) + { + _ = DiscountGameModuleServer(); + } + + public async Task DiscountGameModuleServer() + { + // 这是一个主动请求服务器的示例: + Api.Transmittal.DataRequest request = Controller.NewDataRequest(DataRequestType.Gaming); + request.AddRequestData("type", GamingType.Disconnect); + if (await request.SendRequestAsync() == RequestResult.Success) + { + string msg = request.GetResult("msg") ?? string.Empty; + Controller.WriteLine(msg); + } + } + } + + /// + /// 模组服务器:必须继承基类: + /// 使用switch块分类处理 。 + /// + public class ExampleGameModuleServer : GameModuleServer + { + public override string Name => "FunGame Example GameModule"; + + public override string Description => "My First GameModule"; + + public override string Version => "1.0.0"; + + public override string Author => "FunGamer"; + + public override string DefaultMap => GameModuleDepend.Maps.Length > 0 ? GameModuleDepend.Maps.First() : ""; + + public override GameModuleDepend GameModuleDepend => ExampleGameModuleConstant.GameModuleDepend; + + protected Room Room = General.HallInstance; + protected List Users = []; + protected IServerModel? RoomMaster; + protected Dictionary Others = []; + protected Dictionary All = []; + + public override bool StartServer(string GameModule, Room Room, List Users, IServerModel RoomMasterServerModel, Dictionary OthersServerModel, params object[] Args) + { + // 将参数转为本地属性 + this.Room = Room; + this.Users = Users; + RoomMaster = RoomMasterServerModel; + Others = OthersServerModel; + if (RoomMaster != null) + { + // 这里获得了每名玩家的服务线程,保存为一个字典 + All = OthersServerModel.ToDictionary(k => k.Key, v => v.Value); + All.Add(RoomMaster.User.Username, RoomMaster); + } + // 创建一个线程执行Test() + TaskUtility.NewTask(Test).OnError(Controller.Error); + return true; + } + + private readonly List ConnectedUser = []; + + private async Task Test() + { + // 通常,我们可以对客户端的连接状态进行确认,此方法展示如何确认客户端的连接 + Controller.WriteLine("欢迎各位玩家进入房间 " + Room.Roomid + " 。"); + SendAll(SocketMessageType.Gaming, GamingType.Connect); + // 新建一个线程等待所有玩家确认 + while (true) + { + if (ConnectedUser.Count == Users.Count) break; + // 每200ms确认一次,不需要太频繁 + await Task.Delay(200); + } + Controller.WriteLine("所有玩家都已经连接。"); + } + + public override Hashtable GamingMessageHandler(string username, GamingType type, Hashtable data) + { + Hashtable result = []; + + switch (type) + { + case GamingType.Connect: + // 编写处理“连接”命令的逻辑 + ConnectedUser.Add(Users.Where(u => u.Username == username).First()); + Controller.WriteLine(username + "已经连接。"); + break; + } + + return result; + } + + private void SendAll(SocketMessageType type, params object[] args) + { + // 循环服务线程,向所有玩家发送消息 + foreach (IServerModel s in All.Values) + { + if (s != null && s.Socket != null) + { + s.Send(s.Socket, type, args); + } + } + } + } + + /// + /// 地图:必须继承基类: + /// + public class ExampleGameMap : GameMap + { + public override string Name => "Example GameMap"; + + public override string Description => "My First GameMap"; + + public override string Version => "1.0.0"; + + public override string Author => "FunGamer"; + + public override float Width => 12.0f; + + public override float Height => 12.0f; + + public override float Size => 4.0f; + } +} diff --git a/Library/Common/Addon/ExamplePlugin.cs b/Library/Common/Addon/Example/ExamplePlugin.cs similarity index 86% rename from Library/Common/Addon/ExamplePlugin.cs rename to Library/Common/Addon/Example/ExamplePlugin.cs index e7b0657..33ab8a5 100644 --- a/Library/Common/Addon/ExamplePlugin.cs +++ b/Library/Common/Addon/Example/ExamplePlugin.cs @@ -1,7 +1,7 @@ using Milimoe.FunGame.Core.Interface; using Milimoe.FunGame.Core.Library.Common.Event; -namespace Milimoe.FunGame.Core.Library.Common.Addon +namespace Milimoe.FunGame.Core.Library.Common.Addon.Example { /// /// 必须继承基类: @@ -24,7 +24,8 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public void BeforeLoginEvent(object sender, LoginEventArgs e) { - + // 如果这里设置Cancel = true,将终止登录 + e.Cancel = true; } public void FailedLoginEvent(object sender, LoginEventArgs e) diff --git a/Library/Common/Addon/GameMode.cs b/Library/Common/Addon/GameModule.cs similarity index 70% rename from Library/Common/Addon/GameMode.cs rename to Library/Common/Addon/GameModule.cs index 422de38..7061242 100644 --- a/Library/Common/Addon/GameMode.cs +++ b/Library/Common/Addon/GameModule.cs @@ -8,7 +8,7 @@ using Milimoe.FunGame.Core.Model; namespace Milimoe.FunGame.Core.Library.Common.Addon { - public abstract class GameMode : IGameMode + public abstract class GameModule : IGameModule { /// /// 模组名称 @@ -36,9 +36,9 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public abstract string DefaultMap { get; } /// - /// 模组所使用的地图 + /// 模组的依赖集合 /// - public abstract string[] Maps { get; } + public abstract GameModuleDepend GameModuleDepend { get; } /// /// 适用的房间模式 @@ -48,26 +48,43 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// /// 包含了一些常用方法的控制器 /// - public AddonController Controller + public AddonController Controller { get => _Controller ?? throw new NotImplementedException(); - set => _Controller = value; + internal set => _Controller = value; + } + + /// + /// base控制器,没有DataRequest + /// + BaseAddonController IAddonController.Controller + { + get => Controller; + set => _Controller = (AddonController?)value; } /// /// 控制器内部变量 /// - protected AddonController? _Controller; + private AddonController? _Controller; + + /// + /// 必须重写此方法,游戏的主要逻辑写在这里面 + /// 此方法会在 时调用 + /// + /// + /// + /// + public abstract void StartGame(Gaming instance, params object[] args); /// /// 如模组有界面,请重写此方法 - /// 此方法会在StartGame时调用 /// /// /// - public virtual bool StartUI(params object[] args) + public virtual void StartUI(params object[] args) { - return true; + } /// @@ -402,404 +419,404 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public event IGamingEventHandler.SucceedEventHandler? SucceedGamingPunish; public event IGamingEventHandler.FailedEventHandler? FailedGamingPunish; - public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingConnect?.Invoke(sender, e, data); + BeforeGamingConnect?.Invoke(sender, e, data, result); } - public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingConnect?.Invoke(sender, e, data); + AfterGamingConnect?.Invoke(sender, e, data, result); } - public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingConnect?.Invoke(sender, e, data); + SucceedGamingConnect?.Invoke(sender, e, data, result); } - public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingConnect?.Invoke(sender, e, data); + FailedGamingConnect?.Invoke(sender, e, data, result); } - public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingDisconnect?.Invoke(sender, e, data); + BeforeGamingDisconnect?.Invoke(sender, e, data, result); } - public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingDisconnect?.Invoke(sender, e, data); + AfterGamingDisconnect?.Invoke(sender, e, data, result); } - public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingDisconnect?.Invoke(sender, e, data); + SucceedGamingDisconnect?.Invoke(sender, e, data, result); } - public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingDisconnect?.Invoke(sender, e, data); + FailedGamingDisconnect?.Invoke(sender, e, data, result); } - public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingReconnect?.Invoke(sender, e, data); + BeforeGamingReconnect?.Invoke(sender, e, data, result); } - public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingReconnect?.Invoke(sender, e, data); + AfterGamingReconnect?.Invoke(sender, e, data, result); } - public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingReconnect?.Invoke(sender, e, data); + SucceedGamingReconnect?.Invoke(sender, e, data, result); } - public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingReconnect?.Invoke(sender, e, data); + FailedGamingReconnect?.Invoke(sender, e, data, result); } - public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingBanCharacter?.Invoke(sender, e, data); + BeforeGamingBanCharacter?.Invoke(sender, e, data, result); } - public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingBanCharacter?.Invoke(sender, e, data); + AfterGamingBanCharacter?.Invoke(sender, e, data, result); } - public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingBanCharacter?.Invoke(sender, e, data); + SucceedGamingBanCharacter?.Invoke(sender, e, data, result); } - public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingBanCharacter?.Invoke(sender, e, data); + FailedGamingBanCharacter?.Invoke(sender, e, data, result); } - public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingPickCharacter?.Invoke(sender, e, data); + BeforeGamingPickCharacter?.Invoke(sender, e, data, result); } - public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingPickCharacter?.Invoke(sender, e, data); + AfterGamingPickCharacter?.Invoke(sender, e, data, result); } - public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingPickCharacter?.Invoke(sender, e, data); + SucceedGamingPickCharacter?.Invoke(sender, e, data, result); } - public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingPickCharacter?.Invoke(sender, e, data); + FailedGamingPickCharacter?.Invoke(sender, e, data, result); } - public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingRandom?.Invoke(sender, e, data); + BeforeGamingRandom?.Invoke(sender, e, data, result); } - public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingRandom?.Invoke(sender, e, data); + AfterGamingRandom?.Invoke(sender, e, data, result); } - public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingRandom?.Invoke(sender, e, data); + SucceedGamingRandom?.Invoke(sender, e, data, result); } - public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingRandom?.Invoke(sender, e, data); + FailedGamingRandom?.Invoke(sender, e, data, result); } - public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingRound?.Invoke(sender, e, data); + BeforeGamingRound?.Invoke(sender, e, data, result); } - public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingRound?.Invoke(sender, e, data); + AfterGamingRound?.Invoke(sender, e, data, result); } - public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingRound?.Invoke(sender, e, data); + SucceedGamingRound?.Invoke(sender, e, data, result); } - public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingRound?.Invoke(sender, e, data); + FailedGamingRound?.Invoke(sender, e, data, result); } - public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingLevelUp?.Invoke(sender, e, data); + BeforeGamingLevelUp?.Invoke(sender, e, data, result); } - public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingLevelUp?.Invoke(sender, e, data); + AfterGamingLevelUp?.Invoke(sender, e, data, result); } - public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingLevelUp?.Invoke(sender, e, data); + SucceedGamingLevelUp?.Invoke(sender, e, data, result); } - public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingLevelUp?.Invoke(sender, e, data); + FailedGamingLevelUp?.Invoke(sender, e, data, result); } - public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingMove?.Invoke(sender, e, data); + BeforeGamingMove?.Invoke(sender, e, data, result); } - public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingMove?.Invoke(sender, e, data); + AfterGamingMove?.Invoke(sender, e, data, result); } - public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingMove?.Invoke(sender, e, data); + SucceedGamingMove?.Invoke(sender, e, data, result); } - public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingMove?.Invoke(sender, e, data); + FailedGamingMove?.Invoke(sender, e, data, result); } - public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingAttack?.Invoke(sender, e, data); + BeforeGamingAttack?.Invoke(sender, e, data, result); } - public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingAttack?.Invoke(sender, e, data); + AfterGamingAttack?.Invoke(sender, e, data, result); } - public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingAttack?.Invoke(sender, e, data); + SucceedGamingAttack?.Invoke(sender, e, data, result); } - public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingAttack?.Invoke(sender, e, data); + FailedGamingAttack?.Invoke(sender, e, data, result); } - public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingSkill?.Invoke(sender, e, data); + BeforeGamingSkill?.Invoke(sender, e, data, result); } - public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingSkill?.Invoke(sender, e, data); + AfterGamingSkill?.Invoke(sender, e, data, result); } - public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingSkill?.Invoke(sender, e, data); + SucceedGamingSkill?.Invoke(sender, e, data, result); } - public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingSkill?.Invoke(sender, e, data); + FailedGamingSkill?.Invoke(sender, e, data, result); } - public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingItem?.Invoke(sender, e, data); + BeforeGamingItem?.Invoke(sender, e, data, result); } - public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingItem?.Invoke(sender, e, data); + AfterGamingItem?.Invoke(sender, e, data, result); } - public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingItem?.Invoke(sender, e, data); + SucceedGamingItem?.Invoke(sender, e, data, result); } - public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingItem?.Invoke(sender, e, data); + FailedGamingItem?.Invoke(sender, e, data, result); } - public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingMagic?.Invoke(sender, e, data); + BeforeGamingMagic?.Invoke(sender, e, data, result); } - public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingMagic?.Invoke(sender, e, data); + AfterGamingMagic?.Invoke(sender, e, data, result); } - public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingMagic?.Invoke(sender, e, data); + SucceedGamingMagic?.Invoke(sender, e, data, result); } - public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingMagic?.Invoke(sender, e, data); + FailedGamingMagic?.Invoke(sender, e, data, result); } - public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingBuy?.Invoke(sender, e, data); + BeforeGamingBuy?.Invoke(sender, e, data, result); } - public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingBuy?.Invoke(sender, e, data); + AfterGamingBuy?.Invoke(sender, e, data, result); } - public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingBuy?.Invoke(sender, e, data); + SucceedGamingBuy?.Invoke(sender, e, data, result); } - public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingBuy?.Invoke(sender, e, data); + FailedGamingBuy?.Invoke(sender, e, data, result); } - public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingSuperSkill?.Invoke(sender, e, data); + BeforeGamingSuperSkill?.Invoke(sender, e, data, result); } - public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingSuperSkill?.Invoke(sender, e, data); + AfterGamingSuperSkill?.Invoke(sender, e, data, result); } - public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingSuperSkill?.Invoke(sender, e, data); + SucceedGamingSuperSkill?.Invoke(sender, e, data, result); } - public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingSuperSkill?.Invoke(sender, e, data); + FailedGamingSuperSkill?.Invoke(sender, e, data, result); } - public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingPause?.Invoke(sender, e, data); + BeforeGamingPause?.Invoke(sender, e, data, result); } - public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingPause?.Invoke(sender, e, data); + AfterGamingPause?.Invoke(sender, e, data, result); } - public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingPause?.Invoke(sender, e, data); + SucceedGamingPause?.Invoke(sender, e, data, result); } - public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingPause?.Invoke(sender, e, data); + FailedGamingPause?.Invoke(sender, e, data, result); } - public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingUnpause?.Invoke(sender, e, data); + BeforeGamingUnpause?.Invoke(sender, e, data, result); } - public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingUnpause?.Invoke(sender, e, data); + AfterGamingUnpause?.Invoke(sender, e, data, result); } - public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingUnpause?.Invoke(sender, e, data); + SucceedGamingUnpause?.Invoke(sender, e, data, result); } - public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingUnpause?.Invoke(sender, e, data); + FailedGamingUnpause?.Invoke(sender, e, data, result); } - public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingSurrender?.Invoke(sender, e, data); + BeforeGamingSurrender?.Invoke(sender, e, data, result); } - public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingSurrender?.Invoke(sender, e, data); + AfterGamingSurrender?.Invoke(sender, e, data, result); } - public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingSurrender?.Invoke(sender, e, data); + SucceedGamingSurrender?.Invoke(sender, e, data, result); } - public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingSurrender?.Invoke(sender, e, data); + FailedGamingSurrender?.Invoke(sender, e, data, result); } - public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingUpdateInfo?.Invoke(sender, e, data); + BeforeGamingUpdateInfo?.Invoke(sender, e, data, result); } - public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingUpdateInfo?.Invoke(sender, e, data); + AfterGamingUpdateInfo?.Invoke(sender, e, data, result); } - public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingUpdateInfo?.Invoke(sender, e, data); + SucceedGamingUpdateInfo?.Invoke(sender, e, data, result); } - public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingUpdateInfo?.Invoke(sender, e, data); + FailedGamingUpdateInfo?.Invoke(sender, e, data, result); } - public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - BeforeGamingPunish?.Invoke(sender, e, data); + BeforeGamingPunish?.Invoke(sender, e, data, result); } - public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - AfterGamingPunish?.Invoke(sender, e, data); + AfterGamingPunish?.Invoke(sender, e, data, result); } - public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - SucceedGamingPunish?.Invoke(sender, e, data); + SucceedGamingPunish?.Invoke(sender, e, data, result); } - public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data) + public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result) { - FailedGamingPunish?.Invoke(sender, e, data); + FailedGamingPunish?.Invoke(sender, e, data, result); } } } diff --git a/Library/Common/Addon/GameModuleDepend.cs b/Library/Common/Addon/GameModuleDepend.cs new file mode 100644 index 0000000..82c5d06 --- /dev/null +++ b/Library/Common/Addon/GameModuleDepend.cs @@ -0,0 +1,28 @@ +namespace Milimoe.FunGame.Core.Library.Common.Addon +{ + /// + /// 模组的依赖集合 + /// + public readonly struct GameModuleDepend(string[] Maps, string[] Characters, string[] Items, string[] Skills) + { + /// + /// 模组所使用的地图组 + /// + public string[] Maps { get; } = Maps; + + /// + /// 模组所使用的角色组 + /// + public string[] Characters { get; } = Characters; + + /// + /// 模组所使用的物品组 + /// + public string[] Items { get; } = Items; + + /// + /// 模组所使用的技能组 + /// + public string[] Skills { get; } = Skills; + } +} diff --git a/Library/Common/Addon/GameModeServer.cs b/Library/Common/Addon/GameModuleServer.cs similarity index 85% rename from Library/Common/Addon/GameModeServer.cs rename to Library/Common/Addon/GameModuleServer.cs index 1fde040..25b85cc 100644 --- a/Library/Common/Addon/GameModeServer.cs +++ b/Library/Common/Addon/GameModuleServer.cs @@ -7,7 +7,7 @@ using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Library.Common.Addon { - public abstract class GameModeServer : IGameModeServer + public abstract class GameModuleServer : IGameModuleServer { /// /// 模组名称 @@ -35,14 +35,14 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon public abstract string DefaultMap { get; } /// - /// 模组所使用的地图 + /// 模组的依赖集合 /// - public abstract string[] Maps { get; } + public abstract GameModuleDepend GameModuleDepend { get; } /// /// 包含了一些常用方法的控制器 /// - public AddonController Controller + public BaseAddonController Controller { get => _Controller ?? throw new NotImplementedException(); set => _Controller = value; @@ -51,19 +51,19 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// /// 控制器内部变量 /// - protected AddonController? _Controller; + private BaseAddonController? _Controller; /// /// 启动服务器监听 请在此处实现服务器逻辑 /// - /// + /// /// /// /// /// /// /// - public abstract bool StartServer(string GameMode, Room Room, List Users, IServerModel RoomMasterServerModel, Dictionary OthersServerModel, params object[] Args); + public abstract bool StartServer(string GameModule, Room Room, List Users, IServerModel RoomMasterServerModel, Dictionary OthersServerModel, params object[] Args); /// /// 接收并处理GamingMessage diff --git a/Library/Common/Addon/ItemMode.cs b/Library/Common/Addon/ItemModule.cs similarity index 97% rename from Library/Common/Addon/ItemMode.cs rename to Library/Common/Addon/ItemModule.cs index a88816b..e79a6b1 100644 --- a/Library/Common/Addon/ItemMode.cs +++ b/Library/Common/Addon/ItemModule.cs @@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons; namespace Milimoe.FunGame.Core.Library.Common.Addon { - public abstract class ItemMode : IAddon + public abstract class ItemModule : IAddon { /// /// 模组名称 diff --git a/Library/Common/Addon/Plugin.cs b/Library/Common/Addon/Plugin.cs index 71ed2a7..edbb5c3 100644 --- a/Library/Common/Addon/Plugin.cs +++ b/Library/Common/Addon/Plugin.cs @@ -31,16 +31,25 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon /// /// 包含了一些常用方法的控制器 /// - public AddonController Controller + public AddonController Controller { get => _Controller ?? throw new NotImplementedException(); - set => _Controller = value; + internal set => _Controller = value; + } + + /// + /// base控制器,没有DataRequest + /// + BaseAddonController IAddonController.Controller + { + get => Controller; + set => _Controller = (AddonController?)value; } /// /// 控制器内部变量 /// - protected AddonController? _Controller; + private AddonController? _Controller; /// /// 加载标记 diff --git a/Library/Common/Addon/SkillMode.cs b/Library/Common/Addon/SkillModule.cs similarity index 97% rename from Library/Common/Addon/SkillMode.cs rename to Library/Common/Addon/SkillModule.cs index 8962f98..2292c5b 100644 --- a/Library/Common/Addon/SkillMode.cs +++ b/Library/Common/Addon/SkillModule.cs @@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons; namespace Milimoe.FunGame.Core.Library.Common.Addon { - public abstract class SkillMode : IAddon + public abstract class SkillModule : IAddon { /// /// 模组名称 diff --git a/Library/Common/Event/GamingEventArgs.cs b/Library/Common/Event/GamingEventArgs.cs index b468caa..df762ec 100644 --- a/Library/Common/Event/GamingEventArgs.cs +++ b/Library/Common/Event/GamingEventArgs.cs @@ -2,10 +2,10 @@ namespace Milimoe.FunGame.Core.Library.Common.Event { - public class GamingEventArgs(Room room, List users, List characters) : GeneralEventArgs + public class GamingEventArgs(Room room, List users, Dictionary? characters = null) : GeneralEventArgs { public Room Room { get; } = room; public List Users { get; } = users; - public List Characters { get; } = characters; + public Dictionary Characters { get; } = characters ?? []; } } diff --git a/Library/Common/Event/RoomEventArgs.cs b/Library/Common/Event/RoomEventArgs.cs index c197bab..b4bbbe4 100644 --- a/Library/Common/Event/RoomEventArgs.cs +++ b/Library/Common/Event/RoomEventArgs.cs @@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Event public long RoomMaster { get; set; } = 0; public RoomType RoomType { get; set; } = RoomType.All; public string RoomTypeString { get; set; } = RoomSet.All; - public string GameMode { get; set; } = ""; + public string GameModule { get; set; } = ""; public string GameMap { get; set; } = ""; public RoomState RoomState { get; set; } = RoomState.Created; public bool HasPassword => Password.Trim() != ""; @@ -31,7 +31,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Event RoomID = room.Roomid; RoomMaster = room.RoomMaster != null ? room.RoomMaster.Id : 0; RoomType = room.RoomType; - GameMode = room.GameMode; + GameModule = room.GameModule; GameMap = room.GameMap; RoomTypeString = room.RoomType switch { diff --git a/Library/Common/JsonConverter/RoomConverter.cs b/Library/Common/JsonConverter/RoomConverter.cs index 5e417de..3d7f263 100644 --- a/Library/Common/JsonConverter/RoomConverter.cs +++ b/Library/Common/JsonConverter/RoomConverter.cs @@ -54,8 +54,8 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter room.RoomType = (RoomType)reader.GetInt64(); break; - case RoomQuery.Column_GameMode: - room.GameMode = reader.GetString() ?? ""; + case RoomQuery.Column_GameModule: + room.GameModule = reader.GetString() ?? ""; break; case RoomQuery.Column_GameMap: @@ -88,7 +88,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter writer.WriteString(RoomQuery.Column_RoomID, value.Roomid); writer.WriteString(RoomQuery.Column_CreateTime, value.CreateTime.ToString(General.GeneralDateTimeFormat)); writer.WriteString(RoomQuery.Column_RoomMaster, JsonSerializer.Serialize(value.RoomMaster, typeof(User), options)); - writer.WriteString(RoomQuery.Column_GameMode, value.GameMode); + writer.WriteString(RoomQuery.Column_GameModule, value.GameModule); writer.WriteString(RoomQuery.Column_GameMap, value.GameMap); writer.WriteNumber(RoomQuery.Column_RoomType, (long)value.RoomType); writer.WriteNumber(RoomQuery.Column_RoomState, (long)value.RoomState); diff --git a/Library/Constant/ConstantSet.cs b/Library/Constant/ConstantSet.cs index ebf0ef1..0a909ef 100644 --- a/Library/Constant/ConstantSet.cs +++ b/Library/Constant/ConstantSet.cs @@ -19,7 +19,7 @@ namespace Milimoe.FunGame.Core.Library.Constant public const string RemoteServerIP = "RemoteServerIP"; public const string DBConnection = "DBConnection"; public const string GetServerSettings = "GetServerSettings"; - public const string GameModeList = "GameModeList"; + public const string GameModuleList = "GameModuleList"; public const string GameMapList = "GameMapList"; } } @@ -215,7 +215,7 @@ namespace Milimoe.FunGame.Core.Library.Constant public const string FUNGAME_IMPL = "FunGame.Implement"; public static string EXEFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory; // 程序目录 public static string PluginFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"plugins\"; // 插件目录 - public static string GameModeFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"gamemods\"; // 游戏模组目录 + public static string GameModuleFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"modules\"; // 游戏模组目录 public static string GameMapFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"maps\"; // 游戏地图目录 } diff --git a/Library/Constant/FunGameInfo.cs b/Library/Constant/FunGameInfo.cs index f6f7da0..058d759 100644 --- a/Library/Constant/FunGameInfo.cs +++ b/Library/Constant/FunGameInfo.cs @@ -39,7 +39,7 @@ FunGame.FunGame_Server => FunGame_Server, _ => "" }; - return type + " [版本: " + FunGame_Version + FunGame_VersionPatch + "]\n" + (type.Equals(FunGame_Desktop) ? @"©" : "(C)") + "2023 Milimoe. 保留所有权利\n"; + return type + " [版本: " + FunGame_Version + FunGame_VersionPatch + "]\n" + (type.Equals(FunGame_Desktop) ? @"©" : "(C)") + "2024 Milimoe. 保留所有权利\n"; } } } diff --git a/Library/Constant/MethodEnum.cs b/Library/Constant/MethodEnum.cs index c3b0bc8..432a240 100644 --- a/Library/Constant/MethodEnum.cs +++ b/Library/Constant/MethodEnum.cs @@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Library.Constant RemoteServerIP, DBConnection, GetServerSettings, - GameModeList, + GameModuleList, GameMapList } } diff --git a/Library/Constant/TypeEnum.cs b/Library/Constant/TypeEnum.cs index 076277a..e1a0dc2 100644 --- a/Library/Constant/TypeEnum.cs +++ b/Library/Constant/TypeEnum.cs @@ -407,6 +407,6 @@ namespace Milimoe.FunGame.Core.Library.Constant Interface, DataRequest, Plugin, - GameMode + GameModule } } diff --git a/Library/Exception/Exception.cs b/Library/Exception/Exception.cs index c9dcb61..dcf109e 100644 --- a/Library/Exception/Exception.cs +++ b/Library/Exception/Exception.cs @@ -159,4 +159,9 @@ { public override string Message => "构造对象实例遇到错误 (#10032)"; } + + public class ModuleServerNewDataRequestException : Exception + { + public override string Message => "试图在GameModuleServer类中创建数据请求 (#10033)"; + } } diff --git a/Library/SQLScript/Entity/RoomQuery.cs b/Library/SQLScript/Entity/RoomQuery.cs index 86f0dba..cea243e 100644 --- a/Library/SQLScript/Entity/RoomQuery.cs +++ b/Library/SQLScript/Entity/RoomQuery.cs @@ -9,7 +9,7 @@ public const string Column_RoomMaster = "RoomMaster"; public const string Column_RoomMasterName = "RoomMasterName"; public const string Column_RoomType = "RoomType"; - public const string Column_GameMode = "GameMode"; + public const string Column_GameModule = "GameModule"; public const string Column_GameMap = "GameMap"; public const string Column_RoomState = "RoomState"; public const string Column_IsRank = "IsRank"; @@ -18,13 +18,13 @@ public const string Select_Rooms = $"{Command_Select} {TableName}.{Command_All}, {UserQuery.TableName}.{UserQuery.Column_Username} {Command_As} {Column_RoomMasterName} " + $"{Command_From} {TableName} {Command_LeftJoin} {UserQuery.TableName} {Command_On} {UserQuery.TableName}.{UserQuery.Column_UID} = {TableName}.{Column_RoomMaster}"; - public static string Insert_CreateRoom(string RoomID, long RoomMaster, Library.Constant.RoomType RoomType, string GameMode, string GameMap, bool IsRank, string Password) + public static string Insert_CreateRoom(string RoomID, long RoomMaster, Library.Constant.RoomType RoomType, string GameModule, string GameMap, bool IsRank, string Password) { Library.Constant.RoomState RoomState = Library.Constant.RoomState.Created; DateTime NowTime = DateTime.Now; bool HasPass = Password.Trim() != ""; - return $"{Command_Insert} {Command_Into} {TableName} ({Column_RoomID}, {Column_CreateTime}, {Column_RoomMaster}, {Column_RoomType}, {Column_GameMode}, {Column_GameMap}, {Column_RoomState}, {Column_IsRank}, {Column_HasPass}, {Column_Password})" + - $" {Command_Values} ('{RoomID}', '{NowTime}', {RoomMaster}, {(int)RoomType}, '{GameMode}', '{GameMap}', {(int)RoomState}, {(IsRank ? 1 : 0)}, {(HasPass ? 1 : 0)}, '{Password}')"; + return $"{Command_Insert} {Command_Into} {TableName} ({Column_RoomID}, {Column_CreateTime}, {Column_RoomMaster}, {Column_RoomType}, {Column_GameModule}, {Column_GameMap}, {Column_RoomState}, {Column_IsRank}, {Column_HasPass}, {Column_Password})" + + $" {Command_Values} ('{RoomID}', '{NowTime}', {RoomMaster}, {(int)RoomType}, '{GameModule}', '{GameMap}', {(int)RoomState}, {(IsRank ? 1 : 0)}, {(HasPass ? 1 : 0)}, '{Password}')"; } public static string Delete_Rooms(params string[] roomids) diff --git a/Model/Gaming.cs b/Model/Gaming.cs index 6708568..d903cfe 100644 --- a/Model/Gaming.cs +++ b/Model/Gaming.cs @@ -13,474 +13,481 @@ 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; + /// + /// 使用的模组实例 + /// + public GameModule GameModule { get; } - private Gaming(GameMode GameMode, Room Room, List Users) + /// + /// 游戏的参数 + /// + public GamingEventArgs EventArgs { get; } + + private Gaming(GameModule module, Room room, List users) { - this.GameMode = GameMode; - this.Room = Room; - this.Users = Users; - Characters = []; - EventArgs = new(Room, Users, Characters); + GameModule = module; + EventArgs = new(room, users); } /// /// 传入游戏所需的参数,构造一个Gaming实例 /// - /// - /// - /// + /// + /// + /// + /// /// - public static Gaming StartGame(GameMode GameMode, Room Room, List Users) + public static Gaming StartGame(GameModule module, Room room, List users, params object[] args) { - Gaming instance = new(GameMode, Room, Users); + Gaming instance = new(module, room, users); // 新建线程来启动模组的界面 TaskUtility.NewTask(() => { - GameMode.StartUI(instance.EventArgs); + module.StartUI(); }); + // 启动模组主线程 + module.StartGame(instance, args); return instance; } /// /// 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 /// 客户端也可以参照此方法自行实现 - /// 此方法目的是为了触发 的局内事件实现 + /// 此方法目的是为了触发 的局内事件实现 /// - /// - /// - public void GamingHandler(GamingType GamingType, Hashtable Data) + /// 消息类型 + /// 接收到的数据 + /// 底层会将哈希表中的数据发送给服务器 + public Hashtable GamingHandler(GamingType type, Hashtable data) { - switch (GamingType) + Hashtable result = []; + switch (type) { case GamingType.Connect: - Connect(Data); + Connect(data, result); break; case GamingType.Disconnect: - Disconnect(Data); + Disconnect(data, result); break; case GamingType.Reconnect: - Reconnect(Data); + Reconnect(data, result); break; case GamingType.BanCharacter: - BanCharacter(Data); + BanCharacter(data, result); break; case GamingType.PickCharacter: - PickCharacter(Data); + PickCharacter(data, result); break; case GamingType.Random: - Random(Data); + Random(data, result); break; case GamingType.Round: - Round(Data); + Round(data, result); break; case GamingType.LevelUp: - LevelUp(Data); + LevelUp(data, result); break; case GamingType.Move: - Move(Data); + Move(data, result); break; case GamingType.Attack: - Attack(Data); + Attack(data, result); break; case GamingType.Skill: - Skill(Data); + Skill(data, result); break; case GamingType.Item: - Item(Data); + Item(data, result); break; case GamingType.Magic: - Magic(Data); + Magic(data, result); break; case GamingType.Buy: - Buy(Data); + Buy(data, result); break; case GamingType.SuperSkill: - SuperSkill(Data); + SuperSkill(data, result); break; case GamingType.Pause: - Pause(Data); + Pause(data, result); break; case GamingType.Unpause: - Unpause(Data); + Unpause(data, result); break; case GamingType.Surrender: - Surrender(Data); + Surrender(data, result); break; case GamingType.UpdateInfo: - UpdateInfo(Data); + UpdateInfo(data, result); break; case GamingType.Punish: - Punish(Data); + Punish(data, result); break; case GamingType.None: default: break; } + return result; } - private void Connect(Hashtable data) + private void Connect(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingConnectEvent(this, EventArgs, data); + GameModule.OnBeforeGamingConnectEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingConnectEvent(this, EventArgs, data); + GameModule.OnSucceedGamingConnectEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingConnectEvent(this, EventArgs, data); + GameModule.OnFailedGamingConnectEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingConnectEvent(this, EventArgs, data); + GameModule.OnAfterGamingConnectEvent(this, EventArgs, data, result); } - private void Disconnect(Hashtable data) + private void Disconnect(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingDisconnectEvent(this, EventArgs, data); + GameModule.OnBeforeGamingDisconnectEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingDisconnectEvent(this, EventArgs, data); + GameModule.OnSucceedGamingDisconnectEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingDisconnectEvent(this, EventArgs, data); + GameModule.OnFailedGamingDisconnectEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingDisconnectEvent(this, EventArgs, data); + GameModule.OnAfterGamingDisconnectEvent(this, EventArgs, data, result); } - private void Reconnect(Hashtable data) + private void Reconnect(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingReconnectEvent(this, EventArgs, data); + GameModule.OnBeforeGamingReconnectEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingReconnectEvent(this, EventArgs, data); + GameModule.OnSucceedGamingReconnectEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingReconnectEvent(this, EventArgs, data); + GameModule.OnFailedGamingReconnectEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingReconnectEvent(this, EventArgs, data); + GameModule.OnAfterGamingReconnectEvent(this, EventArgs, data, result); } - private void BanCharacter(Hashtable data) + private void BanCharacter(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingBanCharacterEvent(this, EventArgs, data); + GameModule.OnBeforeGamingBanCharacterEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingBanCharacterEvent(this, EventArgs, data); + GameModule.OnSucceedGamingBanCharacterEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingBanCharacterEvent(this, EventArgs, data); + GameModule.OnFailedGamingBanCharacterEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingBanCharacterEvent(this, EventArgs, data); + GameModule.OnAfterGamingBanCharacterEvent(this, EventArgs, data, result); } - private void PickCharacter(Hashtable data) + private void PickCharacter(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingPickCharacterEvent(this, EventArgs, data); + GameModule.OnBeforeGamingPickCharacterEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingPickCharacterEvent(this, EventArgs, data); + GameModule.OnSucceedGamingPickCharacterEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingPickCharacterEvent(this, EventArgs, data); + GameModule.OnFailedGamingPickCharacterEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingPickCharacterEvent(this, EventArgs, data); + GameModule.OnAfterGamingPickCharacterEvent(this, EventArgs, data, result); } - private void Random(Hashtable data) + private void Random(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingRandomEvent(this, EventArgs, data); + GameModule.OnBeforeGamingRandomEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingRandomEvent(this, EventArgs, data); + GameModule.OnSucceedGamingRandomEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingRandomEvent(this, EventArgs, data); + GameModule.OnFailedGamingRandomEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingRandomEvent(this, EventArgs, data); + GameModule.OnAfterGamingRandomEvent(this, EventArgs, data, result); } - private void Round(Hashtable data) + private void Round(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingRoundEvent(this, EventArgs, data); + GameModule.OnBeforeGamingRoundEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingRoundEvent(this, EventArgs, data); + GameModule.OnSucceedGamingRoundEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingRoundEvent(this, EventArgs, data); + GameModule.OnFailedGamingRoundEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingRoundEvent(this, EventArgs, data); + GameModule.OnAfterGamingRoundEvent(this, EventArgs, data, result); } - private void LevelUp(Hashtable data) + private void LevelUp(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingLevelUpEvent(this, EventArgs, data); + GameModule.OnBeforeGamingLevelUpEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingLevelUpEvent(this, EventArgs, data); + GameModule.OnSucceedGamingLevelUpEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingLevelUpEvent(this, EventArgs, data); + GameModule.OnFailedGamingLevelUpEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingLevelUpEvent(this, EventArgs, data); + GameModule.OnAfterGamingLevelUpEvent(this, EventArgs, data, result); } - private void Move(Hashtable data) + private void Move(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingMoveEvent(this, EventArgs, data); + GameModule.OnBeforeGamingMoveEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingMoveEvent(this, EventArgs, data); + GameModule.OnSucceedGamingMoveEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingMoveEvent(this, EventArgs, data); + GameModule.OnFailedGamingMoveEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingMoveEvent(this, EventArgs, data); + GameModule.OnAfterGamingMoveEvent(this, EventArgs, data, result); } - private void Attack(Hashtable data) + private void Attack(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingAttackEvent(this, EventArgs, data); + GameModule.OnBeforeGamingAttackEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingAttackEvent(this, EventArgs, data); + GameModule.OnSucceedGamingAttackEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingAttackEvent(this, EventArgs, data); + GameModule.OnFailedGamingAttackEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingAttackEvent(this, EventArgs, data); + GameModule.OnAfterGamingAttackEvent(this, EventArgs, data, result); } - private void Skill(Hashtable data) + private void Skill(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingSkillEvent(this, EventArgs, data); + GameModule.OnBeforeGamingSkillEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingSkillEvent(this, EventArgs, data); + GameModule.OnSucceedGamingSkillEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingSkillEvent(this, EventArgs, data); + GameModule.OnFailedGamingSkillEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingSkillEvent(this, EventArgs, data); + GameModule.OnAfterGamingSkillEvent(this, EventArgs, data, result); } - private void Item(Hashtable data) + private void Item(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingItemEvent(this, EventArgs, data); + GameModule.OnBeforeGamingItemEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingItemEvent(this, EventArgs, data); + GameModule.OnSucceedGamingItemEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingItemEvent(this, EventArgs, data); + GameModule.OnFailedGamingItemEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingItemEvent(this, EventArgs, data); + GameModule.OnAfterGamingItemEvent(this, EventArgs, data, result); } - private void Magic(Hashtable data) + private void Magic(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingMagicEvent(this, EventArgs, data); + GameModule.OnBeforeGamingMagicEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingMagicEvent(this, EventArgs, data); + GameModule.OnSucceedGamingMagicEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingMagicEvent(this, EventArgs, data); + GameModule.OnFailedGamingMagicEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingMagicEvent(this, EventArgs, data); + GameModule.OnAfterGamingMagicEvent(this, EventArgs, data, result); } - private void Buy(Hashtable data) + private void Buy(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingBuyEvent(this, EventArgs, data); + GameModule.OnBeforeGamingBuyEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingBuyEvent(this, EventArgs, data); + GameModule.OnSucceedGamingBuyEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingBuyEvent(this, EventArgs, data); + GameModule.OnFailedGamingBuyEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingBuyEvent(this, EventArgs, data); + GameModule.OnAfterGamingBuyEvent(this, EventArgs, data, result); } - private void SuperSkill(Hashtable data) + private void SuperSkill(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingSuperSkillEvent(this, EventArgs, data); + GameModule.OnBeforeGamingSuperSkillEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingSuperSkillEvent(this, EventArgs, data); + GameModule.OnSucceedGamingSuperSkillEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingSuperSkillEvent(this, EventArgs, data); + GameModule.OnFailedGamingSuperSkillEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingSuperSkillEvent(this, EventArgs, data); + GameModule.OnAfterGamingSuperSkillEvent(this, EventArgs, data, result); } - private void Pause(Hashtable data) + private void Pause(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingPauseEvent(this, EventArgs, data); + GameModule.OnBeforeGamingPauseEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingPauseEvent(this, EventArgs, data); + GameModule.OnSucceedGamingPauseEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingPauseEvent(this, EventArgs, data); + GameModule.OnFailedGamingPauseEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingPauseEvent(this, EventArgs, data); + GameModule.OnAfterGamingPauseEvent(this, EventArgs, data, result); } - private void Unpause(Hashtable data) + private void Unpause(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingUnpauseEvent(this, EventArgs, data); + GameModule.OnBeforeGamingUnpauseEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingUnpauseEvent(this, EventArgs, data); + GameModule.OnSucceedGamingUnpauseEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingUnpauseEvent(this, EventArgs, data); + GameModule.OnFailedGamingUnpauseEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingUnpauseEvent(this, EventArgs, data); + GameModule.OnAfterGamingUnpauseEvent(this, EventArgs, data, result); } - private void Surrender(Hashtable data) + private void Surrender(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingSurrenderEvent(this, EventArgs, data); + GameModule.OnBeforeGamingSurrenderEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingSurrenderEvent(this, EventArgs, data); + GameModule.OnSucceedGamingSurrenderEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingSurrenderEvent(this, EventArgs, data); + GameModule.OnFailedGamingSurrenderEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingSurrenderEvent(this, EventArgs, data); + GameModule.OnAfterGamingSurrenderEvent(this, EventArgs, data, result); } - private void UpdateInfo(Hashtable data) + private void UpdateInfo(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingUpdateInfoEvent(this, EventArgs, data); + GameModule.OnBeforeGamingUpdateInfoEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data); + GameModule.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingUpdateInfoEvent(this, EventArgs, data); + GameModule.OnFailedGamingUpdateInfoEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingUpdateInfoEvent(this, EventArgs, data); + GameModule.OnAfterGamingUpdateInfoEvent(this, EventArgs, data, result); } - private void Punish(Hashtable data) + private void Punish(Hashtable data, Hashtable result) { - GameMode.OnBeforeGamingPunishEvent(this, EventArgs, data); + GameModule.OnBeforeGamingPunishEvent(this, EventArgs, data, result); if (EventArgs.Cancel) { return; } if (!EventArgs.Cancel) { - GameMode.OnSucceedGamingPunishEvent(this, EventArgs, data); + GameModule.OnSucceedGamingPunishEvent(this, EventArgs, data, result); } else { - GameMode.OnFailedGamingPunishEvent(this, EventArgs, data); + GameModule.OnFailedGamingPunishEvent(this, EventArgs, data, result); } - GameMode.OnAfterGamingPunishEvent(this, EventArgs, data); + GameModule.OnAfterGamingPunishEvent(this, EventArgs, data, result); } } } diff --git a/Service/AddonManager.cs b/Service/AddonManager.cs index b700c3a..50247f3 100644 --- a/Service/AddonManager.cs +++ b/Service/AddonManager.cs @@ -42,32 +42,32 @@ namespace Milimoe.FunGame.Core.Service } /// - /// 从gamemodes目录加载所有模组 + /// 从modules目录加载所有模组 /// - /// + /// /// /// /// /// /// /// - internal static Dictionary LoadGameModes(Dictionary gamemodes, List characters, List skills, List items, Hashtable delegates, params object[] otherobjs) + internal static Dictionary LoadGameModules(Dictionary modules, List characters, List skills, List items, Hashtable delegates, params object[] otherobjs) { - if (!Directory.Exists(ReflectionSet.GameModeFolderPath)) return gamemodes; + if (!Directory.Exists(ReflectionSet.GameModuleFolderPath)) return modules; - string[] dlls = Directory.GetFiles(ReflectionSet.GameModeFolderPath, "*.dll"); + string[] dlls = Directory.GetFiles(ReflectionSet.GameModuleFolderPath, "*.dll"); foreach (string dll in dlls) { Assembly assembly = Assembly.LoadFrom(dll); - foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameMode)))) + foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModule)))) { - GameMode? instance = (GameMode?)Activator.CreateInstance(type); + GameModule? instance = (GameModule?)Activator.CreateInstance(type); if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "") { instance.Controller = new(instance, delegates); - gamemodes.TryAdd(instance.Name, instance); + modules.TryAdd(instance.Name, instance); } } @@ -99,36 +99,36 @@ namespace Milimoe.FunGame.Core.Service } } - return gamemodes; + return modules; } /// - /// 从gamemodes目录加载所有适用于服务器的模组 + /// 从modules目录加载所有适用于服务器的模组 /// - /// + /// /// /// /// /// /// /// - internal static Dictionary LoadGameModesForServer(Dictionary gamemodes, List characters, List skills, List items, Hashtable delegates, params object[] otherobjs) + internal static Dictionary LoadGameModulesForServer(Dictionary modules, List characters, List skills, List items, Hashtable delegates, params object[] otherobjs) { - if (!Directory.Exists(ReflectionSet.GameModeFolderPath)) return gamemodes; + if (!Directory.Exists(ReflectionSet.GameModuleFolderPath)) return modules; - string[] dlls = Directory.GetFiles(ReflectionSet.GameModeFolderPath, "*.dll"); + string[] dlls = Directory.GetFiles(ReflectionSet.GameModuleFolderPath, "*.dll"); foreach (string dll in dlls) { Assembly assembly = Assembly.LoadFrom(dll); - foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModeServer)))) + foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModuleServer)))) { - GameModeServer? instance = (GameModeServer?)Activator.CreateInstance(type); + GameModuleServer? instance = (GameModuleServer?)Activator.CreateInstance(type); if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "") { instance.Controller = new(instance, delegates); - gamemodes.TryAdd(instance.Name, instance); + modules.TryAdd(instance.Name, instance); } } @@ -160,18 +160,18 @@ namespace Milimoe.FunGame.Core.Service } } - return gamemodes; + return modules; } /// - /// 从gamemaps目录加载所有地图 + /// 从maps目录加载所有地图 /// - /// + /// /// /// - internal static Dictionary LoadGameMaps(Dictionary gamemaps, params object[] objs) + internal static Dictionary LoadGameMaps(Dictionary maps, params object[] objs) { - if (!Directory.Exists(ReflectionSet.GameMapFolderPath)) return gamemaps; + if (!Directory.Exists(ReflectionSet.GameMapFolderPath)) return maps; string[] dlls = Directory.GetFiles(ReflectionSet.GameMapFolderPath, "*.dll"); @@ -184,12 +184,12 @@ namespace Milimoe.FunGame.Core.Service GameMap? instance = (GameMap?)Activator.CreateInstance(type); if (instance != null && instance.Load(objs) && instance.Name.Trim() != "") { - gamemaps.TryAdd(instance.Name, instance); + maps.TryAdd(instance.Name, instance); } } } - return gamemaps; + return maps; } } } \ No newline at end of file