添加部分EventArgs

This commit is contained in:
Mili 2023-03-11 16:08:04 +08:00
parent 0e106b2676
commit 349a35f28a
17 changed files with 333 additions and 152 deletions

View File

@ -25,6 +25,14 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
/// <returns>影响的行数</returns>
public abstract int Execute(out SQLResult Result);
/// <summary>
/// 执行一个指定的命令
/// </summary>
/// <param name="Script">命令</param>
/// <param name="Result">执行结果</param>
/// <returns>影响的行数</returns>
public abstract int Execute(string Script, out SQLResult Result);
/// <summary>
/// 查询DataSet
/// </summary>
@ -32,6 +40,14 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
/// <returns>结果集</returns>
public abstract DataSet ExecuteDataSet(out SQLResult Result);
/// <summary>
/// 执行指定的命令查询DataSet
/// </summary>
/// <param name="Script">命令</param>
/// <param name="Result">执行结果</param>
/// <returns>结果集</returns>
public abstract DataSet ExecuteDataSet(string Script, out SQLResult Result);
/// <summary>
/// 关闭连接
/// </summary>

View File

@ -42,15 +42,20 @@ namespace Milimoe.FunGame.Core.Interface
public interface ILoginEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, LoginEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, LoginEventArgs e);
public event BeforeEventHandler? BeforeLogin;
public event AfterEventHandler? AfterLogin;
public event SucceedEventHandler? SucceedLogin;
public event FailedEventHandler? FailedLogin;
public EventResult OnBeforeLoginEvent(GeneralEventArgs e);
public EventResult OnAfterLoginEvent(GeneralEventArgs e);
public EventResult OnSucceedLoginEvent(GeneralEventArgs e);
public EventResult OnFailedLoginEvent(GeneralEventArgs e);
public EventResult OnBeforeLoginEvent(LoginEventArgs e);
public EventResult OnAfterLoginEvent(LoginEventArgs e);
public EventResult OnSucceedLoginEvent(LoginEventArgs e);
public EventResult OnFailedLoginEvent(LoginEventArgs e);
}
public interface ILogoutEventHandler : IEventHandler
@ -68,6 +73,11 @@ namespace Milimoe.FunGame.Core.Interface
public interface IRegEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RegisterEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RegisterEventArgs e);
public event BeforeEventHandler? BeforeReg;
public event AfterEventHandler? AfterReg;
public event SucceedEventHandler? SucceedReg;
@ -81,54 +91,74 @@ namespace Milimoe.FunGame.Core.Interface
public interface IIntoRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeIntoRoom;
public event AfterEventHandler? AfterIntoRoom;
public event SucceedEventHandler? SucceedIntoRoom;
public event FailedEventHandler? FailedIntoRoom;
public EventResult OnBeforeIntoRoomEvent(GeneralEventArgs e);
public EventResult OnAfterIntoRoomEvent(GeneralEventArgs e);
public EventResult OnSucceedIntoRoomEvent(GeneralEventArgs e);
public EventResult OnFailedIntoRoomEvent(GeneralEventArgs e);
public EventResult OnBeforeIntoRoomEvent(RoomEventArgs e);
public EventResult OnAfterIntoRoomEvent(RoomEventArgs e);
public EventResult OnSucceedIntoRoomEvent(RoomEventArgs e);
public EventResult OnFailedIntoRoomEvent(RoomEventArgs e);
}
public interface ISendTalkEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, SendTalkEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, SendTalkEventArgs e);
public event BeforeEventHandler? BeforeSendTalk;
public event AfterEventHandler? AfterSendTalk;
public event SucceedEventHandler? SucceedSendTalk;
public event FailedEventHandler? FailedSendTalk;
public EventResult OnBeforeSendTalkEvent(GeneralEventArgs e);
public EventResult OnAfterSendTalkEvent(GeneralEventArgs e);
public EventResult OnSucceedSendTalkEvent(GeneralEventArgs e);
public EventResult OnFailedSendTalkEvent(GeneralEventArgs e);
public EventResult OnBeforeSendTalkEvent(SendTalkEventArgs e);
public EventResult OnAfterSendTalkEvent(SendTalkEventArgs e);
public EventResult OnSucceedSendTalkEvent(SendTalkEventArgs e);
public EventResult OnFailedSendTalkEvent(SendTalkEventArgs e);
}
public interface ICreateRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeCreateRoom;
public event AfterEventHandler? AfterCreateRoom;
public event SucceedEventHandler? SucceedCreateRoom;
public event FailedEventHandler? FailedCreateRoom;
public EventResult OnBeforeCreateRoomEvent(GeneralEventArgs e);
public EventResult OnAfterCreateRoomEvent(GeneralEventArgs e);
public EventResult OnSucceedCreateRoomEvent(GeneralEventArgs e);
public EventResult OnFailedCreateRoomEvent(GeneralEventArgs e);
public EventResult OnBeforeCreateRoomEvent(RoomEventArgs e);
public EventResult OnAfterCreateRoomEvent(RoomEventArgs e);
public EventResult OnSucceedCreateRoomEvent(RoomEventArgs e);
public EventResult OnFailedCreateRoomEvent(RoomEventArgs e);
}
public interface IQuitRoomEventHandler : IEventHandler
{
public new delegate EventResult BeforeEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult AfterEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult SucceedEventHandler(object sender, RoomEventArgs e);
public new delegate EventResult FailedEventHandler(object sender, RoomEventArgs e);
public event BeforeEventHandler? BeforeQuitRoom;
public event AfterEventHandler? AfterQuitRoom;
public event SucceedEventHandler? SucceedQuitRoom;
public event FailedEventHandler? FailedQuitRoom;
public EventResult OnBeforeQuitRoomEvent(GeneralEventArgs e);
public EventResult OnAfterQuitRoomEvent(GeneralEventArgs e);
public EventResult OnSucceedQuitRoomEvent(GeneralEventArgs e);
public EventResult OnFailedQuitRoomEvent(GeneralEventArgs e);
public EventResult OnBeforeQuitRoomEvent(RoomEventArgs e);
public EventResult OnAfterQuitRoomEvent(RoomEventArgs e);
public EventResult OnSucceedQuitRoomEvent(RoomEventArgs e);
public EventResult OnFailedQuitRoomEvent(RoomEventArgs e);
}
public interface IChangeRoomSettingEventHandler : IEventHandler

