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 工具方法