166 lines
4.6 KiB
C#
166 lines
4.6 KiB
C#
using Framework;
|
|
using Gameplay;
|
|
using Gameplay.Level;
|
|
using Gameplay.Net;
|
|
|
|
public static class GameClientReconnect
|
|
{
|
|
private static bool _isReconnecting;
|
|
private static bool _pauseOnReconnect = false;
|
|
|
|
public static void BackToStart()
|
|
{
|
|
_isReconnecting = false;
|
|
_pauseOnReconnect = false;
|
|
var curState = GameStateManager.Instance.GetCurState();
|
|
if (curState is not GameStateStart)
|
|
{
|
|
LevelManager.Instance.ExitLevelOnLogout();
|
|
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);
|
|
|
|
#region 关卡暂停
|
|
if (LevelManager.Instance != null)
|
|
{
|
|
if (LevelManager.Instance.CurrentLevel != null)
|
|
{
|
|
if (LevelManager.Instance.CurrentLevel.isInBattle)
|
|
{
|
|
if (!LevelManager.Instance.CurrentLevel.IsPause())
|
|
{
|
|
DebugUtil.Log("关卡暂停");
|
|
LevelManager.Instance.CurrentLevel.SetPause(true);
|
|
_pauseOnReconnect = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
WaitingForServer.Instance.EventWaiting(WaitingForServer.EventName.LoginRequest, false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重连状态结束
|
|
/// 可以交互
|
|
/// </summary>
|
|
public static void EndReconnect(bool SendEvent = false)
|
|
{
|
|
_isReconnecting = false;
|
|
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.LoginRequest);
|
|
Actor.Instance.SetIsReconnecting(_isReconnecting);
|
|
|
|
if (SendEvent)
|
|
{
|
|
DebugUtil.Log("Reconnect back to game");
|
|
EventManager.Instance.Send(EventManager.EventName.Relogin_BackToGame);
|
|
|
|
#region 关卡恢复
|
|
if (_pauseOnReconnect)
|
|
{
|
|
_pauseOnReconnect = false;
|
|
if (LevelManager.Instance.CurrentLevel != null && LevelManager.Instance.CurrentLevel.isInBattle)
|
|
{
|
|
DebugUtil.Log("关卡恢复");
|
|
LevelManager.Instance.CurrentLevel.SetPause(false);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
/// <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();
|
|
}
|
|
} |