View File

@ -0,0 +1,14 @@
namespace Milimoe.FunGame.Core.Library.Common.Event
{
public class LoginEventArgs : GeneralEventArgs
{
public string Username;
public string Password;
public LoginEventArgs(string username = "", string password = "")
{
Username = username;
Password = password;
}
}
}

View File

@ -0,0 +1,12 @@
namespace Milimoe.FunGame.Core.Library.Common.Event
{
public class RoomEventArgs
{
public string RoomID { get; set; } = "";
public RoomEventArgs(string RoomID = "")
{
this.RoomID = RoomID;
}
}
}

View File

@ -0,0 +1,12 @@
namespace Milimoe.FunGame.Core.Library.Common.Event
{
public class SendTalkEventArgs
{
public string Message { get; set; } = "";
public SendTalkEventArgs(string message = "")
{
this.Message = message;
}
}
}

View File

@ -223,27 +223,37 @@
FiveStar
}
public enum RunTimeInvokeType
{
None,
GetServerConnection,
Connect,
Connected,
Disconnect,
Disconnected,
Close
}
public enum MainInvokeType
{
None,
Connected,
Disconnected,
Disconnect,
SetGreen,
SetGreenAndPing,
SetRed,
SetYellow,
WaitConnectAndSetYellow,
WaitLoginAndSetYellow,
Disconnect,
Disconnected,
LogOut,
LogIn,
SetUser,
Connected,
Connect,
GetServerConnection,
Close,
IntoRoom,
Chat,
QuitRoom
QuitRoom,
UpdateRoom,
CreateRoom,
Chat
}
public enum RegInvokeType

View File

@ -137,6 +137,16 @@
public class SocketCreateReceivingException : Exception
{
public override string Message => "无法创建监听套接字 (#10027)";
public override string Message => "无法创建监听套接字 (#10028)";
}
public class GetRoomListException : Exception
{
public override string Message => "获取房间列表失败 (#10029)";
}
public class QuitRoomException : Exception
{
public override string Message => "退出房间失败 (#10030)";
}
}

View File

@ -23,12 +23,12 @@ namespace Milimoe.FunGame.Desktop.Controller
public static bool LoginAccount(params object[]? objs)
{
if (RunTime.Login?.OnBeforeLoginEvent(new GeneralEventArgs()) == Core.Library.Constant.EventResult.Fail) return false;
if (RunTime.Login?.OnBeforeLoginEvent(Login.EventArgs) == Core.Library.Constant.EventResult.Fail) return false;
bool result = LoginModel.LoginAccount(objs);
if (!result)
{
ShowMessage.ErrorMessage("登录失败!!", "登录失败", 5);
RunTime.Login?.OnFailedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnFailedLoginEvent(Login.EventArgs);
}
return result;
}
@ -39,7 +39,7 @@ namespace Milimoe.FunGame.Desktop.Controller
if (!result)
{
ShowMessage.ErrorMessage("登录失败!!", "登录失败", 5);
RunTime.Login?.OnFailedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnFailedLoginEvent(Login.EventArgs);
}
return result;
}

