统一命名 并禁止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();
}
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

@ -54,7 +54,7 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
{
Worker = new(Socket, RequestType, Guid.NewGuid(), IsLongRunning);
}
/// <summary>
/// 添加数据
/// </summary>

View File

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

View File

@ -6,17 +6,17 @@ using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Api.Utility
{
public class GameModeLoader
public class GameModuleLoader
{
/// <summary>
/// 适用于客户端的模组集
/// </summary>
public Dictionary<string, GameMode> Modes { get; } = [];
public Dictionary<string, GameModule> Modes { get; } = [];
/// <summary>
/// 适用于服务器的模组集
/// </summary>
public Dictionary<string, GameModeServer> ServerModes { get; } = [];
public Dictionary<string, GameModuleServer> ServerModes { get; } = [];
/// <summary>
/// 游戏地图集
@ -38,7 +38,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary>
public List<Item> Items { get; } = [];
private GameModeLoader()
private GameModuleLoader()
{
}
@ -50,20 +50,20 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <seealso cref="Maps"/> 都会读取
/// </summary>
/// <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>
/// <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)
{
AddonManager.LoadGameModes(loader.Modes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
AddonManager.LoadGameModules(loader.Modes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
}
else if (runtime == FunGameInfo.FunGame.FunGame_Server)
{
AddonManager.LoadGameModesForServer(loader.ServerModes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
AddonManager.LoadGameModulesForServer(loader.ServerModes, loader.Characters, loader.Skills, loader.Items, delegates, otherobjs);
AddonManager.LoadGameMaps(loader.Maps, otherobjs);
}
return loader;
@ -75,7 +75,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public GameMode this[string name]
public GameModule this[string name]
{
get
{
@ -92,7 +92,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public GameModeServer GetServerMode(string name)
public GameModuleServer GetServerMode(string name)
{
return ServerModes[name];
}

View File

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

View File

@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <summary>
/// 构建一个插件读取器并读取插件
/// </summary>
/// <param name="delegates">用于构建 <see cref="Controller.AddonController"/></param>
/// <param name="delegates">用于构建 <see cref="Controller.AddonController{T}"/></param>
/// <param name="otherobjs">其他需要传入给插件初始化的对象</param>
/// <returns></returns>
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
{
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>
/// 基于本地已连接的Socket创建新的数据请求
/// </summary>
@ -29,62 +21,49 @@ namespace Milimoe.FunGame.Core.Controller
/// </summary>
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>
/// 基于本地已连接的Socket创建新的数据请求
/// <para>请勿在 <see cref="Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
/// </summary>
/// <param name="type"></param>
/// <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>
/// 基于本地已连接的Socket创建长时间运行的数据请求
/// <para>请勿在 <see cref="Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
/// </summary>
/// <param name="type"></param>
/// <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>
/// 新建一个AddonController
/// </summary>
/// <param name="Addon"></param>
/// <param name="addon"></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("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_NewLongRunningDataRequest ??= new(DefaultNewDataRequest);
}
private void DefaultPrint(string msg) => Console.Write("\r" + msg + "\n\r> ");
private void DefaultPrint(Exception e) => DefaultPrint(e.ToString());
private DataRequest DefaultNewDataRequest(DataRequestType type)
{
if (Addon is IGameModeServer) throw new NotSupportedException("请勿在GameModeServer类中调用此方法");
else throw new ConnectFailedException();
}
private DataRequest DefaultNewDataRequest(DataRequestType type) => throw new ConnectFailedException();
}
}

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="RoomMaster">房主</param>
<param name="RoomType">房间类型</param>
<param name="GameMode">游戏模组</param>
<param name="GameModule">游戏模组</param>
<param name="GameMap"></param>
<param name="RoomState">房间状态</param>
<param name="IsRank"></param>
@ -389,64 +389,64 @@
<param name="dr"></param>
<returns></returns>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Modes">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Modes">
<summary>
适用于客户端的模组集
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.ServerModes">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.ServerModes">
<summary>
适用于服务器的模组集
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Maps">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Maps">
<summary>
游戏地图集
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Characters">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Characters">
<summary>
角色表
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Skills">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Skills">
<summary>
技能表
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Items">
<member name="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Items">
<summary>
物品表
</summary>
</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>
传入 <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_Server"/> 时,仅读取 <seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.ServerModes"/></para>
<seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModeLoader.Maps"/> 都会读取
<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.GameModuleLoader.ServerModes"/></para>
<seealso cref="P:Milimoe.FunGame.Core.Api.Utility.GameModuleLoader.Maps"/> 都会读取
</summary>
<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>
<returns></returns>
</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>
获取对应名称的模组实例
<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>
<param name="name"></param>
<returns></returns>
</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>
<param name="name"></param>
<returns></returns>
</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>
@ -943,7 +943,7 @@
<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>
<returns></returns>
</member>
@ -1146,63 +1146,101 @@
<param name="strs"></param>
<returns></returns>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_WriteLine">
<member name="T:Milimoe.FunGame.Core.Controller.AddonController`1">
<summary>
输出系统消息
这个控制器在Base的基础上添加了DataRequest
</summary>
<typeparam name="T"></typeparam>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_Error">
<summary>
输出错误消息
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_NewDataRequest">
<member name="P:Milimoe.FunGame.Core.Controller.AddonController`1.MaskMethod_NewDataRequest">
<summary>
基于本地已连接的Socket创建新的数据请求
</summary>
</member>
<member name="P:Milimoe.FunGame.Core.Controller.AddonController.MaskMethod_NewLongRunningDataRequest">
<member name="P:Milimoe.FunGame.Core.Controller.AddonController`1.MaskMethod_NewLongRunningDataRequest">
<summary>
基于本地已连接的Socket创建长时间运行的数据请求
</summary>
</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>
<param name="msg"></param>
<returns></returns>
</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>
<param name="e"></param>
<returns></returns>
</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>
基于本地已连接的Socket创建新的数据请求
<para>请勿在 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer"/> 中调用此方法</para>
新建一个BaseAddonController
</summary>
<param name="type"></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="addon"></param>
<param name="delegates"></param>
</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">
<summary>
此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能
@ -1518,7 +1556,7 @@
<member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Read(Milimoe.FunGame.Core.Library.Common.Network.ClientSocket)">
<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>
<param name="socket"></param>
<returns></returns>
@ -1526,7 +1564,7 @@
<member name="M:Milimoe.FunGame.Core.Interface.Base.IServerModel.Start">
<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>
</member>
<member name="T:Milimoe.FunGame.Core.Interface.IEventHandler">
@ -1536,7 +1574,7 @@
</member>
<member name="T:Milimoe.FunGame.Core.Interface.IGamingEventHandler">
<summary>
局内事件的接口,与 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameMode"/> 配套使用
局内事件的接口,与 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 配套使用
</summary>
</member>
<member name="T:Milimoe.FunGame.Core.Interface.IClient">
@ -1549,53 +1587,75 @@
服务器需要实现此接口
</summary>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterMode.BeforeLoad">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.CharacterModule.BeforeLoad">
<summary>
允许返回false来阻止加载此模组
</summary>
<returns></returns>
</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>
必须继承基类:<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/><para/>
继承事件接口并实现其方法来使插件生效。例如继承:<seealso cref="T:Milimoe.FunGame.Core.Interface.ILoginEvent"/>
@ -1659,145 +1719,188 @@
</summary>
<returns></returns>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
如模组有界面,请重写此方法
此方法会在StartGame时调用
</summary>
<param name="args"></param>
<returns></returns>
</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>
</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>
</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>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BeforeLoad">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BeforeLoad">
<summary>
允许返回false来阻止加载此模组
</summary>
<returns></returns>
</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>
</member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Session">
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Session">
<summary>
Session对象
</summary>
</member>
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.Config">
<member name="F:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.Config">
<summary>
Config对象
</summary>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BindEvent">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BindEvent">
<summary>
绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.GameMode.BeforeLoad"/>后触发
绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModule.BeforeLoad"/>后触发
</summary>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
<param name="GameMode"></param>
<param name="GameModule"></param>
<param name="Room"></param>
<param name="Users"></param>
<param name="RoomMasterServerModel"></param>
@ -1805,7 +1908,7 @@
<param name="Args"></param>
<returns></returns>
</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>
接收并处理GamingMessage
</summary>
@ -1814,68 +1917,68 @@
<param name="data">消息参数</param>
<returns>底层会将哈希表中的数据发送给客户端</returns>
</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>
</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>
</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>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModeServer.BeforeLoad">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.GameModuleServer.BeforeLoad">
<summary>
允许返回false来阻止加载此模组
</summary>
<returns></returns>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemMode.BeforeLoad">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.ItemModule.BeforeLoad">
<summary>
允许返回false来阻止加载此模组
</summary>
@ -1906,6 +2009,11 @@
包含了一些常用方法的控制器
</summary>
</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">
<summary>
控制器内部变量
@ -1952,47 +2060,47 @@
绑定事件。在<see cref="M:Milimoe.FunGame.Core.Library.Common.Addon.Plugin.BeforeLoad"/>后触发
</summary>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</member>
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillMode.BeforeLoad">
<member name="M:Milimoe.FunGame.Core.Library.Common.Addon.SkillModule.BeforeLoad">
<summary>
允许返回false来阻止加载此模组
</summary>
@ -2468,23 +2576,35 @@
客户端需要使用创建此类单例
</summary>
</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>
传入游戏所需的参数构造一个Gaming实例
</summary>
<param name="GameMode"></param>
<param name="Room"></param>
<param name="Users"></param>
<param name="module"></param>
<param name="room"></param>
<param name="users"></param>
<param name="args"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Model.Gaming.GamingHandler(Milimoe.FunGame.Core.Library.Constant.GamingType,System.Collections.Hashtable)">
<summary>
需在RunTimeController的SocketHandler_Gaming方法中调用此方法
<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>
<param name="GamingType"></param>
<param name="Data"></param>
<param name="type">消息类型</param>
<param name="data">接收到的数据</param>
<returns>底层会将哈希表中的数据发送给服务器</returns>
</member>
<member name="P:Milimoe.FunGame.Core.Model.Session.Server_Address">
<summary>
@ -2530,11 +2650,11 @@
<param name="otherobjs"></param>
<returns></returns>
</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>
gamemodes目录加载所有模组
从modules目录加载所有模组
</summary>
<param name="gamemodes"></param>
<param name="modules"></param>
<param name="characters"></param>
<param name="skills"></param>
<param name="items"></param>
@ -2542,11 +2662,11 @@
<param name="otherobjs"></param>
<returns></returns>
</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>
gamemodes目录加载所有适用于服务器的模组
从modules目录加载所有适用于服务器的模组
</summary>
<param name="gamemodes"></param>
<param name="modules"></param>
<param name="characters"></param>
<param name="skills"></param>
<param name="items"></param>
@ -2556,9 +2676,9 @@
</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[])">
<summary>
gamemaps目录加载所有地图
从maps目录加载所有地图
</summary>
<param name="gamemaps"></param>
<param name="maps"></param>
<param name="objs"></param>
<returns></returns>
</member>

View File

@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Entity
public DateTime CreateTime { get; set; } = General.DefaultTime;
public User RoomMaster { get; set; } = General.UnknownUserInstance;
public RoomType RoomType { get; set; } = RoomType.All;
public string GameMode { get; set; } = "";
public string GameModule { get; set; } = "";
public string GameMap { get; set; } = "";
public RoomState RoomState { get; set; }
public bool IsRank { get; set; } = false;
@ -24,14 +24,14 @@ namespace Milimoe.FunGame.Core.Entity
Statistics = new(this);
}
internal Room(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameMode = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "")
internal Room(long Id = 0, string Roomid = "-1", DateTime? CreateTime = null, User? RoomMaster = null, RoomType RoomType = RoomType.All, string GameModule = "", string GameMap = "", RoomState RoomState = RoomState.Created, bool IsRank = false, string Password = "")
{
this.Id = Id;
this.Roomid = Roomid;
this.CreateTime = CreateTime ?? General.DefaultTime;
this.RoomMaster = RoomMaster ?? General.UnknownUserInstance;
this.RoomType = RoomType;
this.GameMode = GameMode;
this.GameModule = GameModule;
this.GameMap = GameMap;
this.RoomState = RoomState;
this.IsRank = IsRank;

View File

@ -2,8 +2,8 @@
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
{
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);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,7 +8,7 @@ using Milimoe.FunGame.Core.Model;
namespace Milimoe.FunGame.Core.Library.Common.Addon
{
public abstract class GameMode : IGameMode
public abstract class GameModule : IGameModule
{
/// <summary>
/// 模组名称
@ -36,9 +36,9 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public abstract string DefaultMap { get; }
/// <summary>
/// 模组所使用的地图
/// 模组的依赖集合
/// </summary>
public abstract string[] Maps { get; }
public abstract GameModuleDepend GameModuleDepend { get; }
/// <summary>
/// 适用的房间模式
@ -48,26 +48,43 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
/// <summary>
/// 包含了一些常用方法的控制器
/// </summary>
public AddonController Controller
public AddonController<IGameModule> Controller
{
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>
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>
/// 如模组有界面,请重写此方法
/// 此方法会在StartGame时调用
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public virtual bool StartUI(params object[] args)
public virtual void StartUI(params object[] args)
{
return true;
}
/// <summary>
@ -402,404 +419,404 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
public event IGamingEventHandler.SucceedEventHandler? SucceedGamingPunish;
public event IGamingEventHandler.FailedEventHandler? FailedGamingPunish;
public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingConnect?.Invoke(sender, e, data);
BeforeGamingConnect?.Invoke(sender, e, data, result);
}
public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingConnect?.Invoke(sender, e, data);
AfterGamingConnect?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingConnect?.Invoke(sender, e, data);
SucceedGamingConnect?.Invoke(sender, e, data, result);
}
public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingConnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingConnect?.Invoke(sender, e, data);
FailedGamingConnect?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingDisconnect?.Invoke(sender, e, data);
BeforeGamingDisconnect?.Invoke(sender, e, data, result);
}
public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingDisconnect?.Invoke(sender, e, data);
AfterGamingDisconnect?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingDisconnect?.Invoke(sender, e, data);
SucceedGamingDisconnect?.Invoke(sender, e, data, result);
}
public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingDisconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingDisconnect?.Invoke(sender, e, data);
FailedGamingDisconnect?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingReconnect?.Invoke(sender, e, data);
BeforeGamingReconnect?.Invoke(sender, e, data, result);
}
public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingReconnect?.Invoke(sender, e, data);
AfterGamingReconnect?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingReconnect?.Invoke(sender, e, data);
SucceedGamingReconnect?.Invoke(sender, e, data, result);
}
public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingReconnectEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingReconnect?.Invoke(sender, e, data);
FailedGamingReconnect?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingBanCharacter?.Invoke(sender, e, data);
BeforeGamingBanCharacter?.Invoke(sender, e, data, result);
}
public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingBanCharacter?.Invoke(sender, e, data);
AfterGamingBanCharacter?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingBanCharacter?.Invoke(sender, e, data);
SucceedGamingBanCharacter?.Invoke(sender, e, data, result);
}
public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingBanCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingBanCharacter?.Invoke(sender, e, data);
FailedGamingBanCharacter?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingPickCharacter?.Invoke(sender, e, data);
BeforeGamingPickCharacter?.Invoke(sender, e, data, result);
}
public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingPickCharacter?.Invoke(sender, e, data);
AfterGamingPickCharacter?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingPickCharacter?.Invoke(sender, e, data);
SucceedGamingPickCharacter?.Invoke(sender, e, data, result);
}
public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingPickCharacterEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingPickCharacter?.Invoke(sender, e, data);
FailedGamingPickCharacter?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingRandom?.Invoke(sender, e, data);
BeforeGamingRandom?.Invoke(sender, e, data, result);
}
public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingRandom?.Invoke(sender, e, data);
AfterGamingRandom?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingRandom?.Invoke(sender, e, data);
SucceedGamingRandom?.Invoke(sender, e, data, result);
}
public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingRandomEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingRandom?.Invoke(sender, e, data);
FailedGamingRandom?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingRound?.Invoke(sender, e, data);
BeforeGamingRound?.Invoke(sender, e, data, result);
}
public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingRound?.Invoke(sender, e, data);
AfterGamingRound?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingRound?.Invoke(sender, e, data);
SucceedGamingRound?.Invoke(sender, e, data, result);
}
public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingRoundEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingRound?.Invoke(sender, e, data);
FailedGamingRound?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingLevelUp?.Invoke(sender, e, data);
BeforeGamingLevelUp?.Invoke(sender, e, data, result);
}
public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingLevelUp?.Invoke(sender, e, data);
AfterGamingLevelUp?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingLevelUp?.Invoke(sender, e, data);
SucceedGamingLevelUp?.Invoke(sender, e, data, result);
}
public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingLevelUpEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingLevelUp?.Invoke(sender, e, data);
FailedGamingLevelUp?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingMove?.Invoke(sender, e, data);
BeforeGamingMove?.Invoke(sender, e, data, result);
}
public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingMove?.Invoke(sender, e, data);
AfterGamingMove?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingMove?.Invoke(sender, e, data);
SucceedGamingMove?.Invoke(sender, e, data, result);
}
public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingMoveEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingMove?.Invoke(sender, e, data);
FailedGamingMove?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingAttack?.Invoke(sender, e, data);
BeforeGamingAttack?.Invoke(sender, e, data, result);
}
public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingAttack?.Invoke(sender, e, data);
AfterGamingAttack?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingAttack?.Invoke(sender, e, data);
SucceedGamingAttack?.Invoke(sender, e, data, result);
}
public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingAttackEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingAttack?.Invoke(sender, e, data);
FailedGamingAttack?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingSkill?.Invoke(sender, e, data);
BeforeGamingSkill?.Invoke(sender, e, data, result);
}
public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingSkill?.Invoke(sender, e, data);
AfterGamingSkill?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingSkill?.Invoke(sender, e, data);
SucceedGamingSkill?.Invoke(sender, e, data, result);
}
public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingSkill?.Invoke(sender, e, data);
FailedGamingSkill?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingItem?.Invoke(sender, e, data);
BeforeGamingItem?.Invoke(sender, e, data, result);
}
public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingItem?.Invoke(sender, e, data);
AfterGamingItem?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingItem?.Invoke(sender, e, data);
SucceedGamingItem?.Invoke(sender, e, data, result);
}
public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingItemEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingItem?.Invoke(sender, e, data);
FailedGamingItem?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingMagic?.Invoke(sender, e, data);
BeforeGamingMagic?.Invoke(sender, e, data, result);
}
public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingMagic?.Invoke(sender, e, data);
AfterGamingMagic?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingMagic?.Invoke(sender, e, data);
SucceedGamingMagic?.Invoke(sender, e, data, result);
}
public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingMagicEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingMagic?.Invoke(sender, e, data);
FailedGamingMagic?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingBuy?.Invoke(sender, e, data);
BeforeGamingBuy?.Invoke(sender, e, data, result);
}
public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingBuy?.Invoke(sender, e, data);
AfterGamingBuy?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingBuy?.Invoke(sender, e, data);
SucceedGamingBuy?.Invoke(sender, e, data, result);
}
public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingBuyEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingBuy?.Invoke(sender, e, data);
FailedGamingBuy?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingSuperSkill?.Invoke(sender, e, data);
BeforeGamingSuperSkill?.Invoke(sender, e, data, result);
}
public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingSuperSkill?.Invoke(sender, e, data);
AfterGamingSuperSkill?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingSuperSkill?.Invoke(sender, e, data);
SucceedGamingSuperSkill?.Invoke(sender, e, data, result);
}
public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingSuperSkillEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingSuperSkill?.Invoke(sender, e, data);
FailedGamingSuperSkill?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingPause?.Invoke(sender, e, data);
BeforeGamingPause?.Invoke(sender, e, data, result);
}
public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingPause?.Invoke(sender, e, data);
AfterGamingPause?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingPause?.Invoke(sender, e, data);
SucceedGamingPause?.Invoke(sender, e, data, result);
}
public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingPauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingPause?.Invoke(sender, e, data);
FailedGamingPause?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingUnpause?.Invoke(sender, e, data);
BeforeGamingUnpause?.Invoke(sender, e, data, result);
}
public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingUnpause?.Invoke(sender, e, data);
AfterGamingUnpause?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingUnpause?.Invoke(sender, e, data);
SucceedGamingUnpause?.Invoke(sender, e, data, result);
}
public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingUnpauseEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingUnpause?.Invoke(sender, e, data);
FailedGamingUnpause?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingSurrender?.Invoke(sender, e, data);
BeforeGamingSurrender?.Invoke(sender, e, data, result);
}
public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingSurrender?.Invoke(sender, e, data);
AfterGamingSurrender?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingSurrender?.Invoke(sender, e, data);
SucceedGamingSurrender?.Invoke(sender, e, data, result);
}
public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingSurrenderEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingSurrender?.Invoke(sender, e, data);
FailedGamingSurrender?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingUpdateInfo?.Invoke(sender, e, data);
BeforeGamingUpdateInfo?.Invoke(sender, e, data, result);
}
public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingUpdateInfo?.Invoke(sender, e, data);
AfterGamingUpdateInfo?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingUpdateInfo?.Invoke(sender, e, data);
SucceedGamingUpdateInfo?.Invoke(sender, e, data, result);
}
public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingUpdateInfoEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingUpdateInfo?.Invoke(sender, e, data);
FailedGamingUpdateInfo?.Invoke(sender, e, data, result);
}
public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnBeforeGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
BeforeGamingPunish?.Invoke(sender, e, data);
BeforeGamingPunish?.Invoke(sender, e, data, result);
}
public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnAfterGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
AfterGamingPunish?.Invoke(sender, e, data);
AfterGamingPunish?.Invoke(sender, e, data, result);
}
public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnSucceedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
SucceedGamingPunish?.Invoke(sender, e, data);
SucceedGamingPunish?.Invoke(sender, e, data, result);
}
public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data)
public void OnFailedGamingPunishEvent(object sender, GamingEventArgs e, Hashtable data, Hashtable result)
{
FailedGamingPunish?.Invoke(sender, e, data);
FailedGamingPunish?.Invoke(sender, e, data, result);
}
}
}

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

