diff --git a/FunGame.Core/Api/Transmittal/SQLHelper.cs b/FunGame.Core/Api/Transmittal/SQLHelper.cs
index 970a681..c18370b 100644
--- a/FunGame.Core/Api/Transmittal/SQLHelper.cs
+++ b/FunGame.Core/Api/Transmittal/SQLHelper.cs
@@ -25,6 +25,14 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
/// 影响的行数
public abstract int Execute(out SQLResult Result);
+ ///
+ /// 执行一个指定的命令
+ ///
+ /// 命令
+ /// 执行结果
+ /// 影响的行数
+ public abstract int Execute(string Script, out SQLResult Result);
+
///
/// 查询DataSet
///
@@ -32,6 +40,14 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
/// 结果集
public abstract DataSet ExecuteDataSet(out SQLResult Result);
+ ///
+ /// 执行指定的命令查询DataSet
+ ///
+ /// 命令
+ /// 执行结果
+ /// 结果集
+ public abstract DataSet ExecuteDataSet(string Script, out SQLResult Result);
+
///
/// 关闭连接
///
diff --git a/FunGame.Core/Interface/Event/EventHandlers.cs b/FunGame.Core/Interface/Event/EventHandlers.cs
index 8fb4f30..dbdc0bf 100644
--- a/FunGame.Core/Interface/Event/EventHandlers.cs
+++ b/FunGame.Core/Interface/Event/EventHandlers.cs
@@ -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
diff --git a/FunGame.Core/Library/Common/Event/LoginEventArgs.cs b/FunGame.Core/Library/Common/Event/LoginEventArgs.cs
new file mode 100644
index 0000000..25b12c6
--- /dev/null
+++ b/FunGame.Core/Library/Common/Event/LoginEventArgs.cs
@@ -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;
+ }
+ }
+}
diff --git a/FunGame.Core/Library/Common/Event/RoomEventArgs.cs b/FunGame.Core/Library/Common/Event/RoomEventArgs.cs
new file mode 100644
index 0000000..485c6ee
--- /dev/null
+++ b/FunGame.Core/Library/Common/Event/RoomEventArgs.cs
@@ -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;
+ }
+ }
+}
diff --git a/FunGame.Core/Library/Common/Event/SendTalkEventArgs.cs b/FunGame.Core/Library/Common/Event/SendTalkEventArgs.cs
new file mode 100644
index 0000000..f4ab73a
--- /dev/null
+++ b/FunGame.Core/Library/Common/Event/SendTalkEventArgs.cs
@@ -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;
+ }
+ }
+}
diff --git a/FunGame.Core/Library/Constant/TypeEnum.cs b/FunGame.Core/Library/Constant/TypeEnum.cs
index 333da41..3f3534e 100644
--- a/FunGame.Core/Library/Constant/TypeEnum.cs
+++ b/FunGame.Core/Library/Constant/TypeEnum.cs
@@ -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
diff --git a/FunGame.Core/Library/Exception/Exception.cs b/FunGame.Core/Library/Exception/Exception.cs
index 6d93d5f..d84449f 100644
--- a/FunGame.Core/Library/Exception/Exception.cs
+++ b/FunGame.Core/Library/Exception/Exception.cs
@@ -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)";
}
}
diff --git a/FunGame.Desktop/Controller/LoginController.cs b/FunGame.Desktop/Controller/LoginController.cs
index bb7f797..2a6b035 100644
--- a/FunGame.Desktop/Controller/LoginController.cs
+++ b/FunGame.Desktop/Controller/LoginController.cs
@@ -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;
}
diff --git a/FunGame.Desktop/Controller/MainController.cs b/FunGame.Desktop/Controller/MainController.cs
index dcbc4a1..57697b9 100644
--- a/FunGame.Desktop/Controller/MainController.cs
+++ b/FunGame.Desktop/Controller/MainController.cs
@@ -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(MainInvokeType.LogOut);
}
- public bool IntoRoom()
+ public bool UpdateRoom()
{
- return Do(MainInvokeType.IntoRoom);
+ return Do(MainInvokeType.UpdateRoom);
+ }
+
+ public bool IntoRoom(string roomid)
+ {
+ return Do(MainInvokeType.IntoRoom, roomid);
+ }
+
+ public bool QuitRoom(string roomid)
+ {
+ return Do(MainInvokeType.QuitRoom, roomid);
+ }
+
+ public bool CreateRoom()
+ {
+ return Do(MainInvokeType.CreateRoom);
}
public bool Chat(string msg)
diff --git a/FunGame.Desktop/Controller/RunTimeController.cs b/FunGame.Desktop/Controller/RunTimeController.cs
index c6d99b2..4decc72 100644
--- a/FunGame.Desktop/Controller/RunTimeController.cs
+++ b/FunGame.Desktop/Controller/RunTimeController.cs
@@ -7,7 +7,7 @@ namespace Milimoe.FunGame.Desktop.Controller
{
public class RunTimeController
{
- public bool Connected => Do(MainInvokeType.Connected);
+ public bool Connected => Do(RunTimeInvokeType.Connected);
private RunTimeModel RunTimeModel { get; }
private Main Main { get; }
@@ -21,16 +21,16 @@ namespace Milimoe.FunGame.Desktop.Controller
/**
* 从内部去调用Model的方法,并记录日志。
*/
- private T Do(MainInvokeType DoType, params object[] args)
+ private T Do(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(MainInvokeType.GetServerConnection);
+ return Do(RunTimeInvokeType.GetServerConnection);
}
public ConnectResult Connect()
{
- return Do(MainInvokeType.Connect);
+ return Do(RunTimeInvokeType.Connect);
}
public void Disconnect()
{
- Do