diff --git a/FunGame.Core/Interface/Event/Events.cs b/FunGame.Core/Interface/Event/Events.cs index 69e956c..71ccf0f 100644 --- a/FunGame.Core/Interface/Event/Events.cs +++ b/FunGame.Core/Interface/Event/Events.cs @@ -18,10 +18,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IConnectEvent : IEvent { - public event BeforeEvent BeforeConnectEvent; - public event AfterEvent AfterConnectEvent; - public event SucceedEvent SucceedConnectEvent; - public event FailedEvent FailedConnectEvent; + public event BeforeEvent? BeforeConnectEvent; + public event AfterEvent? AfterConnectEvent; + public event SucceedEvent? SucceedConnectEvent; + public event FailedEvent? FailedConnectEvent; public EventResult OnBeforeConnectEvent(object sender, GeneralEventArgs e); public EventResult OnAfterConnectEvent(object sender, GeneralEventArgs e); @@ -31,10 +31,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IDisconnectEvent : IEvent { - public event BeforeEvent BeforeDisconnectEvent; - public event AfterEvent AfterDisconnectEvent; - public event SucceedEvent SucceedDisconnectEvent; - public event FailedEvent FailedDisconnectEvent; + public event BeforeEvent? BeforeDisconnectEvent; + public event AfterEvent? AfterDisconnectEvent; + public event SucceedEvent? SucceedDisconnectEvent; + public event FailedEvent? FailedDisconnectEvent; public EventResult OnBeforeDisconnectEvent(object sender, GeneralEventArgs e); public EventResult OnAfterDisconnectEvent(object sender, GeneralEventArgs e); @@ -44,10 +44,10 @@ namespace Milimoe.FunGame.Core.Interface public interface ILoginEvent : IEvent { - public event BeforeEvent BeforeLoginEvent; - public event AfterEvent AfterLoginEvent; - public event SucceedEvent SucceedLoginEvent; - public event FailedEvent FailedLoginEvent; + public event BeforeEvent? BeforeLoginEvent; + public event AfterEvent? AfterLoginEvent; + public event SucceedEvent? SucceedLoginEvent; + public event FailedEvent? FailedLoginEvent; public EventResult OnBeforeLoginEvent(object sender, GeneralEventArgs e); public EventResult OnAfterLoginEvent(object sender, GeneralEventArgs e); @@ -57,10 +57,10 @@ namespace Milimoe.FunGame.Core.Interface public interface ILogoutEvent : IEvent { - public event BeforeEvent BeforeLogoutEvent; - public event AfterEvent AfterLogoutEvent; - public event SucceedEvent SucceedLogoutEvent; - public event FailedEvent FailedLogoutEvent; + public event BeforeEvent? BeforeLogoutEvent; + public event AfterEvent? AfterLogoutEvent; + public event SucceedEvent? SucceedLogoutEvent; + public event FailedEvent? FailedLogoutEvent; public EventResult OnBeforeLogoutEvent(object sender, GeneralEventArgs e); public EventResult OnAfterLogoutEvent(object sender, GeneralEventArgs e); @@ -70,10 +70,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IRegEvent : IEvent { - public event BeforeEvent BeforeRegEvent; - public event AfterEvent AfterRegEvent; - public event SucceedEvent SucceedRegEvent; - public event FailedEvent FailedRegEvent; + public event BeforeEvent? BeforeRegEvent; + public event AfterEvent? AfterRegEvent; + public event SucceedEvent? SucceedRegEvent; + public event FailedEvent? FailedRegEvent; public EventResult OnBeforeRegEvent(object sender, GeneralEventArgs e); public EventResult OnAfterRegEvent(object sender, GeneralEventArgs e); @@ -83,10 +83,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IIntoRoomEvent : IEvent { - public event BeforeEvent BeforeIntoRoomEvent; - public event AfterEvent AfterIntoRoomEvent; - public event SucceedEvent SucceedIntoRoomEvent; - public event FailedEvent FailedIntoRoomEvent; + public event BeforeEvent? BeforeIntoRoomEvent; + public event AfterEvent? AfterIntoRoomEvent; + public event SucceedEvent? SucceedIntoRoomEvent; + public event FailedEvent? FailedIntoRoomEvent; public EventResult OnBeforeIntoRoomEvent(object sender, GeneralEventArgs e); public EventResult OnAfterIntoRoomEvent(object sender, GeneralEventArgs e); @@ -96,10 +96,10 @@ namespace Milimoe.FunGame.Core.Interface public interface ISendTalkEvent : IEvent { - public event BeforeEvent BeforeSendTalkEvent; - public event AfterEvent AfterSendTalkEvent; - public event SucceedEvent SucceedSendTalkEvent; - public event FailedEvent FailedSendTalkEvent; + public event BeforeEvent? BeforeSendTalkEvent; + public event AfterEvent? AfterSendTalkEvent; + public event SucceedEvent? SucceedSendTalkEvent; + public event FailedEvent? FailedSendTalkEvent; public EventResult OnBeforeSendTalkEvent(object sender, GeneralEventArgs e); public EventResult OnAfterSendTalkEvent(object sender, GeneralEventArgs e); @@ -109,10 +109,10 @@ namespace Milimoe.FunGame.Core.Interface public interface ICreateRoomEvent : IEvent { - public event BeforeEvent BeforeCreateRoomEvent; - public event AfterEvent AfterCreateRoomEvent; - public event SucceedEvent SucceedCreateRoomEvent; - public event FailedEvent FailedCreateRoomEvent; + public event BeforeEvent? BeforeCreateRoomEvent; + public event AfterEvent? AfterCreateRoomEvent; + public event SucceedEvent? SucceedCreateRoomEvent; + public event FailedEvent? FailedCreateRoomEvent; public EventResult OnBeforeCreateRoomEvent(object sender, GeneralEventArgs e); public EventResult OnAfterCreateRoomEvent(object sender, GeneralEventArgs e); @@ -122,10 +122,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IQuitRoomEvent : IEvent { - public event BeforeEvent BeforeQuitRoomEvent; - public event AfterEvent AfterQuitRoomEvent; - public event SucceedEvent SucceedQuitRoomEvent; - public event FailedEvent FailedQuitRoomEvent; + public event BeforeEvent? BeforeQuitRoomEvent; + public event AfterEvent? AfterQuitRoomEvent; + public event SucceedEvent? SucceedQuitRoomEvent; + public event FailedEvent? FailedQuitRoomEvent; public EventResult OnBeforeQuitRoomEvent(object sender, GeneralEventArgs e); public EventResult OnAfterQuitRoomEvent(object sender, GeneralEventArgs e); @@ -135,10 +135,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IChangeRoomSettingEvent : IEvent { - public event BeforeEvent BeforeChangeRoomSettingEvent; - public event AfterEvent AfterChangeRoomSettingEvent; - public event SucceedEvent SucceedChangeRoomSettingEvent; - public event FailedEvent FailedChangeRoomSettingEvent; + public event BeforeEvent? BeforeChangeRoomSettingEvent; + public event AfterEvent? AfterChangeRoomSettingEvent; + public event SucceedEvent? SucceedChangeRoomSettingEvent; + public event FailedEvent? FailedChangeRoomSettingEvent; public EventResult OnBeforeChangeRoomSettingEvent(object sender, GeneralEventArgs e); public EventResult OnAfterChangeRoomSettingEvent(object sender, GeneralEventArgs e); @@ -148,10 +148,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IStartMatchEvent : IEvent { - public event BeforeEvent BeforeStartMatchEvent; - public event AfterEvent AfterStartMatchEvent; - public event SucceedEvent SucceedStartMatchEvent; - public event FailedEvent FailedStartMatchEvent; + public event BeforeEvent? BeforeStartMatchEvent; + public event AfterEvent? AfterStartMatchEvent; + public event SucceedEvent? SucceedStartMatchEvent; + public event FailedEvent? FailedStartMatchEvent; public EventResult OnBeforeStartMatchEvent(object sender, GeneralEventArgs e); public EventResult OnAfterStartMatchEvent(object sender, GeneralEventArgs e); @@ -161,10 +161,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IStartGameEvent : IEvent { - public event BeforeEvent BeforeStartGameEvent; - public event AfterEvent AfterStartGameEvent; - public event SucceedEvent SucceedStartGameEvent; - public event FailedEvent FailedStartGameEvent; + public event BeforeEvent? BeforeStartGameEvent; + public event AfterEvent? AfterStartGameEvent; + public event SucceedEvent? SucceedStartGameEvent; + public event FailedEvent? FailedStartGameEvent; public EventResult OnBeforeStartGameEvent(object sender, GeneralEventArgs e); public EventResult OnAfterStartGameEvent(object sender, GeneralEventArgs e); @@ -174,10 +174,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IChangeProfileEvent : IEvent { - public event BeforeEvent BeforeChangeProfileEvent; - public event AfterEvent AfterChangeProfileEvent; - public event SucceedEvent SucceedChangeProfileEvent; - public event FailedEvent FailedChangeProfileEvent; + public event BeforeEvent? BeforeChangeProfileEvent; + public event AfterEvent? AfterChangeProfileEvent; + public event SucceedEvent? SucceedChangeProfileEvent; + public event FailedEvent? FailedChangeProfileEvent; public EventResult OnBeforeChangeProfileEvent(object sender, GeneralEventArgs e); public EventResult OnAfterChangeProfileEvent(object sender, GeneralEventArgs e); @@ -187,10 +187,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IChangeAccountSettingEvent : IEvent { - public event BeforeEvent BeforeChangeAccountSettingEvent; - public event AfterEvent AfterChangeAccountSettingEvent; - public event SucceedEvent SucceedChangeAccountSettingEvent; - public event FailedEvent FailedChangeAccountSettingEvent; + public event BeforeEvent? BeforeChangeAccountSettingEvent; + public event AfterEvent? AfterChangeAccountSettingEvent; + public event SucceedEvent? SucceedChangeAccountSettingEvent; + public event FailedEvent? FailedChangeAccountSettingEvent; public EventResult OnBeforeChangeAccountSettingEvent(object sender, GeneralEventArgs e); public EventResult OnAfterChangeAccountSettingEvent(object sender, GeneralEventArgs e); @@ -200,10 +200,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IOpenInventoryEvent : IEvent { - public event BeforeEvent BeforeOpenInventoryEvent; - public event AfterEvent AfterOpenInventoryEvent; - public event SucceedEvent SucceedOpenInventoryEvent; - public event FailedEvent FailedOpenInventoryEvent; + public event BeforeEvent? BeforeOpenInventoryEvent; + public event AfterEvent? AfterOpenInventoryEvent; + public event SucceedEvent? SucceedOpenInventoryEvent; + public event FailedEvent? FailedOpenInventoryEvent; public EventResult OnBeforeOpenInventoryEvent(object sender, GeneralEventArgs e); public EventResult OnAfterOpenInventoryEvent(object sender, GeneralEventArgs e); @@ -213,10 +213,10 @@ namespace Milimoe.FunGame.Core.Interface public interface ISignInEvent : IEvent { - public event BeforeEvent BeforeSignInEvent; - public event AfterEvent AfterSignInEvent; - public event SucceedEvent SucceedSignInEvent; - public event FailedEvent FailedSignInEvent; + public event BeforeEvent? BeforeSignInEvent; + public event AfterEvent? AfterSignInEvent; + public event SucceedEvent? SucceedSignInEvent; + public event FailedEvent? FailedSignInEvent; public EventResult OnBeforeSignInEvent(object sender, GeneralEventArgs e); public EventResult OnAfterSignInEvent(object sender, GeneralEventArgs e); @@ -226,10 +226,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IOpenStoreEvent : IEvent { - public event BeforeEvent BeforeOpenStoreEvent; - public event AfterEvent AfterOpenStoreEvent; - public event SucceedEvent SucceedOpenStoreEvent; - public event FailedEvent FailedOpenStoreEvent; + public event BeforeEvent? BeforeOpenStoreEvent; + public event AfterEvent? AfterOpenStoreEvent; + public event SucceedEvent? SucceedOpenStoreEvent; + public event FailedEvent? FailedOpenStoreEvent; public EventResult OnBeforeOpenStoreEvent(object sender, GeneralEventArgs e); public EventResult OnAfterOpenStoreEvent(object sender, GeneralEventArgs e); @@ -239,10 +239,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IBuyItemEvent : IEvent { - public event BeforeEvent BeforeBuyItemEvent; - public event AfterEvent AfterBuyItemEvent; - public event SucceedEvent SucceedBuyItemEvent; - public event FailedEvent FailedBuyItemEvent; + public event BeforeEvent? BeforeBuyItemEvent; + public event AfterEvent? AfterBuyItemEvent; + public event SucceedEvent? SucceedBuyItemEvent; + public event FailedEvent? FailedBuyItemEvent; public EventResult OnBeforeBuyItemEvent(object sender, GeneralEventArgs e); public EventResult OnAfterBuyItemEvent(object sender, GeneralEventArgs e); @@ -252,10 +252,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IShowRankingEvent : IEvent { - public event BeforeEvent BeforeShowRankingEvent; - public event AfterEvent AfterShowRankingEvent; - public event SucceedEvent SucceedShowRankingEvent; - public event FailedEvent FailedShowRankingEvent; + public event BeforeEvent? BeforeShowRankingEvent; + public event AfterEvent? AfterShowRankingEvent; + public event SucceedEvent? SucceedShowRankingEvent; + public event FailedEvent? FailedShowRankingEvent; public EventResult OnBeforeShowRankingEvent(object sender, GeneralEventArgs e); public EventResult OnAfterShowRankingEvent(object sender, GeneralEventArgs e); @@ -265,10 +265,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IUseItemEvent : IEvent { - public event BeforeEvent BeforeUseItemEvent; - public event AfterEvent AfterUseItemEvent; - public event SucceedEvent SucceedUseItemEvent; - public event FailedEvent FailedUseItemEvent; + public event BeforeEvent? BeforeUseItemEvent; + public event AfterEvent? AfterUseItemEvent; + public event SucceedEvent? SucceedUseItemEvent; + public event FailedEvent? FailedUseItemEvent; public EventResult OnBeforeUseItemEvent(object sender, GeneralEventArgs e); public EventResult OnAfterUseItemEvent(object sender, GeneralEventArgs e); @@ -278,10 +278,10 @@ namespace Milimoe.FunGame.Core.Interface public interface IEndGameEvent : IEvent { - public event BeforeEvent BeforeEndGameEvent; - public event AfterEvent AfterEndGameEvent; - public event SucceedEvent SucceedEndGameEvent; - public event FailedEvent FailedEndGameEvent; + public event BeforeEvent? BeforeEndGameEvent; + public event AfterEvent? AfterEndGameEvent; + public event SucceedEvent? SucceedEndGameEvent; + public event FailedEvent? FailedEndGameEvent; public EventResult OnBeforeEndGameEvent(object sender, GeneralEventArgs e); public EventResult OnAfterEndGameEvent(object sender, GeneralEventArgs e); diff --git a/FunGame.Core/Library/Common/Event/GeneralEventArgs.cs b/FunGame.Core/Library/Common/Event/GeneralEventArgs.cs index 7439b6c..53495ff 100644 --- a/FunGame.Core/Library/Common/Event/GeneralEventArgs.cs +++ b/FunGame.Core/Library/Common/Event/GeneralEventArgs.cs @@ -11,7 +11,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Event public string EventMsg { get; set; } = ""; public object[]? Parameters { get; set; } = null; - public GeneralEventArgs(string EventMsg, object[]? Parameters = null) + public GeneralEventArgs(string EventMsg = "", object[]? Parameters = null) { this.EventMsg = EventMsg; this.Parameters = Parameters; diff --git a/FunGame.Core/Library/Constant/ConstantSet.cs b/FunGame.Core/Library/Constant/ConstantSet.cs index 02d9e6d..37283f5 100644 --- a/FunGame.Core/Library/Constant/ConstantSet.cs +++ b/FunGame.Core/Library/Constant/ConstantSet.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Milimoe.FunGame.Core.Library.Constant +namespace Milimoe.FunGame.Core.Library.Constant { public class InterfaceSet { diff --git a/FunGame.Core/Library/Constant/FunGameInfo.cs b/FunGame.Core/Library/Constant/FunGameInfo.cs index 40d3430..4d7338c 100644 --- a/FunGame.Core/Library/Constant/FunGameInfo.cs +++ b/FunGame.Core/Library/Constant/FunGameInfo.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Milimoe.FunGame.Core.Library.Constant +namespace Milimoe.FunGame.Core.Library.Constant { public class FunGameInfo { diff --git a/FunGame.Core/Library/Constant/MethodEnum.cs b/FunGame.Core/Library/Constant/MethodEnum.cs index 2fbc9b4..32a9676 100644 --- a/FunGame.Core/Library/Constant/MethodEnum.cs +++ b/FunGame.Core/Library/Constant/MethodEnum.cs @@ -1,10 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - namespace Milimoe.FunGame.Core.Library.Constant { public enum InterfaceMethod diff --git a/FunGame.Core/Library/Constant/ResultEnum.cs b/FunGame.Core/Library/Constant/ResultEnum.cs index e853761..8c5280a 100644 --- a/FunGame.Core/Library/Constant/ResultEnum.cs +++ b/FunGame.Core/Library/Constant/ResultEnum.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Milimoe.FunGame.Core.Library.Constant +namespace Milimoe.FunGame.Core.Library.Constant { public enum MessageResult { @@ -18,7 +12,8 @@ namespace Milimoe.FunGame.Core.Library.Constant public enum EventResult { Success, - Fail + Fail, + NoEventImplement } public enum SocketResult diff --git a/FunGame.Core/Library/Constant/StateEnum.cs b/FunGame.Core/Library/Constant/StateEnum.cs index 2945208..44c3044 100644 --- a/FunGame.Core/Library/Constant/StateEnum.cs +++ b/FunGame.Core/Library/Constant/StateEnum.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Milimoe.FunGame.Core.Library.Constant +namespace Milimoe.FunGame.Core.Library.Constant { public enum StartMatchState { diff --git a/FunGame.Core/Library/Constant/TypeEnum.cs b/FunGame.Core/Library/Constant/TypeEnum.cs index d1912e0..5372a9c 100644 --- a/FunGame.Core/Library/Constant/TypeEnum.cs +++ b/FunGame.Core/Library/Constant/TypeEnum.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Milimoe.FunGame.Core.Library.Constant +namespace Milimoe.FunGame.Core.Library.Constant { public enum FormType { diff --git a/FunGame.Desktop/Controller/MainController.cs b/FunGame.Desktop/Controller/MainController.cs index 10c9a15..163a8e5 100644 --- a/FunGame.Desktop/Controller/MainController.cs +++ b/FunGame.Desktop/Controller/MainController.cs @@ -12,6 +12,7 @@ using Milimoe.FunGame.Desktop.Library.Component; using Milimoe.FunGame.Desktop.Library.Interface; using Milimoe.FunGame.Desktop.Model; using Milimoe.FunGame.Desktop.UI; +using Milimoe.FunGame.Core.Interface; namespace Milimoe.FunGame.Desktop.Controller { diff --git a/FunGame.Desktop/Library/Base/BaseMain.cs b/FunGame.Desktop/Library/Base/BaseMain.cs new file mode 100644 index 0000000..de7cdf4 --- /dev/null +++ b/FunGame.Desktop/Library/Base/BaseMain.cs @@ -0,0 +1,133 @@ +using Milimoe.FunGame.Core.Interface; +using Milimoe.FunGame.Core.Library.Common.Event; +using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Desktop.Library.Component; + +namespace Milimoe.FunGame.Desktop.Library.Base +{ + public class BaseMain : GeneralForm, IConnectEvent, IDisconnectEvent, ILogoutEvent + { + public event IEvent.BeforeEvent? BeforeConnectEvent; + public event IEvent.AfterEvent? AfterConnectEvent; + public event IEvent.SucceedEvent? SucceedConnectEvent; + public event IEvent.FailedEvent? FailedConnectEvent; + + public EventResult OnAfterConnectEvent(object sender, GeneralEventArgs e) + { + if (AfterConnectEvent != null) + { + return AfterConnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnBeforeConnectEvent(object sender, GeneralEventArgs e) + { + if (BeforeConnectEvent != null) + { + return BeforeConnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnSucceedConnectEvent(object sender, GeneralEventArgs e) + { + if (SucceedConnectEvent != null) + { + return SucceedConnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnFailedConnectEvent(object sender, GeneralEventArgs e) + { + if (FailedConnectEvent != null) + { + return FailedConnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public event IEvent.BeforeEvent? BeforeDisconnectEvent; + public event IEvent.AfterEvent? AfterDisconnectEvent; + public event IEvent.SucceedEvent? SucceedDisconnectEvent; + public event IEvent.FailedEvent? FailedDisconnectEvent; + + public EventResult OnAfterDisconnectEvent(object sender, GeneralEventArgs e) + { + if (AfterDisconnectEvent != null) + { + return AfterDisconnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnBeforeDisconnectEvent(object sender, GeneralEventArgs e) + { + if (BeforeDisconnectEvent != null) + { + return BeforeDisconnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnFailedDisconnectEvent(object sender, GeneralEventArgs e) + { + if (FailedDisconnectEvent != null) + { + return FailedDisconnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnSucceedDisconnectEvent(object sender, GeneralEventArgs e) + { + if (SucceedDisconnectEvent != null) + { + return SucceedDisconnectEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public event IEvent.BeforeEvent? BeforeLogoutEvent; + public event IEvent.AfterEvent? AfterLogoutEvent; + public event IEvent.SucceedEvent? SucceedLogoutEvent; + public event IEvent.FailedEvent? FailedLogoutEvent; + + public EventResult OnAfterLogoutEvent(object sender, GeneralEventArgs e) + { + if (AfterLogoutEvent != null) + { + return AfterLogoutEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnBeforeLogoutEvent(object sender, GeneralEventArgs e) + { + if (BeforeLogoutEvent != null) + { + return BeforeLogoutEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnFailedLogoutEvent(object sender, GeneralEventArgs e) + { + if (FailedLogoutEvent != null) + { + return FailedLogoutEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + + public EventResult OnSucceedLogoutEvent(object sender, GeneralEventArgs e) + { + if (SucceedLogoutEvent != null) + { + return SucceedLogoutEvent(sender, e); + } + else return EventResult.NoEventImplement; + } + } +} diff --git a/FunGame.Desktop/Library/Component/GeneralForm.cs b/FunGame.Desktop/Library/Component/GeneralForm.cs index a8ee9ee..85aba88 100644 --- a/FunGame.Desktop/Library/Component/GeneralForm.cs +++ b/FunGame.Desktop/Library/Component/GeneralForm.cs @@ -19,6 +19,14 @@ namespace Milimoe.FunGame.Desktop.Library.Component InitializeComponent(); } + /// + /// 绑定事件,子类需要重写 + /// + protected virtual void BindEvent() + { + + } + /// /// 鼠标按下,开始移动主窗口 /// diff --git a/FunGame.Desktop/Model/MainModel.cs b/FunGame.Desktop/Model/MainModel.cs index 5d2e007..e0b1344 100644 --- a/FunGame.Desktop/Model/MainModel.cs +++ b/FunGame.Desktop/Model/MainModel.cs @@ -36,7 +36,7 @@ namespace Milimoe.FunGame.Desktop.Model } catch (Exception e) { - Main?.GetMessage(e.GetErrorInfo()); + Main.GetMessage(e.GetErrorInfo()); } return false; } @@ -49,7 +49,7 @@ namespace Milimoe.FunGame.Desktop.Model } catch (Exception e) { - Main?.GetMessage(e.GetErrorInfo()); + Main.GetMessage(e.GetErrorInfo()); } } @@ -83,7 +83,7 @@ namespace Milimoe.FunGame.Desktop.Model } catch (Exception e) { - Main?.GetMessage(e.GetErrorInfo(), false); + Main.GetMessage(e.GetErrorInfo(), false); } return false; @@ -91,6 +91,7 @@ namespace Milimoe.FunGame.Desktop.Model public ConnectResult Connect() { + Main.OnBeforeConnectEvent(Main, new GeneralEventArgs()); if (Constant.Server_Address == "" || Constant.Server_Port <= 0) { ShowMessage.ErrorMessage("查找可用的服务器失败!"); @@ -100,17 +101,17 @@ namespace Milimoe.FunGame.Desktop.Model { if (Config.FunGame_isRetrying) { - Main?.GetMessage("正在连接服务器,请耐心等待。"); + Main.GetMessage("正在连接服务器,请耐心等待。"); Config.FunGame_isRetrying = false; return ConnectResult.CanNotConnect; } if (!Config.FunGame_isConnected) { - Main!.CurrentRetryTimes++; - if (Main!.CurrentRetryTimes == 0) Main!.GetMessage("开始连接服务器...", true, TimeType.General); - else Main!.GetMessage("第" + Main!.CurrentRetryTimes + "次重试连接服务器..."); + Main.CurrentRetryTimes++; + if (Main.CurrentRetryTimes == 0) Main.GetMessage("开始连接服务器...", true, TimeType.General); + else Main.GetMessage("第" + Main.CurrentRetryTimes + "次重试连接服务器..."); // 超过重连次数上限 - if (Main!.CurrentRetryTimes + 1 > Main!.MaxRetryTimes) + if (Main.CurrentRetryTimes + 1 > Main.MaxRetryTimes) { throw new Exception("无法连接至服务器,请检查网络并重启游戏再试。"); } @@ -129,9 +130,11 @@ namespace Milimoe.FunGame.Desktop.Model { if (Receiving() == SocketMessageType.Connect) { - Main?.GetMessage("连接服务器成功,请登录账号以体验FunGame。"); - Main?.UpdateUI(MainControllerSet.Connected); + Main.GetMessage("连接服务器成功,请登录账号以体验FunGame。"); + Main.UpdateUI(MainControllerSet.Connected); StartReceiving(); + Main.OnSucceedConnectEvent(Main, new GeneralEventArgs()); + Main.OnAfterConnectEvent(Main, new GeneralEventArgs()); } }); return ConnectResult.Success; @@ -143,24 +146,32 @@ namespace Milimoe.FunGame.Desktop.Model } else { - Main?.GetMessage("已连接至服务器,请勿重复连接。"); + Main.GetMessage("已连接至服务器,请勿重复连接。"); return ConnectResult.CanNotConnect; } } catch (Exception e) { - Main?.GetMessage(e.GetErrorInfo(), false); + Main.GetMessage(e.GetErrorInfo(), false); + Main.UpdateUI(MainControllerSet.SetRed); Config.FunGame_isRetrying = false; - if (Config.FunGame_isAutoRetry && Main!.CurrentRetryTimes <= Main!.MaxRetryTimes) + if (Config.FunGame_isAutoRetry && Main.CurrentRetryTimes <= Main.MaxRetryTimes) { Task.Run(() => { Thread.Sleep(5000); if (Config.FunGame_isAutoRetry) Connect(); // 再次判断是否开启自动重连 }); - Main?.GetMessage("连接服务器失败,5秒后自动尝试重连。"); + Main.GetMessage("连接服务器失败,5秒后自动尝试重连。"); + Main.OnFailedConnectEvent(Main, new GeneralEventArgs()); + Main.OnAfterConnectEvent(Main, new GeneralEventArgs()); + } + else + { + Main.OnFailedConnectEvent(Main, new GeneralEventArgs()); + Main.OnAfterConnectEvent(Main, new GeneralEventArgs()); + return ConnectResult.ConnectFailed; } - else return ConnectResult.ConnectFailed; } return ConnectResult.CanNotConnect; } @@ -287,7 +298,7 @@ namespace Milimoe.FunGame.Desktop.Model case SocketMessageType.HeartBeat: if (Socket.Connected && Usercfg.LoginUser != null) - Main?.UpdateUI(MainControllerSet.SetGreenAndPing); + Main.UpdateUI(MainControllerSet.SetGreenAndPing); break; case SocketMessageType.Unknown: @@ -298,8 +309,8 @@ namespace Milimoe.FunGame.Desktop.Model catch (Exception e) { // 报错中断服务器连接 - Main?.GetMessage(e.GetErrorInfo(), false); - Main?.UpdateUI(MainControllerSet.Disconnected); + Main.GetMessage(e.GetErrorInfo(), false); + Main.UpdateUI(MainControllerSet.Disconnected); Close(); } @@ -317,9 +328,9 @@ namespace Milimoe.FunGame.Desktop.Model Config.FunGame_Notice = ServerNotice; if (objs.Length > 1) msg = NetworkUtility.ConvertJsonObject(objs[1])!; Socket!.Token = msg; - Main?.GetMessage($"已连接服务器:{ServerName}。\n\n********** 服务器公告 **********\n\n{ServerNotice}\n\n"); + Main.GetMessage($"已连接服务器:{ServerName}。\n\n********** 服务器公告 **********\n\n{ServerNotice}\n\n"); // 设置等待登录的黄灯 - Main?.UpdateUI(MainControllerSet.WaitLoginAndSetYellow); + Main.UpdateUI(MainControllerSet.WaitLoginAndSetYellow); } private void SocketHandle_GetNotice(object[] objs) @@ -332,16 +343,16 @@ namespace Milimoe.FunGame.Desktop.Model string msg = ""; // 返回的objs是该Login的User对象的各个属性 if (objs.Length > 0) msg = NetworkUtility.ConvertJsonObject(objs[0])!; - Main?.GetMessage(msg); - Main?.UpdateUI(MainControllerSet.SetUser, new object[] { Factory.New(msg) }); + Main.GetMessage(msg); + Main.UpdateUI(MainControllerSet.SetUser, new object[] { Factory.New(msg) }); } private void SocketHandle_Disconnect(object[] objs) { string msg = ""; if (objs.Length > 0) msg = NetworkUtility.ConvertJsonObject(objs[0])!; - Main?.GetMessage(msg); - Main?.UpdateUI(MainControllerSet.Disconnect); + Main.GetMessage(msg); + Main.UpdateUI(MainControllerSet.Disconnect); Close(); } } diff --git a/FunGame.Desktop/UI/Main/Main.cs b/FunGame.Desktop/UI/Main/Main.cs index 3dcb270..192da82 100644 --- a/FunGame.Desktop/UI/Main/Main.cs +++ b/FunGame.Desktop/UI/Main/Main.cs @@ -12,10 +12,12 @@ using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Desktop.Controller; using Milimoe.FunGame.Core.Library.Exception; using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Desktop.Library.Base; +using Milimoe.FunGame.Core.Library.Common.Event; namespace Milimoe.FunGame.Desktop.UI { - public partial class Main : GeneralForm + public partial class Main : BaseMain { #region 变量定义 @@ -43,6 +45,7 @@ namespace Milimoe.FunGame.Desktop.UI { InitializeComponent(); Init(); + BindEvent(); } /// @@ -75,6 +78,15 @@ namespace Milimoe.FunGame.Desktop.UI }); } + protected override void BindEvent() + { + base.BindEvent(); + base.AfterConnectEvent += AfterConnectEvent; + base.BeforeConnectEvent += BeforeConnectEvent; + base.FailedConnectEvent += FailedConnectEvent; + base.SucceedConnectEvent += SucceedConnectEvent; + } + #endregion #region 公有方法 @@ -82,10 +94,8 @@ namespace Milimoe.FunGame.Desktop.UI /// /// 提供公共方法给Controller更新UI /// - /// - /// - /// - /// + /// string? + /// object[]? public void UpdateUI(string? updatetype, object[]? objs = null) { void action() @@ -203,22 +213,13 @@ namespace Milimoe.FunGame.Desktop.UI break; case MainControllerSet.Connected: - Action action = () => - { - NoticeText.Text = Config.FunGame_Notice; - if (MainController != null && Config.FunGame_isAutoLogin) - { - // 自动登录 [TODO] - - } - }; - if (InvokeRequired) - BeginInvoke(action); - else - action(); + NoticeText.Text = Config.FunGame_Notice; break; default: + // 直接调用UpdateUI(string)为输出该string到控制台。 + // 和GetMessage(string)的效果不一样,输出格式为:HH:mm:ss >> string。 + WritelnSystemInfo(updatetype); break; } } @@ -1132,6 +1133,59 @@ namespace Milimoe.FunGame.Desktop.UI } } + /// + /// 连接服务器前触发事件 + /// + /// + /// + /// + private new EventResult BeforeConnectEvent(object sender, GeneralEventArgs e) + { + UpdateUI("触发【Before Connect】事件"); + return EventResult.Success; + } + + /// + /// 连接服务器后触发事件 + /// + /// + /// + /// + private new EventResult AfterConnectEvent(object sender, GeneralEventArgs e) + { + UpdateUI("触发【After Connect】事件"); + return EventResult.Success; + } + + /// + /// 连接服务器失败后触发事件 + /// + /// + /// + /// + private new EventResult FailedConnectEvent(object sender, GeneralEventArgs e) + { + UpdateUI("触发【Failed Connect】事件"); + return EventResult.Success; + } + + /// + /// 连接服务器成功后触发事件 + /// + /// + /// + /// + private new EventResult SucceedConnectEvent(object sender, GeneralEventArgs e) + { + UpdateUI("触发【Succeed Connect】事件"); + if (MainController != null && Config.FunGame_isAutoLogin) + { + // 自动登录 [TODO] + + } + return EventResult.Success; + } + #endregion #region 工具方法