NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Game/Reconnnect/GameReconnect.cs

124 lines
3.1 KiB
C#

using Framework;
using Gameplay;
using Gameplay.Net;
public static class GameClientReconnect
{
private static bool _isReconnecting;
public static void BackToStart()
{
_isReconnecting = false;
var curState = GameStateManager.Instance.GetCurState();
if (curState is not GameStateStart)
{
GameStateManager.Instance.ChangeState(new GameStateStart());
WaitingForServer.Instance.EventClear();
Actor.Instance.OnLogout();
}
Actor.Instance.SetIsReconnecting(_isReconnecting);
}
/// <summary>
/// 开始重连,进入重连状态
/// 不可交互
/// </summary>
public static void StartReconnect()
{
_isReconnecting = true;
Actor.Instance.SetIsReconnecting(_isReconnecting);
WaitingForServer.Instance.EventWaiting(WaitingForServer.EventName.LoginRequest, false);
}
/// <summary>
/// 重连状态结束
/// 可以交互
/// </summary>
public static void EndReconnect()
{
_isReconnecting = false;
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.LoginRequest);
Actor.Instance.SetIsReconnecting(_isReconnecting);
}
/// <summary>
/// 重连确认,提示玩家是否继续重连
/// 可以交互
/// </summary>
public static void ReconnectConfirm()
{
if (!UINetManager.Instance.IsReconnectConfirmOpening())
{
_OpenReconnectConfirmUI();
}
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.LoginRequest);
}
/// <summary>
/// 再次重连请求,进入重连状态
/// 不可交互
/// </summary>
public static void ReconnectAgain()
{
EventManager.Instance.Send(EventManager.EventName.NetReloginAgain);
WaitingForServer.Instance.EventWaiting(WaitingForServer.EventName.LoginRequest, false);
}
/// <summary>
/// 关闭重连确认窗口
/// (不修改等待事件)
/// </summary>
public static void CloseReconnectConfirm()
{
if (UINetManager.Instance.IsReconnectConfirmOpening())
{
_CloseReconnectConfirmUI();
}
}
public static void HideAllReconnect()
{
CloseReconnectConfirm();
_CloseReconnectNoticeUI();
_CloseReconnectingUI();
}
public static void ShowReconnectNotice(string error)
{
_OpenReconnectNoticeUI(error);
}
public static void HideReconnectNotice()
{
_CloseReconnectNoticeUI();
}
private static void _OpenReconnectingUI()
{
UINetManager.Instance.ShowReconnect();
}
private static void _CloseReconnectingUI()
{
UINetManager.Instance.HideReconnect();
}
private static void _OpenReconnectConfirmUI()
{
UINetManager.Instance.ShowReconnectConfirm();
}
private static void _CloseReconnectConfirmUI()
{
UINetManager.Instance.HideReconnectConfirm();
}
private static void _OpenReconnectNoticeUI(string error)
{
UINetManager.Instance.ShowReconnectNotice(error);
}
private static void _CloseReconnectNoticeUI()
{
UINetManager.Instance.HideReconnectNotice();
}
}