统一命名 并禁止GameModuleServer调用DataRequest (#81)

* 统一命名 并禁止GameModuleServer调用DataRequest

* 添加了GameModuleDepend (依赖集合) 用于整合Maps Characters Items Skills
This commit is contained in:
milimoe 2024-08-01 20:40:25 +08:00 committed by GitHub
parent e944b0232c
commit c51b7c50fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
40 changed files with 1210 additions and 751 deletions

View File

@ -13,9 +13,9 @@ namespace Milimoe.FunGame.Core.Api.Factory
return RoomFactory.Create(); 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);
} }
} }
} }

View File

@ -69,15 +69,15 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <param name="CreateTime">创建时间</param> /// <param name="CreateTime">创建时间</param>
/// <param name="RoomMaster">房主</param> /// <param name="RoomMaster">房主</param>
/// <param name="RoomType">房间类型</param> /// <param name="RoomType">房间类型</param>
/// <param name="GameMode">游戏模组</param> /// <param name="GameModule">游戏模组</param>
/// <param name="GameMap"></param> /// <param name="GameMap"></param>
/// <param name="RoomState">房间状态</param> /// <param name="RoomState">房间状态</param>
/// <param name="IsRank"></param> /// <param name="IsRank"></param>
/// <param name="Password">房间密码</param> /// <param name="Password">房间密码</param>
/// <returns></returns> /// <returns></returns>
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);
} }
/// <summary> /// <summary>
@ -96,12 +96,12 @@ namespace Milimoe.FunGame.Core.Api.Utility
DateTime CreateTime = (DateTime)DrRoom[RoomQuery.Column_CreateTime]; DateTime CreateTime = (DateTime)DrRoom[RoomQuery.Column_CreateTime];
User RoomMaster = User; User RoomMaster = User;
RoomType RoomType = (RoomType)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomType]); 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]; string GameMap = (string)DrRoom[RoomQuery.Column_GameMap];
RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]); RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]);
bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1; bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1;
string Password = (string)DrRoom[RoomQuery.Column_Password]; 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; return room;
} }
@ -135,12 +135,12 @@ namespace Milimoe.FunGame.Core.Api.Utility
} }
} }
RoomType RoomType = (RoomType)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomType]); 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]; string GameMap = (string)DrRoom[RoomQuery.Column_GameMap];
RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]); RoomState RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]);
bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1; bool IsRank = Convert.ToInt32(DrRoom[RoomQuery.Column_IsRank]) == 1;
string Password = (string)DrRoom[RoomQuery.Column_Password]; 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; return list;

View File

@ -6,17 +6,17 @@ using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Api.Utility namespace Milimoe.FunGame.Core.Api.Utility
{ {
public class GameModeLoader public class GameModuleLoader
{ {
/// <summary> /// <summary>
/// 适用于客户端的模组集 /// 适用于客户端的模组集
/// </summary> /// </summary>
public Dictionary<string, GameMode> Modes { get; } = []; public Dictionary<string, GameModule> Modes { get; } = [];
/// <summary> /// <summary>
/// 适用于服务器的模组集 /// 适用于服务器的模组集
/// </summary> /// </summary>
public Dictionary<string, GameModeServer> ServerModes { get; } = []; public Dictionary<string, GameModuleServer> ServerModes { get; } = [];
/// <summary> /// <summary>
/// 游戏地图集 /// 游戏地图集
@ -38,7 +38,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary> /// </summary>
public List<Item> Items { get; } = []; public List<Item> Items { get; } = [];
private GameModeLoader() private GameModuleLoader()
{ {
} }
@ -50,20 +50,20 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <seealso cref="Maps"/> 都会读取 /// <seealso cref="Maps"/> 都会读取
/// </summary> /// </summary>
/// <param name="runtime">传入 <see cref="FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器</param> /// <param name="runtime">传入 <see cref="FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器</param>
/// <param name="delegates">用于构建 <see cref="Controller.AddonController"/></param> /// <param name="delegates">用于构建 <see cref="Controller.AddonController{T}"/></param>
/// <param name="otherobjs">其他需要传入给插件初始化的对象</param> /// <param name="otherobjs">其他需要传入给插件初始化的对象</param>
/// <returns></returns> /// <returns></returns>
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) 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); AddonManager.LoadGameMaps(loader.Maps, otherobjs);
} }
else if (runtime == FunGameInfo.FunGame.FunGame_Server) 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); AddonManager.LoadGameMaps(loader.Maps, otherobjs);
} }
return loader; return loader;
@ -75,7 +75,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary> /// </summary>
/// <param name="name"></param> /// <param name="name"></param>
/// <returns></returns> /// <returns></returns>
public GameMode this[string name] public GameModule this[string name]
{ {
get get
{ {
@ -92,7 +92,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary> /// </summary>
/// <param name="name"></param> /// <param name="name"></param>
/// <returns></returns> /// <returns></returns>
public GameModeServer GetServerMode(string name) public GameModuleServer GetServerMode(string name)
{ {
return ServerModes[name]; return ServerModes[name];
} }

View File

@ -59,7 +59,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
InterfaceMethod.RemoteServerIP => InterfaceSet.Method.RemoteServerIP, InterfaceMethod.RemoteServerIP => InterfaceSet.Method.RemoteServerIP,
InterfaceMethod.DBConnection => InterfaceSet.Method.DBConnection, InterfaceMethod.DBConnection => InterfaceSet.Method.DBConnection,
InterfaceMethod.GetServerSettings => InterfaceSet.Method.GetServerSettings, InterfaceMethod.GetServerSettings => InterfaceSet.Method.GetServerSettings,
InterfaceMethod.GameModeList => InterfaceSet.Method.GameModeList, InterfaceMethod.GameModuleList => InterfaceSet.Method.GameModuleList,
InterfaceMethod.GameMapList => InterfaceSet.Method.GameMapList, InterfaceMethod.GameMapList => InterfaceSet.Method.GameMapList,
_ => "" _ => ""
}; };

View File

@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <summary> /// <summary>
/// 构建一个插件读取器并读取插件 /// 构建一个插件读取器并读取插件
/// </summary> /// </summary>
/// <param name="delegates">用于构建 <see cref="Controller.AddonController"/></param> /// <param name="delegates">用于构建 <see cref="Controller.AddonController{T}"/></param>
/// <param name="otherobjs">其他需要传入给插件初始化的对象</param> /// <param name="otherobjs">其他需要传入给插件初始化的对象</param>
/// <returns></returns> /// <returns></returns>
public static PluginLoader LoadPlugins(Hashtable delegates, params object[] otherobjs) public static PluginLoader LoadPlugins(Hashtable delegates, params object[] otherobjs)

View File

@ -5,20 +5,12 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Controller namespace Milimoe.FunGame.Core.Controller
{ {
public class AddonController /// <summary>
/// 这个控制器在Base的基础上添加了DataRequest
/// </summary>
/// <typeparam name="T"></typeparam>
public class AddonController<T> : BaseAddonController<T> where T : IAddon
{ {
private IAddon Addon { get; }
/// <summary>
/// 输出系统消息
/// </summary>
private Action<string> MaskMethod_WriteLine { get; set; }
/// <summary>
/// 输出错误消息
/// </summary>
private Action<Exception> MaskMethod_Error { get; set; }
/// <summary> /// <summary>
/// 基于本地已连接的Socket创建新的数据请求 /// 基于本地已连接的Socket创建新的数据请求
/// </summary> /// </summary>
@ -29,62 +21,49 @@ namespace Milimoe.FunGame.Core.Controller
/// </summary> /// </summary>
private Func<DataRequestType, DataRequest> MaskMethod_NewLongRunningDataRequest { get; set; } private Func<DataRequestType, DataRequest> MaskMethod_NewLongRunningDataRequest { get; set; }
/// <summary>
/// 输出系统消息
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public void WriteLine(string msg) => MaskMethod_WriteLine(msg);
/// <summary>
/// 输出错误消息
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public void Error(Exception e) => MaskMethod_Error(e);
/// <summary> /// <summary>
/// 基于本地已连接的Socket创建新的数据请求 /// 基于本地已连接的Socket创建新的数据请求
/// <para>请勿在 <see cref="Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
/// </summary> /// </summary>
/// <param name="type"></param> /// <param name="type"></param>
/// <returns></returns> /// <returns></returns>
public DataRequest NewDataRequest(DataRequestType type) => MaskMethod_NewDataRequest(type); /// <exception cref="ModuleServerNewDataRequestException"></exception>
public DataRequest NewDataRequest(DataRequestType type)
{
if (typeof(T).IsAssignableFrom(typeof(IGameModuleServer)))
{
throw new ModuleServerNewDataRequestException();
}
return MaskMethod_NewDataRequest(type);
}
/// <summary> /// <summary>
/// 基于本地已连接的Socket创建长时间运行的数据请求 /// 基于本地已连接的Socket创建长时间运行的数据请求
/// <para>请勿在 <see cref="Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
/// </summary> /// </summary>
/// <param name="type"></param> /// <param name="type"></param>
/// <returns></returns> /// <returns></returns>
public DataRequest NewLongRunningDataRequest(DataRequestType type) => MaskMethod_NewLongRunningDataRequest(type); /// <exception cref="ModuleServerNewDataRequestException"></exception>
public DataRequest NewLongRunningDataRequest(DataRequestType type)
{
if (typeof(T).IsAssignableFrom(typeof(IGameModuleServer)))
{
throw new ModuleServerNewDataRequestException();
}
return MaskMethod_NewLongRunningDataRequest(type);
}
/// <summary> /// <summary>
/// 新建一个AddonController /// 新建一个AddonController
/// </summary> /// </summary>
/// <param name="Addon"></param> /// <param name="addon"></param>
/// <param name="delegates"></param> /// <param name="delegates"></param>
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<string>)delegates["WriteLine"]! : new(DefaultPrint);
if (delegates.ContainsKey("Error")) MaskMethod_Error = delegates["Error"] != null ? (Action<Exception>)delegates["Error"]! : new(DefaultPrint);
if (delegates.ContainsKey("NewDataRequest")) MaskMethod_NewDataRequest = delegates["NewDataRequest"] != null ? (Func<DataRequestType, DataRequest>)delegates["NewDataRequest"]! : new(DefaultNewDataRequest); if (delegates.ContainsKey("NewDataRequest")) MaskMethod_NewDataRequest = delegates["NewDataRequest"] != null ? (Func<DataRequestType, DataRequest>)delegates["NewDataRequest"]! : new(DefaultNewDataRequest);
if (delegates.ContainsKey("NewLongRunningDataRequest")) MaskMethod_NewLongRunningDataRequest = delegates["NewLongRunningDataRequest"] != null ? (Func<DataRequestType, DataRequest>)delegates["NewLongRunningDataRequest"]! : new(DefaultNewDataRequest); if (delegates.ContainsKey("NewLongRunningDataRequest")) MaskMethod_NewLongRunningDataRequest = delegates["NewLongRunningDataRequest"] != null ? (Func<DataRequestType, DataRequest>)delegates["NewLongRunningDataRequest"]! : new(DefaultNewDataRequest);
MaskMethod_WriteLine ??= new(DefaultPrint);
MaskMethod_Error ??= new(DefaultPrint);
MaskMethod_NewDataRequest ??= new(DefaultNewDataRequest); MaskMethod_NewDataRequest ??= new(DefaultNewDataRequest);
MaskMethod_NewLongRunningDataRequest ??= new(DefaultNewDataRequest); MaskMethod_NewLongRunningDataRequest ??= new(DefaultNewDataRequest);
} }
private void DefaultPrint(string msg) => Console.Write("\r" + msg + "\n\r> "); private DataRequest DefaultNewDataRequest(DataRequestType type) => throw new ConnectFailedException();
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();
}
} }
} }

