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