View File

@ -3,6 +3,7 @@ using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Desktop.Model;
using Milimoe.FunGame.Desktop.UI;
using Milimoe.FunGame.Desktop.Library;
namespace Milimoe.FunGame.Desktop.Controller
{
@ -38,14 +39,33 @@ namespace Milimoe.FunGame.Desktop.Controller
break;
case MainInvokeType.IntoRoom:
if (Main.OnBeforeIntoRoomEvent(new GeneralEventArgs()) == EventResult.Fail) return (T)result;
result = MainModel.IntoRoom();
string roomid = new("-1");
if (args != null && args.Length > 0) roomid = (string)args[0];
if (Main.OnBeforeIntoRoomEvent(new RoomEventArgs(roomid)) == EventResult.Fail) return (T)result;
result = MainModel.IntoRoom(roomid);
break;
case MainInvokeType.UpdateRoom:
result = MainModel.UpdateRoom();
break;
case MainInvokeType.QuitRoom:
roomid = new("-1");
if (args != null && args.Length > 0) roomid = (string)args[0];
if (Main.OnBeforeQuitRoomEvent(new RoomEventArgs(roomid)) == EventResult.Fail) return (T)result;
result = MainModel.QuitRoom(roomid);
break;
case MainInvokeType.CreateRoom:
if (Main.OnBeforeCreateRoomEvent(new RoomEventArgs()) == EventResult.Fail) return (T)result;
result = MainModel.CreateRoom();
break;
case MainInvokeType.Chat:
if (Main.OnBeforeSendTalkEvent(new GeneralEventArgs()) == EventResult.Fail) return (T)result;
if (args != null && args.Length > 0)
result = MainModel.Chat((string)args[0]);
string msg = "";
if (args != null && args.Length > 0) msg = (string)args[0];
if (Main.OnBeforeSendTalkEvent(new SendTalkEventArgs(msg)) == EventResult.Fail) return (T)result;
if (msg.Trim() != "") result = MainModel.Chat(msg);
break;
default:
@ -59,9 +79,24 @@ namespace Milimoe.FunGame.Desktop.Controller
return Do<bool>(MainInvokeType.LogOut);
}
public bool IntoRoom()
public bool UpdateRoom()
{
return Do<bool>(MainInvokeType.IntoRoom);
return Do<bool>(MainInvokeType.UpdateRoom);
}
public bool IntoRoom(string roomid)
{
return Do<bool>(MainInvokeType.IntoRoom, roomid);
}
public bool QuitRoom(string roomid)
{
return Do<bool>(MainInvokeType.QuitRoom, roomid);
}
public bool CreateRoom()
{
return Do<bool>(MainInvokeType.CreateRoom);
}
public bool Chat(string msg)

View File

