using System.Collections.Generic;
using Gameplay.Common;
using Gameplay.Net;
using NLDPB;
///
/// 军团数据
///
public partial class LegionManager
{
///
/// 军团广场军团数据
///
private List _legions = new List();
public List LegionList => _legions;
public int LegionTotal;
///
/// 是否团长
///
public bool IsPresident => _myLegion?.PresidentID == Actor.Instance.Base.GetProp(ActorProp.ActorId);
///
/// 自己的军团
///
private Legion _myLegion;
public Legion MyLegion => _myLegion;
///
/// 自己军团成员列表
///
private List _myLegionMemberList;
public List MyLegionMemberList => _myLegionMemberList;
///
/// 申请加入列表
///
private List _applyMemberList;
public List ApplyLegionMemberList => _applyMemberList;
///
/// 通过服务器下发数据生成完整军团对象
///
///
///
public Legion ParseLegion(MSG_LegionData legionData)
{
return _ParseLegionData(legionData);
}
///
/// 通过服务器下发
///
///
///
public Legion ParseLegion(Lg_Clt_LegionBase legionData)
{
return _ParseLegionData(legionData);
}
///
/// 转译Client军团对象为向服务器发送的对象
///
///
///
private MSG_LegionData _TranslateLegion(Legion legion)
{
MSG_LegionData legionData = new MSG_LegionData();
legionData.Id = legion.ID;
legionData.IconId = (uint)legion.HeadIndex;
legionData.ManifestoId = (uint)legion.ManifestoID;
legionData.Level = (uint)legion.Level;
legionData.Name = legion.Name;
//legionData.MemberCount = (uint)legion.MemberCount;
legionData.ExamineType = (uint)legion.ExamineType;
legionData.MinActorLevel = (uint)legion.MinActorLevel;
foreach (var tagIdx in legion.TagIdxList)
{
legionData.TagIds.Add((uint)tagIdx);
}
return legionData;
}
private void _ParseLegionInfoDetail()
{
}
#region 编辑军团信息
public void SetExamineType(LegionExamineType examineType)
{
_myLegion.ExamineType = examineType;
}
#endregion
}
///
/// 军团类
///
public class Legion
{
public uint ID; //军团ID
public uint PresidentID; //团长ID
public string Name; //军团名
public int HeadIndex; //头像索引
public int Level; //军团等级
public List TagIdxList; //标签索引列表
public int ManifestoID; //宣言索引
public int MinActorLevel; //招募最小等级限制
public int MemberCount; //成员数量
public List ApplyMembers; //申请成员列表
public LegionExamineType ExamineType; //审批类型
public List MemberList; //成员列表
public Legion(MSG_LegionData legionData)
{
if (legionData == null)
{
return;
}
ID = legionData.Id;
Level = (int)legionData.Level;
HeadIndex = (int)legionData.IconId;
var tagIds = legionData.TagIds;
MemberCount = (int)legionData.MemberCount;
ManifestoID = (int)legionData.ManifestoId;
ExamineType = (LegionExamineType)legionData.ExamineType;
MinActorLevel = (int)legionData.MinActorLevel;
TagIdxList = new();
MemberList = new();
Name = legionData.Name;
foreach (var id in tagIds)
{
TagIdxList.Add((int)id);
}
}
public Legion(Lg_Clt_LegionBase legionBaseData)
{
if (legionBaseData == null)
{
return;
}
ID = legionBaseData.Id;
Level = (int)legionBaseData.Level;
HeadIndex = (int)legionBaseData.IconId;
var tagIds = legionBaseData.TagIds;
//MemberCount = (int)legionData.MemberCount;
ManifestoID = (int)legionBaseData.ManifestoId;
ExamineType = (LegionExamineType)legionBaseData.ExamineType;
MinActorLevel = (int)legionBaseData.MinActorLevel;
PresidentID = legionBaseData.RegimentalCommanderId;
TagIdxList = new();
ApplyMembers = new();
Name = legionBaseData.Name;
foreach (var id in tagIds)
{
TagIdxList.Add((int)id);
}
}
public Legion()
{
ID = 0; //默认为0,创建时通知服务器需要传0
MinActorLevel = GLConfig.Inst.data.LegionJoinLevelLimit;
}
}
///
/// 军团成员数据
///
public class ActorLegionData
{
public uint ActorID;
public string NickName;
public int Level;
public uint LastLogOutTime; //上次在线时间
public int WeekContribution; //周贡献
public int MonthContribution; //月贡献
public cfg.LegionCfg.Position Post; //职位
public uint OnLine; //不在线时=LastLogOutTime
public bool IsOnLine => OnLine == 1; //是否在线
public ActorLegionData(MSG_LegionActorData actorData)
{
ActorID = actorData.ActorId;
NickName = actorData.Nickname;
Level = (int)actorData.Level;
LastLogOutTime = actorData.LastLogoutTime;
WeekContribution = (int)actorData.WeekContribution;
MonthContribution = (int)actorData.MonthContribution;
Post = (cfg.LegionCfg.Position)actorData.Position;
OnLine = actorData.IsOnline;
}
}