View File

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

View File

@ -31,16 +31,25 @@ namespace Milimoe.FunGame.Core.Library.Common.Addon
/// <summary>
/// 包含了一些常用方法的控制器
/// </summary>
public AddonController Controller
public AddonController<IPlugin> Controller
{
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>
protected AddonController? _Controller;
private AddonController<IPlugin>? _Controller;
/// <summary>
/// 加载标记

View File

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

View File

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

View File

@ -54,8 +54,8 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
room.RoomType = (RoomType)reader.GetInt64();
break;
case RoomQuery.Column_GameMode:
room.GameMode = reader.GetString() ?? "";
case RoomQuery.Column_GameModule:
room.GameModule = reader.GetString() ?? "";
break;
case RoomQuery.Column_GameMap:
@ -88,7 +88,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
writer.WriteString(RoomQuery.Column_RoomID, value.Roomid);
writer.WriteString(RoomQuery.Column_CreateTime, value.CreateTime.ToString(General.GeneralDateTimeFormat));
writer.WriteString(RoomQuery.Column_RoomMaster, JsonSerializer.Serialize(value.RoomMaster, typeof(User), options));
writer.WriteString(RoomQuery.Column_GameMode, value.GameMode);
writer.WriteString(RoomQuery.Column_GameModule, value.GameModule);
writer.WriteString(RoomQuery.Column_GameMap, value.GameMap);
writer.WriteNumber(RoomQuery.Column_RoomType, (long)value.RoomType);
writer.WriteNumber(RoomQuery.Column_RoomState, (long)value.RoomState);

View File

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

View File

@ -39,7 +39,7 @@
FunGame.FunGame_Server => FunGame_Server,
_ => ""
};
return type + " [版本: " + FunGame_Version + FunGame_VersionPatch + "]\n" + (type.Equals(FunGame_Desktop) ? @"©" : "(C)") + "2023 Milimoe. 保留所有权利\n";
return type + " [版本: " + FunGame_Version + FunGame_VersionPatch + "]\n" + (type.Equals(FunGame_Desktop) ? @"©" : "(C)") + "2024 Milimoe. 保留所有权利\n";
}
}
}