View File

@ -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
{
/// <summary>
/// 这是通用的控制器,仅提供基本功能
/// </summary>
/// <typeparam name="T">Addon的类型如<see cref="GameModule"/>或者<see cref="Plugin"/></typeparam>
public class BaseAddonController<T> where T : IAddon
{
/// <summary>
/// 控制器的本体
/// </summary>
public T Addon { get; }
/// <summary>
/// 输出系统消息
/// </summary>
protected Action<string> MaskMethod_WriteLine { get; set; }
/// <summary>
/// 输出错误消息
/// </summary>
protected Action<Exception> MaskMethod_Error { get; set; }
/// <summary>
/// 输出系统消息
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public void WriteLine(string msg) => MaskMethod_WriteLine(msg);
/// <summary>
/// 输出错误消息
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public void Error(Exception e) => MaskMethod_Error(e);
/// <summary>
/// 新建一个BaseAddonController
/// </summary>
/// <param name="addon"></param>
/// <param name="delegates"></param>
public BaseAddonController(IAddon addon, Hashtable delegates)
{
Addon = (T)addon;
if (delegates.ContainsKey("WriteLine")) MaskMethod_WriteLine = delegates["WriteLine"] != null ? (Action<string>)delegates["WriteLine"]! : new(DefaultPrint);
if (delegates.ContainsKey("Error")) MaskMethod_Error = delegates["Error"] != null ? (Action<Exception>)delegates["Error"]! : new(DefaultPrint);
MaskMethod_WriteLine ??= new(DefaultPrint);
MaskMethod_Error ??= new(DefaultPrint);
}
/// <summary>
/// 默认的输出错误消息方法
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
private void DefaultPrint(string msg) => Console.Write("\r" + msg + "\n\r> ");
/// <summary>
/// 输出错误消息
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
private void DefaultPrint(Exception e) => DefaultPrint(e.ToString());
}
}

View File

