完善EndGame的预留接口

This commit is contained in:
milimoe 2023-12-18 20:08:04 +08:00
parent 699bd1888a
commit 6cd709ea0b
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 51 additions and 9 deletions

View File

@ -5,7 +5,7 @@ using Milimoe.FunGame.Desktop.Library.Component;
namespace Milimoe.FunGame.Desktop.Library.Base namespace Milimoe.FunGame.Desktop.Library.Base
{ {
public class BaseMain : GeneralForm, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler, public class BaseMain : GeneralForm, IConnectEventHandler, IDisconnectEventHandler, ILoginEventHandler, ILogoutEventHandler, IIntoRoomEventHandler, ISendTalkEventHandler,
ICreateRoomEventHandler, IQuitRoomEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IOpenInventoryEventHandler, IOpenStoreEventHandler ICreateRoomEventHandler, IQuitRoomEventHandler, IStartMatchEventHandler, IStartGameEventHandler, IEndGameEventHandler, IOpenInventoryEventHandler, IOpenStoreEventHandler
{ {
public event IConnectEventHandler.BeforeEventHandler? BeforeConnect; public event IConnectEventHandler.BeforeEventHandler? BeforeConnect;
public event IConnectEventHandler.AfterEventHandler? AfterConnect; public event IConnectEventHandler.AfterEventHandler? AfterConnect;
@ -306,5 +306,30 @@ namespace Milimoe.FunGame.Desktop.Library.Base
{ {
FailedOpenStore?.Invoke(sender, e); FailedOpenStore?.Invoke(sender, e);
} }
public event IEventHandler.BeforeEventHandler? BeforeEndGame;
public event IEventHandler.AfterEventHandler? AfterEndGame;
public event IEventHandler.SucceedEventHandler? SucceedEndGame;
public event IEventHandler.FailedEventHandler? FailedEndGame;
public void OnBeforeEndGameEvent(object sender, GeneralEventArgs e)
{
BeforeEndGame?.Invoke(sender, e);
}
public void OnAfterEndGameEvent(object sender, GeneralEventArgs e)
{
AfterEndGame?.Invoke(sender, e);
}
public void OnSucceedEndGameEvent(object sender, GeneralEventArgs e)
{
SucceedEndGame?.Invoke(sender, e);
}
public void OnFailedEndGameEvent(object sender, GeneralEventArgs e)
{
FailedEndGame?.Invoke(sender, e);
}
} }
} }

View File

@ -512,15 +512,32 @@ namespace Milimoe.FunGame.Desktop.UI
/// <summary> /// <summary>
/// 游戏结束,结算 /// 游戏结束,结算
/// </summary> /// </summary>
private void EndGame(Room room, List<User> users) private void EndGame(params object[] args)
{ {
Visible = true; // 触发事件 如果before事件返回false 则不能认定为游戏结束
// test GeneralEventArgs e = new(args);
WritelnGameInfo("===== TEST ====="); OnBeforeEndGameEvent(this, e);
SetButtonEnabled(true, ClientState.InRoom); RunTime.PluginLoader?.OnBeforeEndGameEvent(this, e);
_InGame = false; if (e.Cancel)
WritelnGameInfo("游戏结束!" + " [ " + users[new Random().Next(users.Count)] + " ] " + "是赢家!"); {
RunTime.Controller?.EndGame(); return;
}
if (RunTime.Controller?.EndGame() ?? false)
{
// 恢复界面
Visible = true;
_InGame = false;
SetButtonEnabled(true, ClientState.InRoom);
OnSucceedEndGameEvent(this, e);
RunTime.PluginLoader?.OnSucceedEndGameEvent(this, e);
}
else
{
OnFailedEndGameEvent(this, e);
RunTime.PluginLoader?.OnFailedEndGameEvent(this, e);
}
OnAfterEndGameEvent(this, e);
RunTime.PluginLoader?.OnAfterEndGameEvent(this, e);
} }
/// <summary> /// <summary>