View File

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

View File

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

View File

@ -159,4 +159,9 @@
{
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_RoomMasterName = "RoomMasterName";
public const string Column_RoomType = "RoomType";
public const string Column_GameMode = "GameMode";
public const string Column_GameModule = "GameModule";
public const string Column_GameMap = "GameMap";
public const string Column_RoomState = "RoomState";
public const string Column_IsRank = "IsRank";
@ -18,13 +18,13 @@
public const string Select_Rooms = $"{Command_Select} {TableName}.{Command_All}, {UserQuery.TableName}.{UserQuery.Column_Username} {Command_As} {Column_RoomMasterName} " +
$"{Command_From} {TableName} {Command_LeftJoin} {UserQuery.TableName} {Command_On} {UserQuery.TableName}.{UserQuery.Column_UID} = {TableName}.{Column_RoomMaster}";
public static string Insert_CreateRoom(string RoomID, long RoomMaster, Library.Constant.RoomType RoomType, string GameMode, string GameMap, bool IsRank, string Password)
public static string Insert_CreateRoom(string RoomID, long RoomMaster, Library.Constant.RoomType RoomType, string GameModule, string GameMap, bool IsRank, string Password)
{
Library.Constant.RoomState RoomState = Library.Constant.RoomState.Created;
DateTime NowTime = DateTime.Now;
bool HasPass = Password.Trim() != "";
return $"{Command_Insert} {Command_Into} {TableName} ({Column_RoomID}, {Column_CreateTime}, {Column_RoomMaster}, {Column_RoomType}, {Column_GameMode}, {Column_GameMap}, {Column_RoomState}, {Column_IsRank}, {Column_HasPass}, {Column_Password})" +
$" {Command_Values} ('{RoomID}', '{NowTime}', {RoomMaster}, {(int)RoomType}, '{GameMode}', '{GameMap}', {(int)RoomState}, {(IsRank ? 1 : 0)}, {(HasPass ? 1 : 0)}, '{Password}')";
return $"{Command_Insert} {Command_Into} {TableName} ({Column_RoomID}, {Column_CreateTime}, {Column_RoomMaster}, {Column_RoomType}, {Column_GameModule}, {Column_GameMap}, {Column_RoomState}, {Column_IsRank}, {Column_HasPass}, {Column_Password})" +
$" {Command_Values} ('{RoomID}', '{NowTime}', {RoomMaster}, {(int)RoomType}, '{GameModule}', '{GameMap}', {(int)RoomState}, {(IsRank ? 1 : 0)}, {(HasPass ? 1 : 0)}, '{Password}')";
}
public static string Delete_Rooms(params string[] roomids)

View File

@ -13,474 +13,481 @@ namespace Milimoe.FunGame.Core.Model
/// </summary>
public class Gaming
{
private readonly GameMode GameMode;
private readonly Room Room;
private readonly List<User> Users;
private readonly List<Character> Characters;
private readonly GamingEventArgs EventArgs;
/// <summary>
/// 使用的模组实例
/// </summary>
public GameModule GameModule { get; }
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;
this.Room = Room;
this.Users = Users;
Characters = [];
EventArgs = new(Room, Users, Characters);
GameModule = module;
EventArgs = new(room, users);
}
/// <summary>
/// 传入游戏所需的参数构造一个Gaming实例
/// </summary>
/// <param name="GameMode"></param>
/// <param name="Room"></param>
/// <param name="Users"></param>
/// <param name="module"></param>
/// <param name="room"></param>
/// <param name="users"></param>
/// <param name="args"></param>
/// <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(() =>
{
GameMode.StartUI(instance.EventArgs);
module.StartUI();
});
// 启动模组主线程
module.StartGame(instance, args);
return instance;
}
/// <summary>
/// 需在RunTimeController的SocketHandler_Gaming方法中调用此方法
/// <para>客户端也可以参照此方法自行实现</para>
/// <para>此方法目的是为了触发 <see cref="Library.Common.Addon.GameMode"/> 的局内事件实现</para>
/// <para>此方法目的是为了触发 <see cref="Library.Common.Addon.GameModule"/> 的局内事件实现</para>
/// </summary>
/// <param name="GamingType"></param>
/// <param name="Data"></param>
public void GamingHandler(GamingType GamingType, Hashtable Data)
/// <param name="type">消息类型</param>
/// <param name="data">接收到的数据</param>
/// <returns>底层会将哈希表中的数据发送给服务器</returns>
public Hashtable GamingHandler(GamingType type, Hashtable data)
{
switch (GamingType)
Hashtable result = [];
switch (type)
{
case GamingType.Connect:
Connect(Data);
Connect(data, result);
break;
case GamingType.Disconnect:
Disconnect(Data);
Disconnect(data, result);
break;
case GamingType.Reconnect:
Reconnect(Data);
Reconnect(data, result);
break;
case GamingType.BanCharacter:
BanCharacter(Data);
BanCharacter(data, result);
break;
case GamingType.PickCharacter:
PickCharacter(Data);
PickCharacter(data, result);
break;
case GamingType.Random:
Random(Data);
Random(data, result);
break;
case GamingType.Round:
Round(Data);
Round(data, result);
break;
case GamingType.LevelUp:
LevelUp(Data);
LevelUp(data, result);
break;
case GamingType.Move:
Move(Data);
Move(data, result);
break;
case GamingType.Attack:
Attack(Data);
Attack(data, result);
break;
case GamingType.Skill:
Skill(Data);
Skill(data, result);
break;
case GamingType.Item:
Item(Data);
Item(data, result);
break;
case GamingType.Magic:
Magic(Data);
Magic(data, result);
break;
case GamingType.Buy:
Buy(Data);
Buy(data, result);
break;
case GamingType.SuperSkill:
SuperSkill(Data);
SuperSkill(data, result);
break;
case GamingType.Pause:
Pause(Data);
Pause(data, result);
break;
case GamingType.Unpause:
Unpause(Data);
Unpause(data, result);
break;
case GamingType.Surrender:
Surrender(Data);
Surrender(data, result);
break;
case GamingType.UpdateInfo:
UpdateInfo(Data);
UpdateInfo(data, result);
break;
case GamingType.Punish:
Punish(Data);
Punish(data, result);
break;
case GamingType.None:
default:
break;
}
return result;
}
private void Connect(Hashtable data)
private void Connect(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingConnectEvent(this, EventArgs, data);
GameModule.OnBeforeGamingConnectEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingConnectEvent(this, EventArgs, data);
GameModule.OnSucceedGamingConnectEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingConnectEvent(this, EventArgs, data);
GameModule.OnFailedGamingConnectEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingConnectEvent(this, EventArgs, data);
GameModule.OnAfterGamingConnectEvent(this, EventArgs, data, result);
}
private void Disconnect(Hashtable data)
private void Disconnect(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingDisconnectEvent(this, EventArgs, data);
GameModule.OnBeforeGamingDisconnectEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingDisconnectEvent(this, EventArgs, data);
GameModule.OnSucceedGamingDisconnectEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingDisconnectEvent(this, EventArgs, data);
GameModule.OnFailedGamingDisconnectEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingDisconnectEvent(this, EventArgs, data);
GameModule.OnAfterGamingDisconnectEvent(this, EventArgs, data, result);
}
private void Reconnect(Hashtable data)
private void Reconnect(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingReconnectEvent(this, EventArgs, data);
GameModule.OnBeforeGamingReconnectEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingReconnectEvent(this, EventArgs, data);
GameModule.OnSucceedGamingReconnectEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingReconnectEvent(this, EventArgs, data);
GameModule.OnFailedGamingReconnectEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingReconnectEvent(this, EventArgs, data);
GameModule.OnAfterGamingReconnectEvent(this, EventArgs, data, result);
}
private void BanCharacter(Hashtable data)
private void BanCharacter(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingBanCharacterEvent(this, EventArgs, data);
GameModule.OnBeforeGamingBanCharacterEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingBanCharacterEvent(this, EventArgs, data);
GameModule.OnSucceedGamingBanCharacterEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingBanCharacterEvent(this, EventArgs, data);
GameModule.OnFailedGamingBanCharacterEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingBanCharacterEvent(this, EventArgs, data);
GameModule.OnAfterGamingBanCharacterEvent(this, EventArgs, data, result);
}
private void PickCharacter(Hashtable data)
private void PickCharacter(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingPickCharacterEvent(this, EventArgs, data);
GameModule.OnBeforeGamingPickCharacterEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingPickCharacterEvent(this, EventArgs, data);
GameModule.OnSucceedGamingPickCharacterEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingPickCharacterEvent(this, EventArgs, data);
GameModule.OnFailedGamingPickCharacterEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingPickCharacterEvent(this, EventArgs, data);
GameModule.OnAfterGamingPickCharacterEvent(this, EventArgs, data, result);
}
private void Random(Hashtable data)
private void Random(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingRandomEvent(this, EventArgs, data);
GameModule.OnBeforeGamingRandomEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingRandomEvent(this, EventArgs, data);
GameModule.OnSucceedGamingRandomEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingRandomEvent(this, EventArgs, data);
GameModule.OnFailedGamingRandomEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingRandomEvent(this, EventArgs, data);
GameModule.OnAfterGamingRandomEvent(this, EventArgs, data, result);
}
private void Round(Hashtable data)
private void Round(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingRoundEvent(this, EventArgs, data);
GameModule.OnBeforeGamingRoundEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingRoundEvent(this, EventArgs, data);
GameModule.OnSucceedGamingRoundEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingRoundEvent(this, EventArgs, data);
GameModule.OnFailedGamingRoundEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingRoundEvent(this, EventArgs, data);
GameModule.OnAfterGamingRoundEvent(this, EventArgs, data, result);
}
private void LevelUp(Hashtable data)
private void LevelUp(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingLevelUpEvent(this, EventArgs, data);
GameModule.OnBeforeGamingLevelUpEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingLevelUpEvent(this, EventArgs, data);
GameModule.OnSucceedGamingLevelUpEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingLevelUpEvent(this, EventArgs, data);
GameModule.OnFailedGamingLevelUpEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingLevelUpEvent(this, EventArgs, data);
GameModule.OnAfterGamingLevelUpEvent(this, EventArgs, data, result);
}
private void Move(Hashtable data)
private void Move(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingMoveEvent(this, EventArgs, data);
GameModule.OnBeforeGamingMoveEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingMoveEvent(this, EventArgs, data);
GameModule.OnSucceedGamingMoveEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingMoveEvent(this, EventArgs, data);
GameModule.OnFailedGamingMoveEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingMoveEvent(this, EventArgs, data);
GameModule.OnAfterGamingMoveEvent(this, EventArgs, data, result);
}
private void Attack(Hashtable data)
private void Attack(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingAttackEvent(this, EventArgs, data);
GameModule.OnBeforeGamingAttackEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingAttackEvent(this, EventArgs, data);
GameModule.OnSucceedGamingAttackEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingAttackEvent(this, EventArgs, data);
GameModule.OnFailedGamingAttackEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingAttackEvent(this, EventArgs, data);
GameModule.OnAfterGamingAttackEvent(this, EventArgs, data, result);
}
private void Skill(Hashtable data)
private void Skill(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingSkillEvent(this, EventArgs, data);
GameModule.OnBeforeGamingSkillEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingSkillEvent(this, EventArgs, data);
GameModule.OnSucceedGamingSkillEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingSkillEvent(this, EventArgs, data);
GameModule.OnFailedGamingSkillEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingSkillEvent(this, EventArgs, data);
GameModule.OnAfterGamingSkillEvent(this, EventArgs, data, result);
}
private void Item(Hashtable data)
private void Item(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingItemEvent(this, EventArgs, data);
GameModule.OnBeforeGamingItemEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingItemEvent(this, EventArgs, data);
GameModule.OnSucceedGamingItemEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingItemEvent(this, EventArgs, data);
GameModule.OnFailedGamingItemEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingItemEvent(this, EventArgs, data);
GameModule.OnAfterGamingItemEvent(this, EventArgs, data, result);
}
private void Magic(Hashtable data)
private void Magic(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingMagicEvent(this, EventArgs, data);
GameModule.OnBeforeGamingMagicEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingMagicEvent(this, EventArgs, data);
GameModule.OnSucceedGamingMagicEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingMagicEvent(this, EventArgs, data);
GameModule.OnFailedGamingMagicEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingMagicEvent(this, EventArgs, data);
GameModule.OnAfterGamingMagicEvent(this, EventArgs, data, result);
}
private void Buy(Hashtable data)
private void Buy(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingBuyEvent(this, EventArgs, data);
GameModule.OnBeforeGamingBuyEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingBuyEvent(this, EventArgs, data);
GameModule.OnSucceedGamingBuyEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingBuyEvent(this, EventArgs, data);
GameModule.OnFailedGamingBuyEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingBuyEvent(this, EventArgs, data);
GameModule.OnAfterGamingBuyEvent(this, EventArgs, data, result);
}
private void SuperSkill(Hashtable data)
private void SuperSkill(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingSuperSkillEvent(this, EventArgs, data);
GameModule.OnBeforeGamingSuperSkillEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingSuperSkillEvent(this, EventArgs, data);
GameModule.OnSucceedGamingSuperSkillEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingSuperSkillEvent(this, EventArgs, data);
GameModule.OnFailedGamingSuperSkillEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingSuperSkillEvent(this, EventArgs, data);
GameModule.OnAfterGamingSuperSkillEvent(this, EventArgs, data, result);
}
private void Pause(Hashtable data)
private void Pause(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingPauseEvent(this, EventArgs, data);
GameModule.OnBeforeGamingPauseEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingPauseEvent(this, EventArgs, data);
GameModule.OnSucceedGamingPauseEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingPauseEvent(this, EventArgs, data);
GameModule.OnFailedGamingPauseEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingPauseEvent(this, EventArgs, data);
GameModule.OnAfterGamingPauseEvent(this, EventArgs, data, result);
}
private void Unpause(Hashtable data)
private void Unpause(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingUnpauseEvent(this, EventArgs, data);
GameModule.OnBeforeGamingUnpauseEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingUnpauseEvent(this, EventArgs, data);
GameModule.OnSucceedGamingUnpauseEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingUnpauseEvent(this, EventArgs, data);
GameModule.OnFailedGamingUnpauseEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingUnpauseEvent(this, EventArgs, data);
GameModule.OnAfterGamingUnpauseEvent(this, EventArgs, data, result);
}
private void Surrender(Hashtable data)
private void Surrender(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingSurrenderEvent(this, EventArgs, data);
GameModule.OnBeforeGamingSurrenderEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingSurrenderEvent(this, EventArgs, data);
GameModule.OnSucceedGamingSurrenderEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingSurrenderEvent(this, EventArgs, data);
GameModule.OnFailedGamingSurrenderEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingSurrenderEvent(this, EventArgs, data);
GameModule.OnAfterGamingSurrenderEvent(this, EventArgs, data, result);
}
private void UpdateInfo(Hashtable data)
private void UpdateInfo(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingUpdateInfoEvent(this, EventArgs, data);
GameModule.OnBeforeGamingUpdateInfoEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data);
GameModule.OnSucceedGamingUpdateInfoEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingUpdateInfoEvent(this, EventArgs, data);
GameModule.OnFailedGamingUpdateInfoEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingUpdateInfoEvent(this, EventArgs, data);
GameModule.OnAfterGamingUpdateInfoEvent(this, EventArgs, data, result);
}
private void Punish(Hashtable data)
private void Punish(Hashtable data, Hashtable result)
{
GameMode.OnBeforeGamingPunishEvent(this, EventArgs, data);
GameModule.OnBeforeGamingPunishEvent(this, EventArgs, data, result);
if (EventArgs.Cancel)
{
return;
}
if (!EventArgs.Cancel)
{
GameMode.OnSucceedGamingPunishEvent(this, EventArgs, data);
GameModule.OnSucceedGamingPunishEvent(this, EventArgs, data, result);
}
else
{
GameMode.OnFailedGamingPunishEvent(this, EventArgs, data);
GameModule.OnFailedGamingPunishEvent(this, EventArgs, data, result);
}
GameMode.OnAfterGamingPunishEvent(this, EventArgs, data);
GameModule.OnAfterGamingPunishEvent(this, EventArgs, data, result);
}
}
}