@ -302,7 +302,7 @@
<param name="CreateTime">创建时间</param> <param name="CreateTime">创建时间</param>
<param name="RoomMaster">房主</param> <param name="RoomMaster">房主</param>
<param name="RoomType">房间类型</param> <param name="RoomType">房间类型</param>
<param name="GameMode">游戏模组</param> <param name="GameModule">游戏模组</param>
<param name="GameMap"></param> <param name="GameMap"></param>
<param name="RoomState">房间状态</param> <param name="RoomState">房间状态</param>
<param name="IsRank"></param> <param name="IsRank"></param>
@ -389,64 +389,64 @@
<param name="dr"></param> <param name="dr"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Modes"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Modes">
<summary> <summary>
适用于客户端的模组集 适用于客户端的模组集
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.ServerModes"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.ServerModes">
<summary> <summary>
适用于服务器的模组集 适用于服务器的模组集
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Maps"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Maps">
<summary> <summary>
游戏地图集 游戏地图集
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Characters"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Characters">
<summary> <summary>
角色表 角色表
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Skills"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Skills">
<summary> <summary>
技能表 技能表
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Items"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Items">
<summary> <summary>
物品表 物品表
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.LoadGameModes(Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame,System.Collections.Hashtable,System.Object[])"> <member name="M:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.LoadGameModules(Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame,System.Collections.Hashtable,System.Object[])">
<summary> <summary>
传入 <see cref="T:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器 传入 <see cref="T:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器
<para>runtime = <see cref="F:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame.FunGame_Desktop"/> 时,仅读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Modes"/></para> <para>runtime = <see cref="F:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame.FunGame_Desktop"/> 时,仅读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Modes"/></para>
<para>runtime = <see cref="F:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame.FunGame_Server"/> 时,仅读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.ServerModes"/></para> <para>runtime = <see cref="F:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame.FunGame_Server"/> 时,仅读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.ServerModes"/></para>
<seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Maps"/> 都会读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Maps"/> 都会读取
</summary> </summary>
<param name="runtime">传入 <see cref="T:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器</param> <param name="runtime">传入 <see cref="T:Milimoe.FunGame.Core.Library.Constant.FunGameInfo.FunGame"/> 类型来创建指定端的模组读取器</param>
<param name="delegates">用于构建 <see cref="T:Milimoe.FunGame.Core.Controller.AddonController"/></param> <param name="delegates">用于构建 <see cref="T:Milimoe.FunGame.Core.Controller.AddonController`1"/></param>
<param name="otherobjs">其他需要传入给插件初始化的对象</param> <param name="otherobjs">其他需要传入给插件初始化的对象</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Item(System.String)"> <member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Item(System.String)">
<summary> <summary>
获取对应名称的模组实例 获取对应名称的模组实例
<para>如果需要取得服务器模组的实例,请调用 <see cref="M:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.GetServerMode(System.String)"/></para> <para>如果需要取得服务器模组的实例,请调用 <see cref="M:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.GetServerMode(System.String)"/></para>
</summary> </summary>
<param name="name"></param> <param name="name"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.GetServerMode(System.String)"> <member name="M:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.GetServerMode(System.String)">
<summary> <summary>
获取对应名称的服务器模组实例 获取对应名称的服务器模组实例
</summary> </summary>
<param name="name"></param> <param name="name"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.GetGameMap(System.String)"> <member name="M:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.GetGameMap(System.String)">
<summary> <summary>
获取对应名称的游戏地图 获取对应名称的游戏地图
</summary> </summary>
@ -943,7 +943,7 @@
<summary> <summary>
构建一个插件读取器并读取插件 构建一个插件读取器并读取插件
</summary> </summary>
<param name="delegates">用于构建 <see cref="T:Milimoe.FunGame.Core.Controller.AddonController"/></param> <param name="delegates">用于构建 <see cref="T:Milimoe.FunGame.Core.Controller.AddonController`1"/></param>
<param name="otherobjs">其他需要传入给插件初始化的对象</param> <param name="otherobjs">其他需要传入给插件初始化的对象</param>
<returns></returns> <returns></returns>
</member> </member>
@ -1146,63 +1146,101 @@
<param name="strs"></param> <param name="strs"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_WriteLine"> <member name="T:Milimoe.FunGame.Core.Controller.AddonController`1">
<summary> <summary>
输出系统消息 这个控制器在Base的基础上添加了DataRequest
</summary> </summary>
<typeparam name="T"></typeparam>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_Error"> <member name="P:Milimoe.FunGame.Core.Controller.AddonController`1.MaskMethod_NewDataRequest">
<summary>
输出错误消息
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_NewDataRequest">
<summary> <summary>
基于本地已连接的Socket创建新的数据请求 基于本地已连接的Socket创建新的数据请求
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_NewLongRunningDataRequest"> <member name="P:Milimoe.FunGame.Core.Controller.AddonController`1.MaskMethod_NewLongRunningDataRequest">
<summary> <summary>
基于本地已连接的Socket创建长时间运行的数据请求 基于本地已连接的Socket创建长时间运行的数据请求
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController.WriteLine(System.String)"> <member name="M:Milimoe.FunGame.Core.Controller.AddonController`1.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)">
<summary>
基于本地已连接的Socket创建新的数据请求
</summary>
<param name="type"></param>
<returns></returns>
<exception cref="T:Milimoe.FunGame.ModuleServerNewDataRequestException"></exception>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController`1.NewLongRunningDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)">
<summary>
基于本地已连接的Socket创建长时间运行的数据请求
</summary>
<param name="type"></param>
<returns></returns>
<exception cref="T:Milimoe.FunGame.ModuleServerNewDataRequestException"></exception>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController`1.#ctor(Milimoe.FunGame.Core.Interface.Addons.IAddon,System.Collections.Hashtable)">
<summary>
新建一个AddonController
</summary>
<param name="addon"></param>
<param name="delegates"></param>
</member>
<member name="T:Milimoe.FunGame.Core.Controller.BaseAddonController`1">
<summary>
这是通用的控制器,仅提供基本功能
</summary>
<typeparam name="T">Addon的类型<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/>或者<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/></typeparam>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.BaseAddonController`1.Addon">
<summary>
控制器的本体
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.BaseAddonController`1.MaskMethod_WriteLine">
<summary>
输出系统消息
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.BaseAddonController`1.MaskMethod_Error">
<summary>
输出错误消息
</summary>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.BaseAddonController`1.WriteLine(System.String)">
<summary> <summary>
输出系统消息 输出系统消息
</summary> </summary>
<param name="msg"></param> <param name="msg"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController.Error(System.Exception)"> <member name="M:Milimoe.FunGame.Core.Controller.BaseAddonController`1.Error(System.Exception)">
<summary> <summary>
输出错误消息 输出错误消息
</summary> </summary>
<param name="e"></param> <param name="e"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"> <member name="M:Milimoe.FunGame.Core.Controller.BaseAddonController`1.#ctor(Milimoe.FunGame.Core.Interface.Addons.IAddon,System.Collections.Hashtable)">
<summary> <summary>
基于本地已连接的Socket创建新的数据请求 新建一个BaseAddonController
<para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
</summary> </summary>
<param name="type"></param> <param name="addon"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController.NewLongRunningDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)">
<summary>
基于本地已连接的Socket创建长时间运行的数据请求
<para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
</summary>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.AddonController.#ctor(Milimoe.FunGame.Core.Interface.Addons.IAddon,System.Collections.Hashtable)">
<summary>
新建一个AddonController
</summary>
<param name="Addon"></param>
<param name="delegates"></param> <param name="delegates"></param>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Controller.BaseAddonController`1.DefaultPrint(System.String)">
<summary>
默认的输出错误消息方法
</summary>
<param name="msg"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Controller.BaseAddonController`1.DefaultPrint(System.Exception)">
<summary>
输出错误消息
</summary>
<param name="e"></param>
<returns></returns>
</member>
<member name="T:Milimoe.FunGame.Core.Controller.RunTimeController"> <member name="T:Milimoe.FunGame.Core.Controller.RunTimeController">
<summary> <summary>
此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能 此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能
@ -1518,7 +1556,7 @@
<member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Read(Milimoe.FunGame.Core.Library.Common.Network.ClientSocket)"> <member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Read(Milimoe.FunGame.Core.Library.Common.Network.ClientSocket)">
<summary> <summary>
开始接收客户端消息 开始接收客户端消息
<para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer"/> 中调用此方法</para> <para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer"/> 中调用此方法</para>
</summary> </summary>
<param name="socket"></param> <param name="socket"></param>
<returns></returns> <returns></returns>
@ -1526,7 +1564,7 @@
<member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Start"> <member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Start">
<summary> <summary>
启动对客户端的监听 启动对客户端的监听
<para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer"/> 中调用此方法</para> <para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer"/> 中调用此方法</para>
</summary> </summary>
</member> </member>
<member name="T:Milimoe.FunGame.Core.Interface.IEventHandler"> <member name="T:Milimoe.FunGame.Core.Interface.IEventHandler">
@ -1536,7 +1574,7 @@
</member> </member>
<member name="T:Milimoe.FunGame.Core.Interface.IGamingEventHandler"> <member name="T:Milimoe.FunGame.Core.Interface.IGamingEventHandler">
<summary> <summary>
局内事件的接口,与 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameMode"/> 配套使用 局内事件的接口,与 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 配套使用
</summary> </summary>
</member> </member>
<member name="T:Milimoe.FunGame.Core.Interface.IClient"> <member name="T:Milimoe.FunGame.Core.Interface.IClient">
@ -1549,53 +1587,75 @@
服务器需要实现此接口 服务器需要实现此接口
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Name"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Name">
<summary> <summary>
模组名称 模组名称
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Description"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Description">
<summary> <summary>
模组描述 模组描述
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Version"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Version">
<summary> <summary>
模组版本 模组版本
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Author"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Author">
<summary> <summary>
模组作者 模组作者
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Characters"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Characters">
<summary> <summary>
此模组中包含的角色 此模组中包含的角色
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.IsLoaded"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.IsLoaded">
<summary> <summary>
加载标记 加载标记
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.Load(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.Load(System.Object[])">
<summary> <summary>
加载模组 加载模组
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.AfterLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.AfterLoad">
<summary> <summary>
模组加载后需要做的事 模组加载后需要做的事
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.BeforeLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.BeforeLoad">
<summary> <summary>
允许返回false来阻止加载此模组 允许返回false来阻止加载此模组
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:Milimoe.FunGame.Core.Library.Common.Addon.ExamplePlugin"> <member name="T:Milimoe.FunGame.Core.Library.Common.Addon.Example.ExampleGameModuleConstant">
<summary>
建议使用一个类来存储常量,方便重用
</summary>
</member>
<member name="T:Milimoe.FunGame.Core.Library.Common.Addon.Example.ExampleGameModule">
<summary>
模组:必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/><para/>
继承事件接口并实现其方法来使模组生效。例如继承:<seealso cref="T:Milimoe.FunGame.Core.Interface.IGamingConnectEvent"/><para/>
</summary>
</member>
<member name="T:Milimoe.FunGame.Core.Library.Common.Addon.Example.ExampleGameModuleServer">
<summary>
模组服务器:必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer"/><para/>
使用switch块分类处理 <see cref="T:Milimoe.FunGame.Core.Library.Constant.GamingType"/>
</summary>
</member>
<member name="T:Milimoe.FunGame.Core.Library.Common.Addon.Example.ExampleGameMap">
<summary>
地图:必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameMap"/><para/>
</summary>
</member>
<member name="T:Milimoe.FunGame.Core.Library.Common.Addon.Example.ExamplePlugin">
<summary> <summary>
必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/><para/> 必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/><para/>
继承事件接口并实现其方法来使插件生效。例如继承:<seealso cref="T:Milimoe.FunGame.Core.Interface.ILoginEvent"/> 继承事件接口并实现其方法来使插件生效。例如继承:<seealso cref="T:Milimoe.FunGame.Core.Interface.ILoginEvent"/>
@ -1659,145 +1719,188 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Name"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Name">
<summary> <summary>
模组名称 模组名称
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Description"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Description">
<summary> <summary>
模组描述 模组描述
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Version"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Version">
<summary> <summary>
模组版本 模组版本
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Author"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Author">
<summary> <summary>
模组作者 模组作者
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.DefaultMap"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.DefaultMap">
<summary> <summary>
默认地图 默认地图
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Maps"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.GameModuleDepend">
<summary> <summary>
模组所使用的地图 模组的依赖集合
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.RoomType"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.RoomType">
<summary> <summary>
适用的房间模式 适用的房间模式
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Controller"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Controller">
<summary> <summary>
包含了一些常用方法的控制器 包含了一些常用方法的控制器
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode._Controller"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Milimoe#FunGame#Core#Interface#Addons#IAddonController{Milimoe#FunGame#Core#Interface#Addons#IGameModule}#Controller">
<summary>
base控制器没有DataRequest
</summary>
</member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule._Controller">
<summary> <summary>
控制器内部变量 控制器内部变量
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.StartUI(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.StartGame(Milimoe.FunGame.Core.Model.Gaming,System.Object[])">
<summary>
必须重写此方法,游戏的主要逻辑写在这里面<para/>
此方法会在 <see cref="M:Milimoe.FunGame.Core.Model.Gaming.StartGame(Milimoe.FunGame.Core.Library.Common.Addon.GameModule,Milimoe.FunGame.Core.Entity.Room,System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.User},System.Object[])"/> 时调用<para/>
</summary>
<param name="instance"></param>
<param name="args"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.StartUI(System.Object[])">
<summary> <summary>
如模组有界面,请重写此方法 如模组有界面,请重写此方法
此方法会在StartGame时调用
</summary> </summary>
<param name="args"></param> <param name="args"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.IsLoaded"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.IsLoaded">
<summary> <summary>
加载标记 加载标记
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Load(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Load(System.Object[])">
<summary> <summary>
加载模组 加载模组
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.AfterLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.AfterLoad">
<summary> <summary>
模组加载后需要做的事 模组加载后需要做的事
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BeforeLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BeforeLoad">
<summary> <summary>
允许返回false来阻止加载此模组 允许返回false来阻止加载此模组
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Init(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Init(System.Object[])">
<summary> <summary>
传递委托以便让模组调用 传递委托以便让模组调用
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Session"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Session">
<summary> <summary>
Session对象 Session对象
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Config"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Config">
<summary> <summary>
Config对象 Config对象
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BindEvent"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BindEvent">
<summary> <summary>
绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BeforeLoad"/>后触发 绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BeforeLoad"/>后触发
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Name"> <member name="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend">
<summary>
模组的依赖集合
</summary>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend.#ctor(System.String[],System.String[],System.String[],System.String[])">
<summary>
模组的依赖集合
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend.Maps">
<summary>
模组所使用的地图组
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend.Characters">
<summary>
模组所使用的角色组
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend.Items">
<summary>
模组所使用的物品组
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleDepend.Skills">
<summary>
模组所使用的技能组
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Name">
<summary> <summary>
模组名称 模组名称
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Description"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Description">
<summary> <summary>
模组描述 模组描述
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Version"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Version">
<summary> <summary>
模组版本 模组版本
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Author"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Author">
<summary> <summary>
模组作者 模组作者
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.DefaultMap"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.DefaultMap">
<summary> <summary>
默认地图 默认地图
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Maps"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.GameModuleDepend">
<summary> <summary>
模组所使用的地图 模组的依赖集合
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Controller"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Controller">
<summary> <summary>
包含了一些常用方法的控制器 包含了一些常用方法的控制器
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer._Controller"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer._Controller">
<summary> <summary>
控制器内部变量 控制器内部变量
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.StartServer(System.String,Milimoe.FunGame.Core.Entity.Room,System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.User},Milimoe.FunGame.Core.Interface.Base.IServerModel,System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Interface.Base.IServerModel},System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.StartServer(System.String,Milimoe.FunGame.Core.Entity.Room,System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.User},Milimoe.FunGame.Core.Interface.Base.IServerModel,System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Interface.Base.IServerModel},System.Object[])">
<summary> <summary>
启动服务器监听 请在此处实现服务器逻辑 启动服务器监听 请在此处实现服务器逻辑
</summary> </summary>
<param name="GameMode"></param> <param name="GameModule"></param>
<param name="Room"></param> <param name="Room"></param>
<param name="Users"></param> <param name="Users"></param>
<param name="RoomMasterServerModel"></param> <param name="RoomMasterServerModel"></param>
@ -1805,7 +1908,7 @@
<param name="Args"></param> <param name="Args"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.GamingMessageHandler(System.String,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Collections.Hashtable)"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.GamingMessageHandler(System.String,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Collections.Hashtable)">
<summary> <summary>
接收并处理GamingMessage 接收并处理GamingMessage
</summary> </summary>
@ -1814,68 +1917,68 @@
<param name="data">消息参数</param> <param name="data">消息参数</param>
<returns>底层会将哈希表中的数据发送给客户端</returns> <returns>底层会将哈希表中的数据发送给客户端</returns>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.IsLoaded"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.IsLoaded">
<summary> <summary>
加载标记 加载标记
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.Load(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.Load(System.Object[])">
<summary> <summary>
加载模组 加载模组
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.AfterLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.AfterLoad">
<summary> <summary>
模组加载后需要做的事 模组加载后需要做的事
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.BeforeLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.BeforeLoad">
<summary> <summary>
允许返回false来阻止加载此模组 允许返回false来阻止加载此模组
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Name"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Name">
<summary> <summary>
模组名称 模组名称
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Description"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Description">
<summary> <summary>
模组描述 模组描述
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Version"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Version">
<summary> <summary>
模组版本 模组版本
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Author"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Author">
<summary> <summary>
模组作者 模组作者
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Items"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Items">
<summary> <summary>
此模组中包含的物品 此模组中包含的物品
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.IsLoaded"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.IsLoaded">
<summary> <summary>
加载标记 加载标记
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.Load(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.Load(System.Object[])">
<summary> <summary>
加载模组 加载模组
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.AfterLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.AfterLoad">
<summary> <summary>
模组加载后需要做的事 模组加载后需要做的事
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.BeforeLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.BeforeLoad">
<summary> <summary>
允许返回false来阻止加载此模组 允许返回false来阻止加载此模组
</summary> </summary>
@ -1906,6 +2009,11 @@
包含了一些常用方法的控制器 包含了一些常用方法的控制器
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.Plugin.Milimoe#FunGame#Core#Interface#Addons#IAddonController{Milimoe#FunGame#Core#Interface#Addons#IPlugin}#Controller">
<summary>
base控制器没有DataRequest
</summary>
</member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.Plugin._Controller"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.Plugin._Controller">
<summary> <summary>
控制器内部变量 控制器内部变量
@ -1952,47 +2060,47 @@
绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.Plugin.BeforeLoad"/>后触发 绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.Plugin.BeforeLoad"/>后触发
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Name"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Name">
<summary> <summary>
模组名称 模组名称
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Description"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Description">
<summary> <summary>
模组描述 模组描述
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Version"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Version">
<summary> <summary>
模组版本 模组版本
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Author"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Author">
<summary> <summary>
模组作者 模组作者
</summary> </summary>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Skills"> <member name="P:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Skills">
<summary> <summary>
此模组中包含的技能 此模组中包含的技能
</summary> </summary>
</member> </member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.IsLoaded"> <member name="F:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.IsLoaded">
<summary> <summary>
加载标记 加载标记
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.Load(System.Object[])"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.Load(System.Object[])">
<summary> <summary>
加载模组 加载模组
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.AfterLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.AfterLoad">
<summary> <summary>
模组加载后需要做的事 模组加载后需要做的事
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.BeforeLoad"> <member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.BeforeLoad">
<summary> <summary>
允许返回false来阻止加载此模组 允许返回false来阻止加载此模组
</summary> </summary>
@ -2468,23 +2576,35 @@
客户端需要使用创建此类单例 客户端需要使用创建此类单例
</summary> </summary>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Model.Gaming.StartGame(Milimoe.FunGame.Core.Library.Common.Addon.GameMode,Milimoe.FunGame.Core.Entity.Room,System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.User})"> <member name="P:Milimoe.FunGame.Core.Model.Gaming.GameModule">
<summary>
使用的模组实例
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Model.Gaming.EventArgs">
<summary>
游戏的参数
</summary>
</member>
<member name="M:Milimoe.FunGame.Core.Model.Gaming.StartGame(Milimoe.FunGame.Core.Library.Common.Addon.GameModule,Milimoe.FunGame.Core.Entity.Room,System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.User},System.Object[])">
<summary> <summary>
传入游戏所需的参数构造一个Gaming实例 传入游戏所需的参数构造一个Gaming实例
</summary> </summary>
<param name="GameMode"></param> <param name="module"></param>
<param name="Room"></param> <param name="room"></param>
<param name="Users"></param> <param name="users"></param>
<param name="args"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Model.Gaming.GamingHandler(Milimoe.FunGame.Core.Library.Constant.GamingType,System.Collections.Hashtable)"> <member name="M:Milimoe.FunGame.Core.Model.Gaming.GamingHandler(Milimoe.FunGame.Core.Library.Constant.GamingType,System.Collections.Hashtable)">
<summary> <summary>
需在RunTimeController的SocketHandler_Gaming方法中调用此方法 需在RunTimeController的SocketHandler_Gaming方法中调用此方法
<para>客户端也可以参照此方法自行实现</para> <para>客户端也可以参照此方法自行实现</para>
<para>此方法目的是为了触发 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameMode"/> 的局内事件实现</para> <para>此方法目的是为了触发 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 的局内事件实现</para>
</summary> </summary>
<param name="GamingType"></param> <param name="type">消息类型</param>
<param name="Data"></param> <param name="data">接收到的数据</param>
<returns>底层会将哈希表中的数据发送给服务器</returns>
</member> </member>
<member name="P:Milimoe.FunGame.Core.Model.Session.Server_Address"> <member name="P:Milimoe.FunGame.Core.Model.Session.Server_Address">
<summary> <summary>
@ -2530,11 +2650,11 @@
<param name="otherobjs"></param> <param name="otherobjs"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameModes(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameMode},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Character},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Skill},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Item},System.Collections.Hashtable,System.Object[])"> <member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameModules(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameModule},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Character},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Skill},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Item},System.Collections.Hashtable,System.Object[])">
<summary> <summary>
gamemodes目录加载所有模组 从modules目录加载所有模组
</summary> </summary>
<param name="gamemodes"></param> <param name="modules"></param>
<param name="characters"></param> <param name="characters"></param>
<param name="skills"></param> <param name="skills"></param>
<param name="items"></param> <param name="items"></param>
@ -2542,11 +2662,11 @@
<param name="otherobjs"></param> <param name="otherobjs"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameModesForServer(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Character},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Skill},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Item},System.Collections.Hashtable,System.Object[])"> <member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameModulesForServer(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Character},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Skill},System.Collections.Generic.List{Milimoe.FunGame.Core.Entity.Item},System.Collections.Hashtable,System.Object[])">
<summary> <summary>
gamemodes目录加载所有适用于服务器的模组 从modules目录加载所有适用于服务器的模组
</summary> </summary>
<param name="gamemodes"></param> <param name="modules"></param>
<param name="characters"></param> <param name="characters"></param>
<param name="skills"></param> <param name="skills"></param>
<param name="items"></param> <param name="items"></param>
@ -2556,9 +2676,9 @@
</member> </member>
<member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameMaps(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameMap},System.Object[])"> <member name="M:Milimoe.FunGame.Core.Service.AddonManager.LoadGameMaps(System.Collections.Generic.Dictionary{System.String,Milimoe.FunGame.Core.Library.Common.Addon.GameMap},System.Object[])">
<summary> <summary>
gamemaps目录加载所有地图 从maps目录加载所有地图
</summary> </summary>
<param name="gamemaps"></param> <param name="maps"></param>
<param name="objs"></param> <param name="objs"></param>
<returns></returns> <returns></returns>
</member> </member>