@ -7,7 +7,7 @@ namespace Milimoe.FunGame.Desktop.Controller
{
public class RunTimeController
{
public bool Connected => Do<bool>(MainInvokeType.Connected);
public bool Connected => Do<bool>(RunTimeInvokeType.Connected);
private RunTimeModel RunTimeModel { get; }
private Main Main { get; }
@ -21,16 +21,16 @@ namespace Milimoe.FunGame.Desktop.Controller
/**
* Model的方法
*/
private T Do<T>(MainInvokeType DoType, params object[] args)
private T Do<T>(RunTimeInvokeType DoType, params object[] args)
{
object result = new();
switch (DoType)
{
case MainInvokeType.GetServerConnection:
case RunTimeInvokeType.GetServerConnection:
result = RunTimeModel.GetServerConnection();
break;
case MainInvokeType.Connect:
case RunTimeInvokeType.Connect:
result = RunTimeModel.Connect();
if ((ConnectResult)result != ConnectResult.Success)
{
@ -39,19 +39,19 @@ namespace Milimoe.FunGame.Desktop.Controller
}
break;
case MainInvokeType.Connected:
case RunTimeInvokeType.Connected:
result = RunTimeModel.Connected;
break;
case MainInvokeType.Disconnect:
case RunTimeInvokeType.Disconnect:
if (Main.OnBeforeDisconnectEvent(new GeneralEventArgs()) == EventResult.Fail) return (T)result;
RunTimeModel.Disconnect();
break;
case MainInvokeType.Disconnected:
case RunTimeInvokeType.Disconnected:
break;
case MainInvokeType.Close:
case RunTimeInvokeType.Close:
if (args != null && args.Length > 0)
{
RunTimeModel.Error((Exception)args[0]);
@ -69,32 +69,32 @@ namespace Milimoe.FunGame.Desktop.Controller
public bool GetServerConnection()
{
return Do<bool>(MainInvokeType.GetServerConnection);
return Do<bool>(RunTimeInvokeType.GetServerConnection);
}
public ConnectResult Connect()
{
return Do<ConnectResult>(MainInvokeType.Connect);
return Do<ConnectResult>(RunTimeInvokeType.Connect);
}
public void Disconnect()
{
Do<object>(MainInvokeType.Disconnect);
Do<object>(RunTimeInvokeType.Disconnect);
}
public void Disconnected()
{
Do<object>(MainInvokeType.Disconnected);
Do<object>(RunTimeInvokeType.Disconnected);
}
public bool Close()
{
return Do<bool>(MainInvokeType.Close);
return Do<bool>(RunTimeInvokeType.Close);
}
public bool Error(Exception e)
{
return Do<bool>(MainInvokeType.Close, e);
return Do<bool>(RunTimeInvokeType.Close, e);
}
}
}

View File

@ -7,12 +7,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
{
public class BaseLogin : GeneralForm, ILoginEventHandler
{
public event IEventHandler.BeforeEventHandler? BeforeLogin;
public event IEventHandler.AfterEventHandler? AfterLogin;
public event IEventHandler.SucceedEventHandler? SucceedLogin;
public event IEventHandler.FailedEventHandler? FailedLogin;
public event ILoginEventHandler.BeforeEventHandler? BeforeLogin;
public event ILoginEventHandler.AfterEventHandler? AfterLogin;
public event ILoginEventHandler.SucceedEventHandler? SucceedLogin;
public event ILoginEventHandler.FailedEventHandler? FailedLogin;
public EventResult OnAfterLoginEvent(GeneralEventArgs e)
public EventResult OnAfterLoginEvent(LoginEventArgs e)
{
if (AfterLogin != null)
{
@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnBeforeLoginEvent(GeneralEventArgs e)
public EventResult OnBeforeLoginEvent(LoginEventArgs e)
{
if (BeforeLogin != null)
{
@ -30,7 +30,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedLoginEvent(GeneralEventArgs e)
public EventResult OnFailedLoginEvent(LoginEventArgs e)
{
if (FailedLogin != null)
{
@ -39,7 +39,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedLoginEvent(GeneralEventArgs e)
public EventResult OnSucceedLoginEvent(LoginEventArgs e)
{
if (SucceedLogin != null)
{

View File

@ -90,12 +90,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public event IEventHandler.BeforeEventHandler? BeforeLogin;
public event IEventHandler.AfterEventHandler? AfterLogin;
public event IEventHandler.SucceedEventHandler? SucceedLogin;
public event IEventHandler.FailedEventHandler? FailedLogin;
public event ILoginEventHandler.BeforeEventHandler? BeforeLogin;
public event ILoginEventHandler.AfterEventHandler? AfterLogin;
public event ILoginEventHandler.SucceedEventHandler? SucceedLogin;
public event ILoginEventHandler.FailedEventHandler? FailedLogin;
public EventResult OnBeforeLoginEvent(GeneralEventArgs e)
public EventResult OnBeforeLoginEvent(LoginEventArgs e)
{
if (BeforeLogin != null)
{
@ -104,7 +104,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnAfterLoginEvent(GeneralEventArgs e)
public EventResult OnAfterLoginEvent(LoginEventArgs e)
{
if (AfterLogin != null)
{
@ -113,7 +113,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedLoginEvent(GeneralEventArgs e)
public EventResult OnSucceedLoginEvent(LoginEventArgs e)
{
if (SucceedLogin != null)
{
@ -122,7 +122,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedLoginEvent(GeneralEventArgs e)
public EventResult OnFailedLoginEvent(LoginEventArgs e)
{
if (FailedLogin != null)
{
@ -172,12 +172,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public event IEventHandler.BeforeEventHandler? BeforeIntoRoom;
public event IEventHandler.AfterEventHandler? AfterIntoRoom;
public event IEventHandler.SucceedEventHandler? SucceedIntoRoom;
public event IEventHandler.FailedEventHandler? FailedIntoRoom;
public event IIntoRoomEventHandler.BeforeEventHandler? BeforeIntoRoom;
public event IIntoRoomEventHandler.AfterEventHandler? AfterIntoRoom;
public event IIntoRoomEventHandler.SucceedEventHandler? SucceedIntoRoom;
public event IIntoRoomEventHandler.FailedEventHandler? FailedIntoRoom;
public EventResult OnBeforeIntoRoomEvent(GeneralEventArgs e)
public EventResult OnBeforeIntoRoomEvent(RoomEventArgs e)
{
if (BeforeIntoRoom != null)
{
@ -186,7 +186,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnAfterIntoRoomEvent(GeneralEventArgs e)
public EventResult OnAfterIntoRoomEvent(RoomEventArgs e)
{
if (AfterIntoRoom != null)
{
@ -195,7 +195,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedIntoRoomEvent(GeneralEventArgs e)
public EventResult OnSucceedIntoRoomEvent(RoomEventArgs e)
{
if (SucceedIntoRoom != null)
{
@ -204,7 +204,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedIntoRoomEvent(GeneralEventArgs e)
public EventResult OnFailedIntoRoomEvent(RoomEventArgs e)
{
if (FailedIntoRoom != null)
{
@ -213,12 +213,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public event IEventHandler.BeforeEventHandler? BeforeSendTalk;
public event IEventHandler.AfterEventHandler? AfterSendTalk;
public event IEventHandler.SucceedEventHandler? SucceedSendTalk;
public event IEventHandler.FailedEventHandler? FailedSendTalk;
public event ISendTalkEventHandler.BeforeEventHandler? BeforeSendTalk;
public event ISendTalkEventHandler.AfterEventHandler? AfterSendTalk;
public event ISendTalkEventHandler.SucceedEventHandler? SucceedSendTalk;
public event ISendTalkEventHandler.FailedEventHandler? FailedSendTalk;
public EventResult OnBeforeSendTalkEvent(GeneralEventArgs e)
public EventResult OnBeforeSendTalkEvent(SendTalkEventArgs e)
{
if (BeforeSendTalk != null)
{
@ -227,7 +227,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnAfterSendTalkEvent(GeneralEventArgs e)
public EventResult OnAfterSendTalkEvent(SendTalkEventArgs e)
{
if (AfterSendTalk != null)
{
@ -236,7 +236,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedSendTalkEvent(GeneralEventArgs e)
public EventResult OnSucceedSendTalkEvent(SendTalkEventArgs e)
{
if (SucceedSendTalk != null)
{
@ -245,7 +245,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedSendTalkEvent(GeneralEventArgs e)
public EventResult OnFailedSendTalkEvent(SendTalkEventArgs e)
{
if (FailedSendTalk != null)
{
@ -254,12 +254,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public event IEventHandler.BeforeEventHandler? BeforeCreateRoom;
public event IEventHandler.AfterEventHandler? AfterCreateRoom;
public event IEventHandler.SucceedEventHandler? SucceedCreateRoom;
public event IEventHandler.FailedEventHandler? FailedCreateRoom;
public event ICreateRoomEventHandler.BeforeEventHandler? BeforeCreateRoom;
public event ICreateRoomEventHandler.AfterEventHandler? AfterCreateRoom;
public event ICreateRoomEventHandler.SucceedEventHandler? SucceedCreateRoom;
public event ICreateRoomEventHandler.FailedEventHandler? FailedCreateRoom;
public EventResult OnBeforeCreateRoomEvent(GeneralEventArgs e)
public EventResult OnBeforeCreateRoomEvent(RoomEventArgs e)
{
if (BeforeCreateRoom != null)
{
@ -268,7 +268,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnAfterCreateRoomEvent(GeneralEventArgs e)
public EventResult OnAfterCreateRoomEvent(RoomEventArgs e)
{
if (AfterCreateRoom != null)
{
@ -277,7 +277,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedCreateRoomEvent(GeneralEventArgs e)
public EventResult OnSucceedCreateRoomEvent(RoomEventArgs e)
{
if (SucceedCreateRoom != null)
{
@ -286,7 +286,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedCreateRoomEvent(GeneralEventArgs e)
public EventResult OnFailedCreateRoomEvent(RoomEventArgs e)
{
if (FailedCreateRoom != null)
{
@ -295,12 +295,12 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public event IEventHandler.BeforeEventHandler? BeforeQuitRoom;
public event IEventHandler.AfterEventHandler? AfterQuitRoom;
public event IEventHandler.SucceedEventHandler? SucceedQuitRoom;
public event IEventHandler.FailedEventHandler? FailedQuitRoom;
public event IQuitRoomEventHandler.BeforeEventHandler? BeforeQuitRoom;
public event IQuitRoomEventHandler.AfterEventHandler? AfterQuitRoom;
public event IQuitRoomEventHandler.SucceedEventHandler? SucceedQuitRoom;
public event IQuitRoomEventHandler.FailedEventHandler? FailedQuitRoom;
public EventResult OnBeforeQuitRoomEvent(GeneralEventArgs e)
public EventResult OnBeforeQuitRoomEvent(RoomEventArgs e)
{
if (BeforeQuitRoom != null)
{
@ -309,7 +309,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnAfterQuitRoomEvent(GeneralEventArgs e)
public EventResult OnAfterQuitRoomEvent(RoomEventArgs e)
{
if (AfterQuitRoom != null)
{
@ -318,7 +318,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnSucceedQuitRoomEvent(GeneralEventArgs e)
public EventResult OnSucceedQuitRoomEvent(RoomEventArgs e)
{
if (SucceedQuitRoom != null)
{
@ -327,7 +327,7 @@ namespace Milimoe.FunGame.Desktop.Library.Base
else return EventResult.NoEventImplement;
}
public EventResult OnFailedQuitRoomEvent(GeneralEventArgs e)
public EventResult OnFailedQuitRoomEvent(RoomEventArgs e)
{
if (FailedQuitRoom != null)
{

View File

@ -7,15 +7,10 @@ namespace Milimoe.FunGame.Desktop.Library.Base
{
public class BaseReg : GeneralForm, IRegEventHandler
{
public delegate EventResult BeforeEventHandler(object sender, RegisterEventArgs e);
public delegate EventResult AfterEventHandler(object sender, RegisterEventArgs e);
public delegate EventResult SucceedEventHandler(object sender, RegisterEventArgs e);
public delegate EventResult FailedEventHandler(object sender, RegisterEventArgs e);
public event IEventHandler.BeforeEventHandler? BeforeReg;
public event IEventHandler.AfterEventHandler? AfterReg;
public event IEventHandler.SucceedEventHandler? SucceedReg;
public event IEventHandler.FailedEventHandler? FailedReg;
public event IRegEventHandler.BeforeEventHandler? BeforeReg;
public event IRegEventHandler.AfterEventHandler? AfterReg;
public event IRegEventHandler.SucceedEventHandler? SucceedReg;
public event IRegEventHandler.FailedEventHandler? FailedReg;
public EventResult OnAfterRegEvent(RegisterEventArgs e)
{

View File

@ -94,7 +94,7 @@ namespace Milimoe.FunGame.Desktop.Model
return false;
}
private void SocketHandler_Login(SocketObject SocketObject)
private static void SocketHandler_Login(SocketObject SocketObject)
{
Guid key = Guid.Empty;
string? msg = "";
@ -105,8 +105,8 @@ namespace Milimoe.FunGame.Desktop.Model
if (msg != null && msg.Trim() != "")
{
ShowMessage.ErrorMessage(msg, "登录失败");
RunTime.Login?.OnFailedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnAfterLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnFailedLoginEvent(Login.EventArgs);
RunTime.Login?.OnAfterLoginEvent(Login.EventArgs);
}
else
{
@ -118,13 +118,13 @@ namespace Milimoe.FunGame.Desktop.Model
else
{
ShowMessage.ErrorMessage("登录失败!!", "登录失败", 5);
RunTime.Login?.OnFailedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnAfterLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnFailedLoginEvent(Login.EventArgs);
RunTime.Login?.OnAfterLoginEvent(Login.EventArgs);
}
}
}
private void SocketHandler_CheckLogin(SocketObject SocketObject)
private static void SocketHandler_CheckLogin(SocketObject SocketObject)
{
// 返回的objs是该Login的User对象的各个属性
object[] objs = SocketObject.Parameters;
@ -132,13 +132,13 @@ namespace Milimoe.FunGame.Desktop.Model
{
// 创建User对象并返回到Main
RunTime.Main?.UpdateUI(MainInvokeType.SetUser, new object[] { Factory.New<User>(objs) });
RunTime.Login?.OnSucceedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnAfterLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnSucceedLoginEvent(Login.EventArgs);
RunTime.Login?.OnAfterLoginEvent(Login.EventArgs);
return;
}
ShowMessage.ErrorMessage("登录失败!!", "登录失败", 5);
RunTime.Login?.OnFailedLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnAfterLoginEvent(new GeneralEventArgs());
RunTime.Login?.OnFailedLoginEvent(Login.EventArgs);
RunTime.Login?.OnAfterLoginEvent(Login.EventArgs);
}
}

View File

@ -12,6 +12,7 @@ namespace Milimoe.FunGame.Desktop.Model
public class MainModel : BaseModel
{
private readonly Main Main;
private string LastSendTalkMessage = "";
public MainModel(Main main) : base(RunTime.Socket)
{
@ -44,25 +45,78 @@ namespace Milimoe.FunGame.Desktop.Model
return false;
}
public bool IntoRoom()
public bool IntoRoom(string roomid)
{
try
{
if (RunTime.Socket?.Send(SocketMessageType.IntoRoom, Config.FunGame_Roomid) == SocketResult.Success)
if (RunTime.Socket?.Send(SocketMessageType.IntoRoom, roomid) == SocketResult.Success)
return true;
else throw new CanNotIntoRoomException();
}
catch (Exception e)
{
Main.GetMessage(e.GetErrorInfo());
Main.OnFailedIntoRoomEvent(new GeneralEventArgs());
Main.OnAfterIntoRoomEvent(new GeneralEventArgs());
RoomEventArgs args = new(roomid);
Main.OnFailedIntoRoomEvent(args);
Main.OnAfterIntoRoomEvent(args);
return false;
}
}
public bool UpdateRoom()
{
try
{
if (RunTime.Socket?.Send(SocketMessageType.UpdateRoom) == SocketResult.Success)
return true;
else throw new GetRoomListException();
}
catch (Exception e)
{
Main.GetMessage(e.GetErrorInfo());
return false;
}
}
public bool QuitRoom(string roomid)
{
try
{
if (RunTime.Socket?.Send(SocketMessageType.QuitRoom, roomid) == SocketResult.Success)
return true;
else throw new QuitRoomException();
}
catch (Exception e)
{
Main.GetMessage(e.GetErrorInfo());
RoomEventArgs args = new(roomid);
Main.OnFailedQuitRoomEvent(args);
Main.OnAfterQuitRoomEvent(args);
return false;
}
}
public bool CreateRoom()
{
try
{
if (RunTime.Socket?.Send(SocketMessageType.CreateRoom) == SocketResult.Success)
return true;
else throw new QuitRoomException();
}
catch (Exception e)
{
Main.GetMessage(e.GetErrorInfo());
RoomEventArgs args = new();
Main.OnFailedCreateRoomEvent(args);
Main.OnAfterCreateRoomEvent(args);
return false;
}
}
public bool Chat(string msg)
{
LastSendTalkMessage = msg;
try
{
if (RunTime.Socket?.Send(SocketMessageType.Chat, msg) == SocketResult.Success)
@ -72,8 +126,9 @@ namespace Milimoe.FunGame.Desktop.Model
catch (Exception e)
{
Main.GetMessage(e.GetErrorInfo());
Main.OnFailedSendTalkEvent(new GeneralEventArgs());
Main.OnAfterSendTalkEvent(new GeneralEventArgs());
SendTalkEventArgs SendTalkEventArgs = new(LastSendTalkMessage);
Main.OnFailedSendTalkEvent(SendTalkEventArgs);
Main.OnAfterSendTalkEvent(SendTalkEventArgs);
return false;
}
}
@ -161,12 +216,14 @@ namespace Milimoe.FunGame.Desktop.Model
{
Config.FunGame_Roomid = roomid;
}
Main.OnSucceedIntoRoomEvent(new GeneralEventArgs());
Main.OnAfterIntoRoomEvent(new GeneralEventArgs());
RoomEventArgs args = new(roomid);
Main.OnSucceedIntoRoomEvent(args);
Main.OnAfterIntoRoomEvent(args);
}
private void SocketHandler_Chat(SocketObject SocketObject)
{
SendTalkEventArgs SendTalkEventArgs = new(LastSendTalkMessage);
if (SocketObject.Parameters != null && SocketObject.Length > 1)
{
string user = SocketObject.GetParam<string>(0)!;
@ -175,12 +232,12 @@ namespace Milimoe.FunGame.Desktop.Model
{
Main.GetMessage(msg, TimeType.None);
}
Main.OnSucceedSendTalkEvent(new GeneralEventArgs());
Main.OnAfterSendTalkEvent(new GeneralEventArgs());
Main.OnSucceedSendTalkEvent(SendTalkEventArgs);
Main.OnAfterSendTalkEvent(SendTalkEventArgs);
return;
}
Main.OnFailedSendTalkEvent(new GeneralEventArgs());
Main.OnAfterSendTalkEvent(new GeneralEventArgs());
Main.OnFailedSendTalkEvent(SendTalkEventArgs);
Main.OnAfterSendTalkEvent(SendTalkEventArgs);
}
#endregion

View File

@ -11,6 +11,8 @@ namespace Milimoe.FunGame.Desktop.UI
{
public partial class Login : BaseLogin
{
public static LoginEventArgs EventArgs { get; set; } = new LoginEventArgs();
private readonly LoginController LoginController;
public Login()
@ -46,6 +48,7 @@ namespace Milimoe.FunGame.Desktop.UI
UsernameText.Focus();
return false;
}
EventArgs = new LoginEventArgs(username, password);
if (!LoginController.LoginAccount(username, password))
{
ShowMessage.Message("登录失败!!", "登录失败");
@ -86,7 +89,7 @@ namespace Milimoe.FunGame.Desktop.UI
ShowMessage.TipMessage("暂不支持找回密码~");
}
public EventResult FailedLoginEvent(object sender, GeneralEventArgs e)
public EventResult FailedLoginEvent(object sender, LoginEventArgs e)
{
if (InvokeRequired) GoToLogin.Invoke(() => GoToLogin.Enabled = true);
else GoToLogin.Enabled = true;
@ -94,7 +97,7 @@ namespace Milimoe.FunGame.Desktop.UI
return EventResult.Success;
}
private EventResult SucceedLoginEvent(object sender, GeneralEventArgs e)
private EventResult SucceedLoginEvent(object sender, LoginEventArgs e)
{
if (!IsDisposed)
{
@ -105,13 +108,13 @@ namespace Milimoe.FunGame.Desktop.UI
return EventResult.Success;
}
private EventResult BeforeLoginEvent(object sender, GeneralEventArgs e)
private EventResult BeforeLoginEvent(object sender, LoginEventArgs e)
{
if (RunTime.Main?.OnBeforeLoginEvent(e) == EventResult.Fail) return EventResult.Fail;
return EventResult.Success;
}
private EventResult AfterLoginEvent(object sender, GeneralEventArgs e)
private EventResult AfterLoginEvent(object sender, LoginEventArgs e)
{
RunTime.Main?.OnAfterLoginEvent(e);
return EventResult.Success;

View File

@ -190,7 +190,7 @@ namespace Milimoe.FunGame.Desktop.UI
case MainInvokeType.SetUser:
if (objs != null && objs.Length > 0)
{
SetLoginUser(objs);
LoginAccount(objs);
}
break;
@ -316,18 +316,6 @@ namespace Milimoe.FunGame.Desktop.UI
Room.Text = "暂未进入房间";
}
/// <summary>
/// 设置登录信息
/// </summary>
/// <param name="objs"></param>
private void SetLoginUser(params object[]? objs)
{
if (InvokeRequired)
Invoke(LoginAccount, objs);
else
LoginAccount(objs);
}
/// <summary>
/// 向消息队列输出换行符
/// </summary>
@ -626,7 +614,6 @@ namespace Milimoe.FunGame.Desktop.UI
Login.Visible = false;
Logout.Visible = true;
UpdateUI(MainInvokeType.SetGreenAndPing);
Thread.Sleep(100);
string welcome = $"欢迎回来, {Usercfg.LoginUserName}";
ShowMessage.Message(welcome, "登录成功", 5);
WritelnSystemInfo(welcome);
@ -812,7 +799,7 @@ namespace Milimoe.FunGame.Desktop.UI
/// <summary>
/// 关闭所有登录后才能访问的窗口
/// </summary>
private void CloseConnectedWindows()
private static void CloseConnectedWindows()
{
RunTime.Login?.Close();
RunTime.Register?.Close();
@ -1219,7 +1206,7 @@ namespace Milimoe.FunGame.Desktop.UI
private EventResult SucceedLoginEvent(object sender, GeneralEventArgs e)
{
// 接入-1号房间聊天室
if (MainController?.IntoRoom() ?? false) return EventResult.Success;
if (MainController?.IntoRoom("-1") ?? false) return EventResult.Success;
else return EventResult.Fail;
}