diff --git a/FunGame.Desktop/Model/RunTime.cs b/FunGame.Desktop/Model/RunTime.cs index c1fe506..f325e71 100644 --- a/FunGame.Desktop/Model/RunTime.cs +++ b/FunGame.Desktop/Model/RunTime.cs @@ -1,17 +1,18 @@ using Milimoe.FunGame.Core.Api.Transmittal; +using Milimoe.FunGame.Core.Library.Common.Plugin; using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Desktop.Model { /// /// 运行时单例 - /// 插件接口可以从这里拿Socket和窗体 /// public class RunTime { public static Core.Model.RoomList RoomList { get; } = new(); public static Core.Model.Session Session { get; } = new(); public static Core.Model.FunGameConfig Config { get; } = new(); + public static Dictionary Plugins { get; } = new(); public static Core.Library.Common.Network.Socket? Socket { get; set; } = null; public static Controller.RunTimeController? Controller { get; set; } = null; public static UI.Main? Main { get; set; } = null; diff --git a/FunGame.Desktop/UI/Main/Main.cs b/FunGame.Desktop/UI/Main/Main.cs index 224da55..83f0b30 100644 --- a/FunGame.Desktop/UI/Main/Main.cs +++ b/FunGame.Desktop/UI/Main/Main.cs @@ -2,6 +2,7 @@ using System.Diagnostics; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Common.Event; +using Milimoe.FunGame.Core.Library.Common.Plugin; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Exception; using Milimoe.FunGame.Desktop.Controller; @@ -64,6 +65,9 @@ namespace Milimoe.FunGame.Desktop.UI break; } } + // 加载插件 + LoadPlugins(); + // 自动连接服务器 if (Config.FunGame_isAutoConnect) InvokeController_Connect(); }); } @@ -831,6 +835,25 @@ namespace Milimoe.FunGame.Desktop.UI } } + /// + /// 加载所有插件 + /// + private void LoadPlugins() + { + try + { + PluginLoader.LoadPlugins(RunTime.Plugins); + foreach (KeyValuePair kv in RunTime.Plugins) + { + GetMessage("Load: " + kv.Value.Name); + } + } + catch (Exception e) + { + GetMessage(e.GetErrorInfo(), TimeType.None); + } + } + /// /// 显示FunGame信息 /// @@ -861,13 +884,21 @@ namespace Milimoe.FunGame.Desktop.UI /// private void ExitFunGame() { + bool exit = false; TaskUtility.StartAndAwaitTask(() => { if (ShowMessage(ShowMessageType.OKCancel, "你确定关闭游戏?", "退出") == MessageResult.OK) { InvokeController_Disconnect(); + exit = true; } - }).OnCompleted(() => Environment.Exit(0)); + }).OnCompleted(() => + { + if (exit) + { + Environment.Exit(0); + } + }); } #endregion