View File

@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Entity
public DateTime CreateTime { get; set; } = General.DefaultTime; public DateTime CreateTime { get; set; } = General.DefaultTime;
public User RoomMaster { get; set; } = General.UnknownUserInstance; public User RoomMaster { get; set; } = General.UnknownUserInstance;
public RoomType RoomType { get; set; } = RoomType.All; public RoomType RoomType { get; set; } = RoomType.All;
public string GameMode { get; set; } = ""; public string GameModule { get; set; } = "";
public string GameMap { get; set; } = ""; public string GameMap { get; set; } = "";
public RoomState RoomState { get; set; } public RoomState RoomState { get; set; }
public bool IsRank { get; set; } = false; public bool IsRank { get; set; } = false;
@ -24,14 +24,14 @@ namespace Milimoe.FunGame.Core.Entity
Statistics = new(this); 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.Id = Id;
this.Roomid = Roomid; this.Roomid = Roomid;
this.CreateTime = CreateTime ?? General.DefaultTime; this.CreateTime = CreateTime ?? General.DefaultTime;
this.RoomMaster = RoomMaster ?? General.UnknownUserInstance; this.RoomMaster = RoomMaster ?? General.UnknownUserInstance;
this.RoomType = RoomType; this.RoomType = RoomType;
this.GameMode = GameMode; this.GameModule = GameModule;
this.GameMap = GameMap; this.GameMap = GameMap;
this.RoomState = RoomState; this.RoomState = RoomState;
this.IsRank = IsRank; this.IsRank = IsRank;

View File

@ -2,8 +2,8 @@
namespace Milimoe.FunGame.Core.Interface.Addons namespace Milimoe.FunGame.Core.Interface.Addons
{ {
public interface IAddonController public interface IAddonController<T> where T : IAddon
{ {
public AddonController Controller { get; set; } public BaseAddonController<T> Controller { get; set; }
} }
} }

View File

@ -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);
}
}

View File

@ -0,0 +1,12 @@
using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Interface.Addons
{
public interface IGameModule : IAddon, IAddonController<IGameModule>, 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);
}
}

View File

@ -0,0 +1,9 @@
using Milimoe.FunGame.Core.Library.Common.Addon;
namespace Milimoe.FunGame.Core.Interface.Addons
{
public interface IGameModuleDepend
{
public GameModuleDepend GameModuleDepend { get; }
}
}

View File

