116 lines
3.1 KiB
C#
116 lines
3.1 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();
|
|
}
|
|
|
|
|
|
#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);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 军团BaseData更新
|
|
/// </summary>
|
|
private void _OnLegionBaseUpdate()
|
|
{
|
|
_myLegion = _ParseLegionData(NetLegionBaseData);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 军团成员列表更新
|
|
/// </summary>
|
|
private void _OnLegionMemberUpdate()
|
|
{
|
|
if (_myLegionMemberList == null)
|
|
{
|
|
_myLegionMemberList = new();
|
|
}
|
|
else
|
|
{
|
|
_myLegionMemberList.Clear();
|
|
}
|
|
|
|
foreach (var memberData in NetLegionMemberList)
|
|
{
|
|
DebugUtil.LogError($"MyLegionMember ID:{memberData.ActorId}");
|
|
_myLegionMemberList.Add(new ActorLegionData(memberData));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 军团申请成员列表更新
|
|
/// </summary>
|
|
private void _OnLegionApplyListUpdate()
|
|
{
|
|
if (_applyMemberList == null)
|
|
{
|
|
_applyMemberList = new();
|
|
}
|
|
else
|
|
{
|
|
_applyMemberList.Clear();
|
|
}
|
|
|
|
foreach (var applyData in NetLegionApplyDataList)
|
|
{
|
|
_applyMemberList.Add(new ActorLegionData(applyData));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建军团成功
|
|
/// </summary>
|
|
private void _OnCreateSuccess()
|
|
{
|
|
DebugUtil.LogError("创建军团成功!");
|
|
if (_isPresident)
|
|
{
|
|
DebugUtil.LogError($"军团ID:{_myLegion.ID}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 退出军团成功
|
|
/// </summary>
|
|
private void _OnDismissSuccess()
|
|
{
|
|
_myLegion = null;
|
|
_myLegionMemberList?.Clear();
|
|
_applyMemberList?.Clear();
|
|
}
|
|
#endregion
|
|
} |