加载插件测试

This commit is contained in:
milimoe 2023-09-22 00:30:11 +08:00
parent d5a5425fcc
commit 950ae5e467
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 34 additions and 2 deletions

View File

@ -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
{
/// <summary>
/// 运行时单例
/// 插件接口可以从这里拿Socket和窗体
/// </summary>
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<string, BasePlugin> 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;

View File

@ -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
}
}
/// <summary>
/// 加载所有插件
/// </summary>
private void LoadPlugins()
{
try
{
PluginLoader.LoadPlugins(RunTime.Plugins);
foreach (KeyValuePair<string, BasePlugin> kv in RunTime.Plugins)
{
GetMessage("Load: " + kv.Value.Name);
}
}
catch (Exception e)
{
GetMessage(e.GetErrorInfo(), TimeType.None);
}
}
/// <summary>
/// 显示FunGame信息
/// </summary>
@ -861,13 +884,21 @@ namespace Milimoe.FunGame.Desktop.UI
/// </summary>
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