NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Legion/LegionManager.Data.cs

261 lines
7.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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