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; } }