View File

@ -42,32 +42,32 @@ namespace Milimoe.FunGame.Core.Service
}
/// <summary>
/// 从gamemodes目录加载所有模组
/// 从modules目录加载所有模组
/// </summary>
/// <param name="gamemodes"></param>
/// <param name="modules"></param>
/// <param name="characters"></param>
/// <param name="skills"></param>
/// <param name="items"></param>
/// <param name="delegates"></param>
/// <param name="otherobjs"></param>
/// <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)
{
Assembly assembly = Assembly.LoadFrom(dll);
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameMode))))
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModule))))
{
GameMode? instance = (GameMode?)Activator.CreateInstance(type);
GameModule? instance = (GameModule?)Activator.CreateInstance(type);
if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "")
{
instance.Controller = new(instance, delegates);
gamemodes.TryAdd(instance.Name, instance);
modules.TryAdd(instance.Name, instance);
}
}
@ -99,36 +99,36 @@ namespace Milimoe.FunGame.Core.Service
}
}
return gamemodes;
return modules;
}
/// <summary>
/// 从gamemodes目录加载所有适用于服务器的模组
/// 从modules目录加载所有适用于服务器的模组
/// </summary>
/// <param name="gamemodes"></param>
/// <param name="modules"></param>
/// <param name="characters"></param>
/// <param name="skills"></param>
/// <param name="items"></param>
/// <param name="delegates"></param>
/// <param name="otherobjs"></param>
/// <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)
{
Assembly assembly = Assembly.LoadFrom(dll);
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModeServer))))
foreach (Type type in assembly.GetTypes().AsEnumerable().Where(type => type.IsSubclassOf(typeof(GameModuleServer))))
{
GameModeServer? instance = (GameModeServer?)Activator.CreateInstance(type);
GameModuleServer? instance = (GameModuleServer?)Activator.CreateInstance(type);
if (instance != null && instance.Load(otherobjs) && instance.Name.Trim() != "")
{
instance.Controller = new(instance, delegates);
gamemodes.TryAdd(instance.Name, instance);
modules.TryAdd(instance.Name, instance);
}
}
@ -160,18 +160,18 @@ namespace Milimoe.FunGame.Core.Service
}
}
return gamemodes;
return modules;
}
/// <summary>
/// 从gamemaps目录加载所有地图
/// 从maps目录加载所有地图
/// </summary>
/// <param name="gamemaps"></param>
/// <param name="maps"></param>
/// <param name="objs"></param>
/// <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");
@ -184,12 +184,12 @@ namespace Milimoe.FunGame.Core.Service
GameMap? instance = (GameMap?)Activator.CreateInstance(type);
if (instance != null && instance.Load(objs) && instance.Name.Trim() != "")
{
gamemaps.TryAdd(instance.Name, instance);
maps.TryAdd(instance.Name, instance);
}
}
}
return gamemaps;
return maps;
}
}
}