@ -5,9 +5,9 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Interface.Addons namespace Milimoe.FunGame.Core.Interface.Addons
{ {
public interface IGameModeServer : IAddon, IAddonController public interface IGameModuleServer : IAddon, IAddonController<IGameModuleServer>, IGameModuleDepend
{ {
public bool StartServer(string GameMode, Room Room, List<User> Users, IServerModel RoomMasterServerModel, Dictionary<string, IServerModel> OthersServerModel, params object[] args); public bool StartServer(string GameModule, Room Room, List<User> Users, IServerModel RoomMasterServerModel, Dictionary<string, IServerModel> OthersServerModel, params object[] args);
public Hashtable GamingMessageHandler(string username, GamingType type, Hashtable data); public Hashtable GamingMessageHandler(string username, GamingType type, Hashtable data);
} }

View File

@ -1,6 +1,6 @@
namespace Milimoe.FunGame.Core.Interface.Addons namespace Milimoe.FunGame.Core.Interface.Addons
{ {
public interface IPlugin : IAddon, IAddonController, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler, public interface IPlugin : IAddon, IAddonController<IPlugin>, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IRegEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler,
ICreateRoomEventHandler, IQuitRoomEventHandler, IChangeRoomSettingEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IChangeProfileEventHandler, IChangeAccountSettingEventHandler, ICreateRoomEventHandler, IQuitRoomEventHandler, IChangeRoomSettingEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IChangeProfileEventHandler, IChangeAccountSettingEventHandler,
IOpenInventoryEventHandler, ISignInEventHandler, IOpenStoreEventHandler, IBuyItemEventHandler, IShowRankingEventHandler, IUseItemEventHandler, IEndGameEventHandler IOpenInventoryEventHandler, ISignInEventHandler, IOpenStoreEventHandler, IBuyItemEventHandler, IShowRankingEventHandler, IUseItemEventHandler, IEndGameEventHandler
{ {

View File

@ -59,7 +59,7 @@ namespace Milimoe.FunGame.Core.Interface.Base
/// <summary> /// <summary>
/// 开始接收客户端消息 /// 开始接收客户端消息
/// <para>请勿在 <see cref="GameModeServer"/> 中调用此方法</para> /// <para>请勿在 <see cref="GameModuleServer"/> 中调用此方法</para>
/// </summary> /// </summary>
/// <param name="socket"></param> /// <param name="socket"></param>
/// <returns></returns> /// <returns></returns>
@ -67,7 +67,7 @@ namespace Milimoe.FunGame.Core.Interface.Base
/// <summary> /// <summary>
/// 启动对客户端的监听 /// 启动对客户端的监听
/// <para>请勿在 <see cref="GameModeServer"/> 中调用此方法</para> /// <para>请勿在 <see cref="GameModuleServer"/> 中调用此方法</para>
/// </summary> /// </summary>
public void Start(); public void Start();
} }

View File

@ -5,14 +5,14 @@ using Milimoe.FunGame.Core.Library.Common.Event;
namespace Milimoe.FunGame.Core.Interface namespace Milimoe.FunGame.Core.Interface
{ {
/// <summary> /// <summary>
/// 局内事件的接口,与 <see cref="GameMode"/> 配套使用 /// 局内事件的接口,与 <see cref="GameModule"/> 配套使用
/// </summary> /// </summary>
public interface IGamingEventHandler public interface IGamingEventHandler
{ {
public delegate void BeforeEventHandler(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); public delegate void AfterEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public delegate void SucceedEventHandler(object sender, GamingEventArgs e, Hashtable data); public delegate void SucceedEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public delegate void FailedEventHandler(object sender, GamingEventArgs e, Hashtable data); public delegate void FailedEventHandler(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingConnectEventHandler : IGamingEventHandler public interface IGamingConnectEventHandler : IGamingEventHandler
@ -22,10 +22,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingConnect; public event SucceedEventHandler? SucceedGamingConnect;
public event FailedEventHandler? FailedGamingConnect; public event FailedEventHandler? FailedGamingConnect;
public void OnBeforeGamingConnectEvent(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); public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingDisconnectEventHandler : IGamingEventHandler public interface IGamingDisconnectEventHandler : IGamingEventHandler
@ -35,10 +35,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingDisconnect; public event SucceedEventHandler? SucceedGamingDisconnect;
public event FailedEventHandler? FailedGamingDisconnect; public event FailedEventHandler? FailedGamingDisconnect;
public void OnBeforeGamingDisconnectEvent(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); public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingReconnectEventHandler : IGamingEventHandler public interface IGamingReconnectEventHandler : IGamingEventHandler
@ -48,10 +48,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingReconnect; public event SucceedEventHandler? SucceedGamingReconnect;
public event FailedEventHandler? FailedGamingReconnect; public event FailedEventHandler? FailedGamingReconnect;
public void OnBeforeGamingReconnectEvent(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); public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingBanCharacterEventHandler : IGamingEventHandler public interface IGamingBanCharacterEventHandler : IGamingEventHandler
@ -61,10 +61,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingBanCharacter; public event SucceedEventHandler? SucceedGamingBanCharacter;
public event FailedEventHandler? FailedGamingBanCharacter; public event FailedEventHandler? FailedGamingBanCharacter;
public void OnBeforeGamingBanCharacterEvent(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); public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPickCharacterEventHandler : IGamingEventHandler public interface IGamingPickCharacterEventHandler : IGamingEventHandler
@ -74,10 +74,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingPickCharacter; public event SucceedEventHandler? SucceedGamingPickCharacter;
public event FailedEventHandler? FailedGamingPickCharacter; public event FailedEventHandler? FailedGamingPickCharacter;
public void OnBeforeGamingPickCharacterEvent(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); public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingRandomEventHandler : IGamingEventHandler public interface IGamingRandomEventHandler : IGamingEventHandler
@ -87,10 +87,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingRandom; public event SucceedEventHandler? SucceedGamingRandom;
public event FailedEventHandler? FailedGamingRandom; public event FailedEventHandler? FailedGamingRandom;
public void OnBeforeGamingRandomEvent(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); public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingRoundEventHandler : IGamingEventHandler public interface IGamingRoundEventHandler : IGamingEventHandler
@ -100,10 +100,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingRound; public event SucceedEventHandler? SucceedGamingRound;
public event FailedEventHandler? FailedGamingRound; public event FailedEventHandler? FailedGamingRound;
public void OnBeforeGamingRoundEvent(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); public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingLevelUpEventHandler : IGamingEventHandler public interface IGamingLevelUpEventHandler : IGamingEventHandler
@ -113,10 +113,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingLevelUp; public event SucceedEventHandler? SucceedGamingLevelUp;
public event FailedEventHandler? FailedGamingLevelUp; public event FailedEventHandler? FailedGamingLevelUp;
public void OnBeforeGamingLevelUpEvent(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); public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingMoveEventHandler : IGamingEventHandler public interface IGamingMoveEventHandler : IGamingEventHandler
@ -126,10 +126,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingMove; public event SucceedEventHandler? SucceedGamingMove;
public event FailedEventHandler? FailedGamingMove; public event FailedEventHandler? FailedGamingMove;
public void OnBeforeGamingMoveEvent(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); public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingAttackEventHandler : IGamingEventHandler public interface IGamingAttackEventHandler : IGamingEventHandler
@ -139,10 +139,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingAttack; public event SucceedEventHandler? SucceedGamingAttack;
public event FailedEventHandler? FailedGamingAttack; public event FailedEventHandler? FailedGamingAttack;
public void OnBeforeGamingAttackEvent(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); public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSkillEventHandler : IGamingEventHandler public interface IGamingSkillEventHandler : IGamingEventHandler
@ -152,10 +152,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingSkill; public event SucceedEventHandler? SucceedGamingSkill;
public event FailedEventHandler? FailedGamingSkill; public event FailedEventHandler? FailedGamingSkill;
public void OnBeforeGamingSkillEvent(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); public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingItemEventHandler : IGamingEventHandler public interface IGamingItemEventHandler : IGamingEventHandler
@ -165,10 +165,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingItem; public event SucceedEventHandler? SucceedGamingItem;
public event FailedEventHandler? FailedGamingItem; public event FailedEventHandler? FailedGamingItem;
public void OnBeforeGamingItemEvent(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); public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingMagicEventHandler : IGamingEventHandler public interface IGamingMagicEventHandler : IGamingEventHandler
@ -178,10 +178,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingMagic; public event SucceedEventHandler? SucceedGamingMagic;
public event FailedEventHandler? FailedGamingMagic; public event FailedEventHandler? FailedGamingMagic;
public void OnBeforeGamingMagicEvent(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); public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingBuyEventHandler : IGamingEventHandler public interface IGamingBuyEventHandler : IGamingEventHandler
@ -191,10 +191,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingBuy; public event SucceedEventHandler? SucceedGamingBuy;
public event FailedEventHandler? FailedGamingBuy; public event FailedEventHandler? FailedGamingBuy;
public void OnBeforeGamingBuyEvent(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); public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSuperSkillEventHandler : IGamingEventHandler public interface IGamingSuperSkillEventHandler : IGamingEventHandler
@ -204,10 +204,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingSuperSkill; public event SucceedEventHandler? SucceedGamingSuperSkill;
public event FailedEventHandler? FailedGamingSuperSkill; public event FailedEventHandler? FailedGamingSuperSkill;
public void OnBeforeGamingSuperSkillEvent(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); public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPauseEventHandler : IGamingEventHandler public interface IGamingPauseEventHandler : IGamingEventHandler
@ -217,10 +217,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingPause; public event SucceedEventHandler? SucceedGamingPause;
public event FailedEventHandler? FailedGamingPause; public event FailedEventHandler? FailedGamingPause;
public void OnBeforeGamingPauseEvent(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); public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingUnpauseEventHandler : IGamingEventHandler public interface IGamingUnpauseEventHandler : IGamingEventHandler
@ -230,10 +230,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingUnpause; public event SucceedEventHandler? SucceedGamingUnpause;
public event FailedEventHandler? FailedGamingUnpause; public event FailedEventHandler? FailedGamingUnpause;
public void OnBeforeGamingUnpauseEvent(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); public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSurrenderEventHandler : IGamingEventHandler public interface IGamingSurrenderEventHandler : IGamingEventHandler
@ -243,10 +243,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingSurrender; public event SucceedEventHandler? SucceedGamingSurrender;
public event FailedEventHandler? FailedGamingSurrender; public event FailedEventHandler? FailedGamingSurrender;
public void OnBeforeGamingSurrenderEvent(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); public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingUpdateInfoEventHandler : IGamingEventHandler public interface IGamingUpdateInfoEventHandler : IGamingEventHandler
@ -256,10 +256,10 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingUpdateInfo; public event SucceedEventHandler? SucceedGamingUpdateInfo;
public event FailedEventHandler? FailedGamingUpdateInfo; public event FailedEventHandler? FailedGamingUpdateInfo;
public void OnBeforeGamingUpdateInfoEvent(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); public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPunishEventHandler : IGamingEventHandler public interface IGamingPunishEventHandler : IGamingEventHandler
@ -269,9 +269,9 @@ namespace Milimoe.FunGame.Core.Interface
public event SucceedEventHandler? SucceedGamingPunish; public event SucceedEventHandler? SucceedGamingPunish;
public event FailedEventHandler? FailedGamingPunish; public event FailedEventHandler? FailedGamingPunish;
public void OnBeforeGamingPunishEvent(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); public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
} }

View File

@ -6,161 +6,161 @@ namespace Milimoe.FunGame.Core.Interface
{ {
public interface IGamingConnectEvent public interface IGamingConnectEvent
{ {
public void BeforeGamingConnectEvent(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); public void AfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingDisconnectEvent public interface IGamingDisconnectEvent
{ {
public void BeforeGamingDisconnectEvent(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); public void AfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingReconnectEvent public interface IGamingReconnectEvent
{ {
public void BeforeGamingReconnectEvent(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); public void AfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingBanCharacterEvent public interface IGamingBanCharacterEvent
{ {
public void BeforeGamingBanCharacterEvent(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); public void AfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPickCharacterEvent public interface IGamingPickCharacterEvent
{ {
public void BeforeGamingPickCharacterEvent(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); public void AfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingRandomEvent public interface IGamingRandomEvent
{ {
public void BeforeGamingRandomEvent(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); public void AfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingRoundEvent public interface IGamingRoundEvent
{ {
public void BeforeGamingRoundEvent(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); public void AfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingLevelUpEvent public interface IGamingLevelUpEvent
{ {
public void BeforeGamingLevelUpEvent(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); public void AfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingMoveEvent public interface IGamingMoveEvent
{ {
public void BeforeGamingMoveEvent(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); public void AfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingAttackEvent public interface IGamingAttackEvent
{ {
public void BeforeGamingAttackEvent(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); public void AfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSkillEvent public interface IGamingSkillEvent
{ {
public void BeforeGamingSkillEvent(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); public void AfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingItemEvent public interface IGamingItemEvent
{ {
public void BeforeGamingItemEvent(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); public void AfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingMagicEvent public interface IGamingMagicEvent
{ {
public void BeforeGamingMagicEvent(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); public void AfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingBuyEvent public interface IGamingBuyEvent
{ {
public void BeforeGamingBuyEvent(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); public void AfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSuperSkillEvent public interface IGamingSuperSkillEvent
{ {
public void BeforeGamingSuperSkillEvent(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); public void AfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPauseEvent public interface IGamingPauseEvent
{ {
public void BeforeGamingPauseEvent(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); public void AfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingUnpauseEvent public interface IGamingUnpauseEvent
{ {
public void BeforeGamingUnpauseEvent(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); public void AfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingSurrenderEvent public interface IGamingSurrenderEvent
{ {
public void BeforeGamingSurrenderEvent(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); public void AfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingUpdateInfoEvent public interface IGamingUpdateInfoEvent
{ {
public void BeforeGamingUpdateInfoEvent(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); public void AfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
public interface IGamingPunishEvent public interface IGamingPunishEvent
{ {
public void BeforeGamingPunishEvent(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); public void AfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void SucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); public void SucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
public void FailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data); public void FailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result);
} }
} }

View File

@ -5,7 +5,7 @@
/// </summary> /// </summary>
public interface IServer public interface IServer
{ {
public string[] GameModeList { get; } public string[] GameModuleList { get; }
public string[] GameMapList { get; } public string[] GameMapList { get; }
} }
} }

View File

@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon
{ {
public abstract class CharacterMode : IAddon public abstract class CharacterModule : IAddon
{ {
/// <summary> /// <summary>
/// 模组名称 /// 模组名称

View File

@ -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
{
/// <summary>
/// 建议使用一个类来存储常量,方便重用
/// </summary>
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);
}
/// <summary>
/// 模组:必须继承基类:<see cref="GameModule"/><para/>
/// 继承事件接口并实现其方法来使模组生效。例如继承:<seealso cref="IGamingConnectEvent"/><para/>
/// </summary>
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<User> users = [];
protected Dictionary<string, Character> 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<string>("msg") ?? string.Empty;
Controller.WriteLine(msg);
}
}
}
/// <summary>
/// 模组服务器:必须继承基类:<see cref="GameModuleServer"/><para/>
/// 使用switch块分类处理 <see cref="GamingType"/>。
/// </summary>
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<User> Users = [];
protected IServerModel? RoomMaster;
protected Dictionary<string, IServerModel> Others = [];
protected Dictionary<string, IServerModel> All = [];
public override bool StartServer(string GameModule, Room Room, List<User> Users, IServerModel RoomMasterServerModel, Dictionary<string, IServerModel> 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<User> 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);
}
}
}
}
/// <summary>
/// 地图:必须继承基类:<see cref="GameMap"/><para/>
/// </summary>
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;
}
}

View File

@ -1,7 +1,7 @@
using Milimoe.FunGame.Core.Interface; using Milimoe.FunGame.Core.Interface;
using Milimoe.FunGame.Core.Library.Common.Event; using Milimoe.FunGame.Core.Library.Common.Event;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon.Example
{ {
/// <summary> /// <summary>
/// 必须继承基类:<see cref="Plugin"/><para/> /// 必须继承基类:<see cref="Plugin"/><para/>
@ -24,7 +24,8 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public void BeforeLoginEvent(object sender, LoginEventArgs e) public void BeforeLoginEvent(object sender, LoginEventArgs e)
{ {
// 如果这里设置Cancel = true将终止登录
e.Cancel = true;
} }
public void FailedLoginEvent(object sender, LoginEventArgs e) public void FailedLoginEvent(object sender, LoginEventArgs e)

View File

@ -8,7 +8,7 @@ using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon
{ {
public abstract class GameMode : IGameMode public abstract class GameModule : IGameModule
{ {
/// <summary> /// <summary>
/// 模组名称 /// 模组名称
@ -36,9 +36,9 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public abstract string DefaultMap { get; } public abstract string DefaultMap { get; }
/// <summary> /// <summary>
/// 模组所使用的地图 /// 模组的依赖集合
/// </summary> /// </summary>
public abstract string[] Maps { get; } public abstract GameModuleDepend GameModuleDepend { get; }
/// <summary> /// <summary>
/// 适用的房间模式 /// 适用的房间模式
@ -48,26 +48,43 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
/// <summary> /// <summary>
/// 包含了一些常用方法的控制器 /// 包含了一些常用方法的控制器
/// </summary> /// </summary>
public AddonController Controller public AddonController<IGameModule> Controller
{ {
get => _Controller ?? throw new NotImplementedException(); get => _Controller ?? throw new NotImplementedException();
set => _Controller = value; internal set => _Controller = value;
}
/// <summary>
/// base控制器没有DataRequest
/// </summary>
BaseAddonController<IGameModule> IAddonController<IGameModule>.Controller
{
get => Controller;
set => _Controller = (AddonController<IGameModule>?)value;
} }
/// <summary> /// <summary>
/// 控制器内部变量 /// 控制器内部变量
/// </summary> /// </summary>
protected AddonController? _Controller; private AddonController<IGameModule>? _Controller;
/// <summary>
/// 必须重写此方法,游戏的主要逻辑写在这里面<para/>
/// 此方法会在 <see cref="Gaming.StartGame"/> 时调用<para/>
/// </summary>
/// <param name="instance"></param>
/// <param name="args"></param>
/// <returns></returns>
public abstract void StartGame(Gaming instance, params object[] args);
/// <summary> /// <summary>
/// 如模组有界面,请重写此方法 /// 如模组有界面,请重写此方法
/// 此方法会在StartGame时调用
/// </summary> /// </summary>
/// <param name="args"></param> /// <param name="args"></param>
/// <returns></returns> /// <returns></returns>
public virtual bool StartUI(params object[] args) public virtual void StartUI(params object[] args)
{ {
return true;
} }
/// <summary> /// <summary>
@ -402,404 +419,404 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public event IGamingEventHandler.SucceedEventHandler? SucceedGamingPunish; public event IGamingEventHandler.SucceedEventHandler? SucceedGamingPunish;
public event IGamingEventHandler.FailedEventHandler? FailedGamingPunish; 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);
} }
} }
} }

View File

@ -0,0 +1,28 @@
namespace Milimoe.FunGame.Core.Library.Common.Addon
{
/// <summary>
/// 模组的依赖集合
/// </summary>
public readonly struct GameModuleDepend(string[] Maps, string[] Characters, string[] Items, string[] Skills)
{
/// <summary>
/// 模组所使用的地图组
/// </summary>
public string[] Maps { get; } = Maps;
/// <summary>
/// 模组所使用的角色组
/// </summary>
public string[] Characters { get; } = Characters;
/// <summary>
/// 模组所使用的物品组
/// </summary>
public string[] Items { get; } = Items;
/// <summary>
/// 模组所使用的技能组
/// </summary>
public string[] Skills { get; } = Skills;
}
}

View File

@ -7,7 +7,7 @@ using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon
{ {
public abstract class GameModeServer : IGameModeServer public abstract class GameModuleServer : IGameModuleServer
{ {
/// <summary> /// <summary>
/// 模组名称 /// 模组名称
@ -35,14 +35,14 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public abstract string DefaultMap { get; } public abstract string DefaultMap { get; }
/// <summary> /// <summary>
/// 模组所使用的地图 /// 模组的依赖集合
/// </summary> /// </summary>
public abstract string[] Maps { get; } public abstract GameModuleDepend GameModuleDepend { get; }
/// <summary> /// <summary>
/// 包含了一些常用方法的控制器 /// 包含了一些常用方法的控制器
/// </summary> /// </summary>
public AddonController Controller public BaseAddonController<IGameModuleServer> Controller
{ {
get => _Controller ?? throw new NotImplementedException(); get => _Controller ?? throw new NotImplementedException();
set => _Controller = value; set => _Controller = value;
@ -51,19 +51,19 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
/// <summary> /// <summary>
/// 控制器内部变量 /// 控制器内部变量
/// </summary> /// </summary>
protected AddonController? _Controller; private BaseAddonController<IGameModuleServer>? _Controller;
/// <summary> /// <summary>
/// 启动服务器监听 请在此处实现服务器逻辑 /// 启动服务器监听 请在此处实现服务器逻辑
/// </summary> /// </summary>
/// <param name="GameMode"></param> /// <param name="GameModule"></param>
/// <param name="Room"></param> /// <param name="Room"></param>
/// <param name="Users"></param> /// <param name="Users"></param>
/// <param name="RoomMasterServerModel"></param> /// <param name="RoomMasterServerModel"></param>
/// <param name="OthersServerModel"></param> /// <param name="OthersServerModel"></param>
/// <param name="Args"></param> /// <param name="Args"></param>
/// <returns></returns> /// <returns></returns>
public abstract bool StartServer(string GameMode, Room Room, List<User> Users, IServerModel RoomMasterServerModel, Dictionary<string, IServerModel> OthersServerModel, params object[] Args); public abstract bool StartServer(string GameModule, Room Room, List<User> Users, IServerModel RoomMasterServerModel, Dictionary<string, IServerModel> OthersServerModel, params object[] Args);
/// <summary> /// <summary>
/// 接收并处理GamingMessage /// 接收并处理GamingMessage

View File

@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon
{ {
public abstract class ItemMode : IAddon public abstract class ItemModule : IAddon
{ {
/// <summary> /// <summary>
/// 模组名称 /// 模组名称

View File

@ -31,16 +31,25 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
/// <summary> /// <summary>
/// 包含了一些常用方法的控制器 /// 包含了一些常用方法的控制器
/// </summary> /// </summary>
public AddonController Controller public AddonController<IPlugin> Controller
{ {
get => _Controller ?? throw new NotImplementedException(); get => _Controller ?? throw new NotImplementedException();
set => _Controller = value; internal set => _Controller = value;
}
/// <summary>
/// base控制器没有DataRequest
/// </summary>
BaseAddonController<IPlugin> IAddonController<IPlugin>.Controller
{
get => Controller;
set => _Controller = (AddonController<IPlugin>?)value;
} }
/// <summary> /// <summary>
/// 控制器内部变量 /// 控制器内部变量
/// </summary> /// </summary>
protected AddonController? _Controller; private AddonController<IPlugin>? _Controller;
/// <summary> /// <summary>
/// 加载标记 /// 加载标记

View File

@ -3,7 +3,7 @@ using Milimoe.FunGame.Core.Interface.Addons;
namespace Milimoe.FunGame.Core.Library.Common.Addon namespace Milimoe.FunGame.Core.Library.Common.Addon
{ {
public abstract class SkillMode : IAddon public abstract class SkillModule : IAddon
{ {
/// <summary> /// <summary>
/// 模组名称 /// 模组名称

View File

@ -2,10 +2,10 @@
namespace Milimoe.FunGame.Core.Library.Common.Event namespace Milimoe.FunGame.Core.Library.Common.Event
{ {
public class GamingEventArgs(Room room, List<User> users, List<Character> characters) : GeneralEventArgs public class GamingEventArgs(Room room, List<User> users, Dictionary<string, Character>? characters = null) : GeneralEventArgs
{ {
public Room Room { get; } = room; public Room Room { get; } = room;
public List<User> Users { get; } = users; public List<User> Users { get; } = users;
public List<Character> Characters { get; } = characters; public Dictionary<string, Character> Characters { get; } = characters ?? [];
} }
} }

View File

@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Event
public long RoomMaster { get; set; } = 0; public long RoomMaster { get; set; } = 0;
public RoomType RoomType { get; set; } = RoomType.All; public RoomType RoomType { get; set; } = RoomType.All;
public string RoomTypeString { get; set; } = RoomSet.All; public string RoomTypeString { get; set; } = RoomSet.All;
public string GameMode { get; set; } = ""; public string GameModule { get; set; } = "";
public string GameMap { get; set; } = ""; public string GameMap { get; set; } = "";
public RoomState RoomState { get; set; } = RoomState.Created; public RoomState RoomState { get; set; } = RoomState.Created;
public bool HasPassword => Password.Trim() != ""; public bool HasPassword => Password.Trim() != "";
@ -31,7 +31,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Event
RoomID = room.Roomid; RoomID = room.Roomid;
RoomMaster = room.RoomMaster != null ? room.RoomMaster.Id : 0; RoomMaster = room.RoomMaster != null ? room.RoomMaster.Id : 0;
RoomType = room.RoomType; RoomType = room.RoomType;
GameMode = room.GameMode; GameModule = room.GameModule;
GameMap = room.GameMap; GameMap = room.GameMap;
RoomTypeString = room.RoomType switch RoomTypeString = room.RoomType switch
{ {

View File

@ -54,8 +54,8 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
room.RoomType = (RoomType)reader.GetInt64(); room.RoomType = (RoomType)reader.GetInt64();
break; break;
case RoomQuery.Column_GameMode: case RoomQuery.Column_GameModule:
room.GameMode = reader.GetString() ?? ""; room.GameModule = reader.GetString() ?? "";
break; break;
case RoomQuery.Column_GameMap: 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_RoomID, value.Roomid);
writer.WriteString(RoomQuery.Column_CreateTime, value.CreateTime.ToString(General.GeneralDateTimeFormat)); 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_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.WriteString(RoomQuery.Column_GameMap, value.GameMap);
writer.WriteNumber(RoomQuery.Column_RoomType, (long)value.RoomType); writer.WriteNumber(RoomQuery.Column_RoomType, (long)value.RoomType);
writer.WriteNumber(RoomQuery.Column_RoomState, (long)value.RoomState); writer.WriteNumber(RoomQuery.Column_RoomState, (long)value.RoomState);

View File

@ -19,7 +19,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
public const string RemoteServerIP = "RemoteServerIP"; public const string RemoteServerIP = "RemoteServerIP";
public const string DBConnection = "DBConnection"; public const string DBConnection = "DBConnection";
public const string GetServerSettings = "GetServerSettings"; public const string GetServerSettings = "GetServerSettings";
public const string GameModeList = "GameModeList"; public const string GameModuleList = "GameModuleList";
public const string GameMapList = "GameMapList"; public const string GameMapList = "GameMapList";
} }
} }
@ -215,7 +215,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
public const string FUNGAME_IMPL = "FunGame.Implement"; public const string FUNGAME_IMPL = "FunGame.Implement";
public static string EXEFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory; // 程序目录 public static string EXEFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory; // 程序目录
public static string PluginFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"plugins\"; // 插件目录 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\"; // 游戏地图目录 public static string GameMapFolderPath { get; } = AppDomain.CurrentDomain.BaseDirectory + @"maps\"; // 游戏地图目录
} }

View File

@ -39,7 +39,7 @@
FunGame.FunGame_Server => FunGame_Server, 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";
} }
} }
} }

View File

@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
RemoteServerIP, RemoteServerIP,
DBConnection, DBConnection,
GetServerSettings, GetServerSettings,
GameModeList, GameModuleList,
GameMapList GameMapList
} }
} }

View File

@ -407,6 +407,6 @@ namespace Milimoe.FunGame.Core.Library.Constant
Interface, Interface,
DataRequest, DataRequest,
Plugin, Plugin,
GameMode GameModule
} }
} }

View File

@ -159,4 +159,9 @@
{ {
public override string Message => "构造对象实例遇到错误 (#10032)"; public override string Message => "构造对象实例遇到错误 (#10032)";
} }
public class ModuleServerNewDataRequestException : Exception
{
public override string Message => "试图在GameModuleServer类中创建数据请求 (#10033)";
}
} }

View File

@ -9,7 +9,7 @@
public const string Column_RoomMaster = "RoomMaster"; public const string Column_RoomMaster = "RoomMaster";
public const string Column_RoomMasterName = "RoomMasterName"; public const string Column_RoomMasterName = "RoomMasterName";
public const string Column_RoomType = "RoomType"; 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_GameMap = "GameMap";
public const string Column_RoomState = "RoomState"; public const string Column_RoomState = "RoomState";
public const string Column_IsRank = "IsRank"; 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} " + 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}"; $"{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; Library.Constant.RoomState RoomState = Library.Constant.RoomState.Created;
DateTime NowTime = DateTime.Now; DateTime NowTime = DateTime.Now;
bool HasPass = Password.Trim() != ""; 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})" + 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}, '{GameMode}', '{GameMap}', {(int)RoomState}, {(IsRank ? 1 : 0)}, {(HasPass ? 1 : 0)}, '{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) public static string Delete_Rooms(params string[] roomids)

View File

@ -13,474 +13,481 @@ namespace Milimoe.FunGame.Core.Model
/// </summary> /// </summary>
public class Gaming public class Gaming
{ {
private readonly GameMode GameMode; /// <summary>
private readonly Room Room; /// 使用的模组实例
private readonly List<User> Users; /// </summary>
private readonly List<Character> Characters; public GameModule GameModule { get; }
private readonly GamingEventArgs EventArgs;
private Gaming(GameMode GameMode, Room Room, List<User> Users) /// <summary>
/// 游戏的参数
/// </summary>
public GamingEventArgs EventArgs { get; }
private Gaming(GameModule module, Room room, List<User> users)
{ {
this.GameMode = GameMode; GameModule = module;
this.Room = Room; EventArgs = new(room, users);
this.Users = Users;
Characters = [];
EventArgs = new(Room, Users, Characters);
} }
/// <summary> /// <summary>
/// 传入游戏所需的参数构造一个Gaming实例 /// 传入游戏所需的参数构造一个Gaming实例
/// </summary> /// </summary>
/// <param name="GameMode"></param> /// <param name="module"></param>
/// <param name="Room"></param> /// <param name="room"></param>
/// <param name="Users"></param> /// <param name="users"></param>
/// <param name="args"></param>
/// <returns></returns> /// <returns></returns>
public static Gaming StartGame(GameMode GameMode, Room Room, List<User> Users) public static Gaming StartGame(GameModule module, Room room, List<User> users, params object[] args)
{ {
Gaming instance = new(GameMode, Room, Users); Gaming instance = new(module, room, users);
// 新建线程来启动模组的界面 // 新建线程来启动模组的界面
TaskUtility.NewTask(() => TaskUtility.NewTask(() =>
{ {
GameMode.StartUI(instance.EventArgs); module.StartUI();
}); });
// 启动模组主线程
module.StartGame(instance, args);
return instance; return instance;
} }
/// <summary> /// <summary>
/// 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 /// 需在RunTimeController的SocketHandler_Gaming方法中调用此方法
/// <para>客户端也可以参照此方法自行实现</para> /// <para>客户端也可以参照此方法自行实现</para>
/// <para>此方法目的是为了触发 <see cref="Library.Common.Addon.GameMode"/> 的局内事件实现</para> /// <para>此方法目的是为了触发 <see cref="Library.Common.Addon.GameModule"/> 的局内事件实现</para>
/// </summary> /// </summary>
/// <param name="GamingType"></param> /// <param name="type">消息类型</param>
/// <param name="Data"></param> /// <param name="data">接收到的数据</param>
public void GamingHandler(GamingType GamingType, Hashtable Data) /// <returns>底层会将哈希表中的数据发送给服务器</returns>
public Hashtable GamingHandler(GamingType type, Hashtable data)
{ {
switch (GamingType) Hashtable result = [];
switch (type)
{ {
case GamingType.Connect: case GamingType.Connect:
Connect(Data); Connect(data, result);
break; break;
case GamingType.Disconnect: case GamingType.Disconnect:
Disconnect(Data); Disconnect(data, result);
break; break;
case GamingType.Reconnect: case GamingType.Reconnect:
Reconnect(Data); Reconnect(data, result);
break; break;
case GamingType.BanCharacter: case GamingType.BanCharacter:
BanCharacter(Data); BanCharacter(data, result);
break; break;
case GamingType.PickCharacter: case GamingType.PickCharacter:
PickCharacter(Data); PickCharacter(data, result);
break; break;
case GamingType.Random: case GamingType.Random:
Random(Data); Random(data, result);
break; break;
case GamingType.Round: case GamingType.Round:
Round(Data); Round(data, result);
break; break;
case GamingType.LevelUp: case GamingType.LevelUp:
LevelUp(Data); LevelUp(data, result);
break; break;
case GamingType.Move: case GamingType.Move:
Move(Data); Move(data, result);
break; break;
case GamingType.Attack: case GamingType.Attack:
Attack(Data); Attack(data, result);
break; break;
case GamingType.Skill: case GamingType.Skill:
Skill(Data); Skill(data, result);
break; break;
case GamingType.Item: case GamingType.Item:
Item(Data); Item(data, result);
break; break;
case GamingType.Magic: case GamingType.Magic:
Magic(Data); Magic(data, result);
break; break;
case GamingType.Buy: case GamingType.Buy:
Buy(Data); Buy(data, result);
break; break;
case GamingType.SuperSkill: case GamingType.SuperSkill:
SuperSkill(Data); SuperSkill(data, result);
break; break;
case GamingType.Pause: case GamingType.Pause:
Pause(Data); Pause(data, result);
break; break;
case GamingType.Unpause: case GamingType.Unpause:
Unpause(Data); Unpause(data, result);
break; break;
case GamingType.Surrender: case GamingType.Surrender:
Surrender(Data); Surrender(data, result);
break; break;
case GamingType.UpdateInfo: case GamingType.UpdateInfo:
UpdateInfo(Data); UpdateInfo(data, result);
break; break;
case GamingType.Punish: case GamingType.Punish:
Punish(Data); Punish(data, result);
break; break;
case GamingType.None: case GamingType.None:
default: default:
break; 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingConnectEvent(this, EventArgs, data); GameModule.OnSucceedGamingConnectEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingDisconnectEvent(this, EventArgs, data); GameModule.OnSucceedGamingDisconnectEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingReconnectEvent(this, EventArgs, data); GameModule.OnSucceedGamingReconnectEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingBanCharacterEvent(this, EventArgs, data); GameModule.OnSucceedGamingBanCharacterEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingPickCharacterEvent(this, EventArgs, data); GameModule.OnSucceedGamingPickCharacterEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingRandomEvent(this, EventArgs, data); GameModule.OnSucceedGamingRandomEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingRoundEvent(this, EventArgs, data); GameModule.OnSucceedGamingRoundEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingLevelUpEvent(this, EventArgs, data); GameModule.OnSucceedGamingLevelUpEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingMoveEvent(this, EventArgs, data); GameModule.OnSucceedGamingMoveEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingAttackEvent(this, EventArgs, data); GameModule.OnSucceedGamingAttackEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingSkillEvent(this, EventArgs, data); GameModule.OnSucceedGamingSkillEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingItemEvent(this, EventArgs, data); GameModule.OnSucceedGamingItemEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingMagicEvent(this, EventArgs, data); GameModule.OnSucceedGamingMagicEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingBuyEvent(this, EventArgs, data); GameModule.OnSucceedGamingBuyEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingSuperSkillEvent(this, EventArgs, data); GameModule.OnSucceedGamingSuperSkillEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingPauseEvent(this, EventArgs, data); GameModule.OnSucceedGamingPauseEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingUnpauseEvent(this, EventArgs, data); GameModule.OnSucceedGamingUnpauseEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingSurrenderEvent(this, EventArgs, data); GameModule.OnSucceedGamingSurrenderEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data); GameModule.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data, result);
} }
else 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) if (EventArgs.Cancel)
{ {
return; return;
} }
if (!EventArgs.Cancel) if (!EventArgs.Cancel)
{ {
GameMode.OnSucceedGamingPunishEvent(this, EventArgs, data); GameModule.OnSucceedGamingPunishEvent(this, EventArgs, data, result);
} }
else else
{ {
GameMode.OnFailedGamingPunishEvent(this, EventArgs, data); GameModule.OnFailedGamingPunishEvent(this, EventArgs, data, result);
} }
GameMode.OnAfterGamingPunishEvent(this, EventArgs, data); GameModule.OnAfterGamingPunishEvent(this, EventArgs, data, result);
} }
} }
} }

View File

@ -42,32 +42,32 @@ namespace Milimoe.FunGame.Core.Service
} }
/// <summary> /// <summary>
/// 从gamemodes目录加载所有模组 /// 从modules目录加载所有模组
/// </summary> /// </summary>
/// <param name="gamemodes"></param> /// <param name="modules"></param>
/// <param name="characters"></param> /// <param name="characters"></param>
/// <param name="skills"></param> /// <param name="skills"></param>
/// <param name="items"></param> /// <param name="items"></param>
/// <param name="delegates"></param> /// <param name="delegates"></param>
/// <param name="otherobjs"></param> /// <param name="otherobjs"></param>
/// <returns></returns> /// <returns></returns>
internal static Dictionary<string, GameMode> LoadGameModes(Dictionary<string, GameMode> gamemodes, List<Character> characters, List<Skill> skills, List<Item> items, Hashtable delegates, params object[] otherobjs) internal static Dictionary<string, GameModule> LoadGameModules(Dictionary<string, GameModule> modules, List<Character> characters, List<Skill> skills, List<Item> 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) foreach (string dll in dlls)
{ {
Assembly assembly = Assembly.LoadFrom(dll); 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() != "") if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "")
{ {
instance.Controller = new(instance, delegates); 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;
} }
/// <summary> /// <summary>
/// 从gamemodes目录加载所有适用于服务器的模组 /// 从modules目录加载所有适用于服务器的模组
/// </summary> /// </summary>
/// <param name="gamemodes"></param> /// <param name="modules"></param>
/// <param name="characters"></param> /// <param name="characters"></param>
/// <param name="skills"></param> /// <param name="skills"></param>
/// <param name="items"></param> /// <param name="items"></param>
/// <param name="delegates"></param> /// <param name="delegates"></param>
/// <param name="otherobjs"></param> /// <param name="otherobjs"></param>
/// <returns></returns> /// <returns></returns>
internal static Dictionary<string, GameModeServer> LoadGameModesForServer(Dictionary<string, GameModeServer> gamemodes, List<Character> characters, List<Skill> skills, List<Item> items, Hashtable delegates, params object[] otherobjs) internal static Dictionary<string, GameModuleServer> LoadGameModulesForServer(Dictionary<string, GameModuleServer> modules, List<Character> characters, List<Skill> skills, List<Item> 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) foreach (string dll in dlls)
{ {
Assembly assembly = Assembly.LoadFrom(dll); 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() != "") if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "")
{ {
instance.Controller = new(instance, delegates); 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;
} }
/// <summary> /// <summary>
/// 从gamemaps目录加载所有地图 /// 从maps目录加载所有地图
/// </summary> /// </summary>
/// <param name="gamemaps"></param> /// <param name="maps"></param>
/// <param name="objs"></param> /// <param name="objs"></param>
/// <returns></returns> /// <returns></returns>
internal static Dictionary<string, GameMap> LoadGameMaps(Dictionary<string, GameMap> gamemaps, params object[] objs) internal static Dictionary<string, GameMap> LoadGameMaps(Dictionary<string, GameMap> 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"); string[] dlls = Directory.GetFiles(ReflectionSet.GameMapFolderPath, "*.dll");
@ -184,12 +184,12 @@ namespace Milimoe.FunGame.Core.Service
GameMap? instance = (GameMap?)Activator.CreateInstance(type); GameMap? instance = (GameMap?)Activator.CreateInstance(type);
if (instance != null && instance.Load(objs) && instance.Name.Trim() != "") if (instance != null && instance.Load(objs) && instance.Name.Trim() != "")
{ {
gamemaps.TryAdd(instance.Name, instance); maps.TryAdd(instance.Name, instance);
} }
} }
} }
return gamemaps; return maps;
} }
} }
} }