NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Legion/LegionManager.cs

164 lines
4.3 KiB
C#

using System.Collections.Generic;
using Framework;
using PhxhSDK;
using Sirenix.Utilities;
public partial class LegionManager: Singlenton<LegionManager>, IInitable
{
public bool Belong2Legion => _myLegion != null;
#region API
public void Init()
{
_RegisterEvents();
}
public void Release()
{
_UnregisterEvents();
}
/// <summary>
/// 设置客户端的 MyLegion Base数据
/// </summary>
public void SetMyLegionBase()
{
_myLegion = _ParseLegionData(NetLegionBaseData);
}
/// <summary>
/// 设置客户端的 MyLegion Member数据
/// </summary>
public void SetMyLegionMembers()
{
if (_myLegionMemberList == null)
{
_myLegionMemberList = new();
}
else
{
_myLegionMemberList.Clear();
}
foreach (var memberData in NetLegionMemberList)
{
//TODO Debug
DebugUtil.LogError($"MyLegionMember ID:{memberData.ActorId}");
_myLegionMemberList.Add(new ActorLegionData(memberData));
}
}
/// <summary>
/// 设置客户端的 MyLegion ApplyMember数据
/// </summary>
public void SetMyLegionApplyMembers()
{
if (_applyMemberList == null)
{
_applyMemberList = new();
}
else
{
_applyMemberList.Clear();
}
foreach (var applyData in NetLegionApplyDataList)
{
_applyMemberList.Add(new ActorLegionData(applyData));
//TODO Debug
DebugUtil.LogError($"申请列表, 玩家ID:{applyData.ActorId}, 玩家名:{applyData.ActorId}");
}
}
/// <summary>
/// 设置客户端的 MyLegion 记录数据
/// </summary>
public void SetMyLegionLogs()
{
}
#endregion
#region Events
private void _RegisterEvents()
{
EventManager.Instance.Register(EventManager.EventName.LegionBaseData, _OnLegionBaseUpdate);
EventManager.Instance.Register(EventManager.EventName.LegionMemberData, _OnLegionMemberUpdate);
EventManager.Instance.Register(EventManager.EventName.LegionApplyData, _OnLegionApplyListUpdate);
EventManager.Instance.Register(EventManager.EventName.LegionCreateSuccess, _OnCreateSuccess);
EventManager.Instance.Register(EventManager.EventName.LegionDismissSuccess, _OnDismissSuccess);
EventManager.Instance.Register(EventManager.EventName.LegionJoinSuccess, _OnJoinSuccess);
}
private void _UnregisterEvents()
{
EventManager.Instance.Unregister(EventManager.EventName.LegionBaseData, _OnLegionBaseUpdate);
EventManager.Instance.Unregister(EventManager.EventName.LegionMemberData, _OnLegionMemberUpdate);
EventManager.Instance.Unregister(EventManager.EventName.LegionApplyData, _OnLegionApplyListUpdate);
EventManager.Instance.Unregister(EventManager.EventName.LegionCreateSuccess, _OnCreateSuccess);
EventManager.Instance.Unregister(EventManager.EventName.LegionDismissSuccess, _OnDismissSuccess);
EventManager.Instance.Unregister(EventManager.EventName.LegionJoinSuccess, _OnJoinSuccess);
}
/// <summary>
/// 军团BaseData更新
/// </summary>
private void _OnLegionBaseUpdate()
{
}
/// <summary>
/// 军团成员列表更新
/// </summary>
private void _OnLegionMemberUpdate()
{
}
/// <summary>
/// 军团申请成员列表更新
/// </summary>
private void _OnLegionApplyListUpdate()
{
}
private void _OnLegionLogUpdate()
{
}
/// <summary>
/// 创建军团成功
/// </summary>
private void _OnCreateSuccess()
{
DebugUtil.LogError("创建军团成功!");
if (IsPresident)
{
DebugUtil.LogG($"军团ID:{_myLegion.ID}");
}
}
/// <summary>
/// 退出军团成功
/// </summary>
private void _OnDismissSuccess()
{
_myLegion = null;
_myLegionMemberList?.Clear();
_applyMemberList?.Clear();
}
/// <summary>
/// 加入军团成功
/// </summary>
private void _OnJoinSuccess()
{
DebugUtil.LogError("加入军团成功!!!");
}
#endregion
}