125 lines
4.1 KiB
C#
125 lines
4.1 KiB
C#
using Framework;
|
|
using Gameplay.Net;
|
|
using PhxhSDK;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Gameplay.LegionBattle
|
|
{
|
|
public sealed partial class LegionBattleManager : Singlenton<LegionBattleManager>, IUpdatable
|
|
{
|
|
/// <summary>
|
|
/// 是否军团战中
|
|
/// </summary>
|
|
public bool IsLegionBattle { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 是否进入军团战完成
|
|
/// </summary>
|
|
public bool IsLegionBattleOK { get; private set; }
|
|
|
|
private void InitAction()
|
|
{
|
|
IsLegionBattle = false;
|
|
IsLegionBattleOK = false;
|
|
|
|
EventManager.Instance.Register(EventManager.EventName.EnterLegionBattle, OnServerEnterLegionBattle);
|
|
EventManager.Instance.Register(EventManager.EventName.EnterLegionBattleSuccess, OnServerEnterLegionBattleOK);
|
|
EventManager.Instance.Register(EventManager.EventName.ExitLegionBattle, OnServerExitLegionBattle);
|
|
}
|
|
|
|
private void ReleaseAction()
|
|
{
|
|
EventManager.Instance.Unregister(EventManager.EventName.ExitLegionBattle, OnServerExitLegionBattle);
|
|
EventManager.Instance.Unregister(EventManager.EventName.EnterLegionBattleSuccess, OnServerEnterLegionBattleOK);
|
|
EventManager.Instance.Unregister(EventManager.EventName.EnterLegionBattle, OnServerEnterLegionBattle);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 向服务器发送消息进入军团战
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <param name="finishCallback"></param>
|
|
/// <param name="param"></param>
|
|
/// <param name="isPlay">剧情加载完成后是否立即播放</param>
|
|
public void TryEnterLegionBattleByServer()
|
|
{
|
|
WaitingForServer.Instance.EventWaiting(WaitingForServer.EventName.FightEnter, false);
|
|
|
|
if (IsLegionBattle)
|
|
{
|
|
DebugUtil.LogError($"进入军团战失败!当前正处于军团战中!");
|
|
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.FightEnter);
|
|
return;
|
|
}
|
|
|
|
NetHelper.EnterLegionBattle(); // 进入军团战消息
|
|
}
|
|
|
|
/// <summary>
|
|
/// 向服务器发送消息退出军团战
|
|
/// </summary>
|
|
public void TryExitLegionBattleByServer()
|
|
{
|
|
WaitingForServer.Instance.EventWaiting(WaitingForServer.EventName.FightEnter, false);
|
|
|
|
if (!IsLegionBattleOK)
|
|
{
|
|
DebugUtil.LogError($"退出军团战失败!当前不处于军团战中!");
|
|
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.FightEnter);
|
|
return;
|
|
}
|
|
|
|
NetHelper.ExitLegionBattle(); // 退出军团战消息
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入军团战(不经过服务器)
|
|
/// </summary>
|
|
public void EnterLegionBattle()
|
|
{
|
|
IsLegionBattle = true;
|
|
|
|
GameStateManager.Instance.ChangeState(new GameStateLegionBattle());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 退出军团战(经过服务器)
|
|
/// </summary>
|
|
public void ExitLegionBattle()
|
|
{
|
|
IsLegionBattleOK = false;
|
|
IsLegionBattle = false;
|
|
|
|
GameStateManager.Instance.ChangeState(new GameStateMainScene(false, true));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 服务器回调进入军团战
|
|
/// </summary>
|
|
private void OnServerEnterLegionBattle()
|
|
{
|
|
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.FightEnter);
|
|
|
|
MapId = 1;
|
|
EnterLegionBattle();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 服务器回调进入军团战完成
|
|
/// </summary>
|
|
private void OnServerEnterLegionBattleOK()
|
|
{
|
|
IsLegionBattleOK = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 服务器退出军团战
|
|
/// </summary>
|
|
private void OnServerExitLegionBattle()
|
|
{
|
|
WaitingForServer.Instance.EventDone(WaitingForServer.EventName.FightEnter);
|
|
|
|
ExitLegionBattle();
|
|
}
|
|
}
|
|
} |