261 lines
7.8 KiB
C#
261 lines
7.8 KiB
C#
using System.Collections.Generic;
|
||
using Gameplay.Common;
|
||
using Gameplay.Net;
|
||
using NLDPB;
|
||
|
||
/// <summary>
|
||
/// 军团数据
|
||
/// </summary>
|
||
public partial class LegionManager
|
||
{
|
||
/// <summary>
|
||
/// 军团广场军团数据
|
||
/// </summary>
|
||
private List<Legion> _legions = new List<Legion>();
|
||
|
||
public List<Legion> LegionList => _legions;
|
||
|
||
public int LegionTotal;
|
||
|
||
/// <summary>
|
||
/// 是否团长
|
||
/// </summary>
|
||
public bool IsPresident => _myLegion?.PresidentID == Actor.Instance.Base.GetProp(ActorProp.ActorId);
|
||
|
||
/// <summary>
|
||
/// 自己的军团
|
||
/// </summary>
|
||
private Legion _myLegion;
|
||
public Legion MyLegion => _myLegion;
|
||
|
||
/// <summary>
|
||
/// 自己军团成员列表
|
||
/// </summary>
|
||
private List<ActorLegionData> _myLegionMemberList;
|
||
public List<ActorLegionData> MyLegionMemberList => _myLegionMemberList;
|
||
|
||
/// <summary>
|
||
/// 申请加入列表
|
||
/// </summary>
|
||
private List<ActorLegionData> _applyMemberList;
|
||
public List<ActorLegionData> ApplyLegionMemberList => _applyMemberList;
|
||
|
||
/// <summary>
|
||
/// 申请的军团列表
|
||
/// </summary>
|
||
private Dictionary<uint, ApplyLegionData> _myApplyLegionDatas;
|
||
public Dictionary<uint, ApplyLegionData> MApplyLegionDatas => _myApplyLegionDatas;
|
||
|
||
|
||
/// <summary>
|
||
/// 通过服务器下发数据生成完整军团对象
|
||
/// </summary>
|
||
/// <param name="legionData"></param>
|
||
/// <returns></returns>
|
||
public Legion ParseLegion(MSG_LegionData legionData)
|
||
{
|
||
return _ParseLegionData(legionData);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 转译Client军团对象为向服务器发送的对象
|
||
/// </summary>
|
||
/// <param name="legion"></param>
|
||
/// <returns></returns>
|
||
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.TabIdxList)
|
||
{
|
||
legionData.TagIds.Add((uint)tagIdx);
|
||
}
|
||
|
||
return legionData;
|
||
}
|
||
|
||
private void _ParseLegionInfoDetail()
|
||
{
|
||
|
||
}
|
||
|
||
#region 编辑军团信息
|
||
|
||
public void SetExamineType(LegionExamineType examineType)
|
||
{
|
||
_myLegion.ExamineType = examineType;
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
|
||
/// <summary>
|
||
/// 军团类
|
||
/// </summary>
|
||
public class Legion
|
||
{
|
||
public uint ID; //军团ID
|
||
public uint PresidentID; //团长ID
|
||
public string Name; //军团名
|
||
public int HeadIndex; //头像索引
|
||
public int Level; //军团等级
|
||
public List<int> TabIdxList; //标签索引列表
|
||
public int ManifestoID; //宣言索引
|
||
public int MinActorLevel; //招募最小等级限制
|
||
public int MemberCount; //成员数量
|
||
public List<uint> ApplyMembers; //申请成员列表
|
||
public LegionExamineType ExamineType; //审批类型
|
||
public List<ActorLegionData> MemberList; //成员列表
|
||
|
||
public void _ParseLegionBase(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;
|
||
TabIdxList = new();
|
||
ApplyMembers = new();
|
||
Name = legionBaseData.Name;
|
||
foreach (var id in tagIds)
|
||
{
|
||
TabIdxList.Add((int)id);
|
||
}
|
||
}
|
||
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;
|
||
TabIdxList = new();
|
||
MemberList = new();
|
||
Name = legionData.Name;
|
||
foreach (var id in tagIds)
|
||
{
|
||
TabIdxList.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;
|
||
TabIdxList = new();
|
||
ApplyMembers = new();
|
||
Name = legionBaseData.Name;
|
||
foreach (var id in tagIds)
|
||
{
|
||
TabIdxList.Add((int)id);
|
||
}
|
||
}
|
||
|
||
public Legion()
|
||
{
|
||
ID = 0; //默认为0,创建时通知服务器需要传0
|
||
TabIdxList = new List<int>();
|
||
MinActorLevel = GLConfig.Inst.data.LegionJoinLevelLimit;
|
||
}
|
||
|
||
public Legion(Legion legion)
|
||
{
|
||
if (legion == null)
|
||
{
|
||
return;
|
||
}
|
||
ID = legion.ID;
|
||
Level = legion.Level;
|
||
HeadIndex = legion.HeadIndex;
|
||
TabIdxList = new List<int>(legion.TabIdxList);
|
||
MemberCount = legion.MemberCount;
|
||
ManifestoID = legion.ManifestoID;
|
||
ExamineType = legion.ExamineType;
|
||
MinActorLevel = legion.MinActorLevel;
|
||
MemberList = new();
|
||
Name = legion.Name;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 军团成员数据
|
||
/// </summary>
|
||
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 LegionExamineStatus ExamineStatus;
|
||
|
||
public ActorLegionData(MSG_LegionActorData actorData)
|
||
{
|
||
ActorID = actorData.ActorId;
|
||
NickName = actorData.Nickname;
|
||
Level = (int)actorData.Level;
|
||
LastLogOutTime = actorData.LastLoginTime;
|
||
WeekContribution = (int)actorData.WeekContribution;
|
||
MonthContribution = (int)actorData.MonthContribution;
|
||
Post = (cfg.LegionCfg.Position)actorData.Position;
|
||
OnLine = actorData.IsOnline;
|
||
ExamineStatus = (LegionExamineStatus)actorData.ExamineStatus;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 申请军团数据
|
||
/// </summary>
|
||
public class ApplyLegionData
|
||
{
|
||
public uint LegionID;
|
||
public LegionExamineStatus ExamineStatus;
|
||
public uint OpTime;
|
||
|
||
public ApplyLegionData(MSG_Lg_Clt_ApplyData applyData)
|
||
{
|
||
LegionID = applyData.LegionId;
|
||
ExamineStatus = (LegionExamineStatus)applyData.Status;
|
||
OpTime = applyData.OpTime;
|
||
}
|
||
} |