279 lines
7.9 KiB
C#
279 lines
7.9 KiB
C#
using System.Collections.Generic;
|
|
using cfg.LegionCfg;
|
|
using Framework;
|
|
using Gameplay;
|
|
using Gameplay.Net;
|
|
using NLDPB;
|
|
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()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新军团列表
|
|
/// </summary>
|
|
public void SetLegionList()
|
|
{
|
|
_legions.Clear();
|
|
var legionDataList = NetLegionInfoDataList;
|
|
foreach (var legionData in legionDataList)
|
|
{
|
|
var legion = ParseLegion(legionData);
|
|
_legions.Add(legion);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 确认是否有权限
|
|
/// </summary>
|
|
/// <param name="eventID"></param>
|
|
/// <returns></returns>
|
|
public bool CheckIsPermission(Permission eventID)
|
|
{
|
|
if (_myLegion == null)
|
|
return false;
|
|
var eventCfg = TableManager.Instance.Tables.LegionPermissions.GetOrDefault(eventID);
|
|
if (eventCfg != null)
|
|
{
|
|
var post = GetMyPost();
|
|
if (post != Position.None)
|
|
{
|
|
switch (post)
|
|
{
|
|
case Position.Member:
|
|
{
|
|
return eventCfg.Member > 0;
|
|
}
|
|
case Position.RegimentalCommander:
|
|
{
|
|
return eventCfg.RegimentalCommander > 0;
|
|
}
|
|
case Position.AssistantRegimentalCommander:
|
|
{
|
|
return eventCfg.AssistantRegimentalCommander > 0;
|
|
}
|
|
case Position.Leroy:
|
|
{
|
|
return eventCfg.Leroy > 0;
|
|
}
|
|
case Position.Diplomatist:
|
|
{
|
|
return eventCfg.Diplomatist > 0;
|
|
}
|
|
|
|
case Position.Commander:
|
|
{
|
|
return eventCfg.Commander > 0;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public Position GetMyPost()
|
|
{
|
|
if (_myLegion == null)
|
|
return Position.None;
|
|
if (_myLegionMemberList == null || _myLegionMemberList.Count <= 0)
|
|
return Position.None;
|
|
|
|
var myLegionActorData = _myLegionMemberList.Find(
|
|
data => data.ActorID == Actor.Instance.Base.GetProp(ActorProp.ActorId));
|
|
if (myLegionActorData != null)
|
|
{
|
|
return myLegionActorData.Post;
|
|
}
|
|
|
|
return Position.None;
|
|
}
|
|
|
|
public string GetPostStr(Position post)
|
|
{
|
|
switch (post)
|
|
{
|
|
case Position.Commander:
|
|
return CommonUtils.GetLocalizeText("legion_post_commander");
|
|
case Position.RegimentalCommander:
|
|
return CommonUtils.GetLocalizeText("legion_post_president");
|
|
case Position.AssistantRegimentalCommander:
|
|
return CommonUtils.GetLocalizeText("legion_post_assist_president");
|
|
case Position.Leroy:
|
|
return CommonUtils.GetLocalizeText("legion_post_leroy");
|
|
case Position.Diplomatist:
|
|
return CommonUtils.GetLocalizeText("legion_post_diplomatist");
|
|
case Position.Member:
|
|
return CommonUtils.GetLocalizeText("legion_post_member");
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
#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.LegionQuitSuccess, _OnQuitSuccess);
|
|
EventManager.Instance.Register(EventManager.EventName.LegionJoinSendSuccess, _OnJoinApplySendSuccess);
|
|
EventManager.Instance.Register(EventManager.EventName.LegionMemberPostUpdate, _OnMemberPostUpdate);
|
|
}
|
|
|
|
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.LegionQuitSuccess, _OnQuitSuccess);
|
|
EventManager.Instance.Unregister(EventManager.EventName.LegionJoinSendSuccess, _OnJoinApplySendSuccess);
|
|
EventManager.Instance.Unregister(EventManager.EventName.LegionMemberPostUpdate, _OnMemberPostUpdate);
|
|
}
|
|
|
|
/// <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 _OnQuitSuccess()
|
|
{
|
|
_myLegion = null;
|
|
_myLegionMemberList?.Clear();
|
|
_applyMemberList?.Clear();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加入军团成功
|
|
/// </summary>
|
|
private void _OnJoinApplySendSuccess()
|
|
{
|
|
DebugUtil.LogError("申请加入军团成功!!!");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改成员职位
|
|
/// </summary>
|
|
private void _OnMemberPostUpdate()
|
|
{
|
|
DebugUtil.LogError("成员职位修改成功!!!");
|
|
}
|
|
#endregion
|
|
} |