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