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

203 lines
6.0 KiB
C#
Raw Normal View History

2024-12-16 15:50:22 +08:00
using System.Collections.Generic;
using Gameplay.Common;
using Gameplay.Net;
using NLDPB;
2024-12-16 15:50:22 +08:00
/// <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);
2024-12-16 15:50:22 +08:00
/// <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;
2024-12-16 15:50:22 +08:00
/// <summary>
/// 通过服务器下发数据生成完整军团对象
/// </summary>
/// <param name="legionData"></param>
/// <returns></returns>
public Legion ParseLegion(MSG_LegionData legionData)
{
return _ParseLegionData(legionData);
}
/// <summary>
/// 通过服务器下发
/// </summary>
/// <param name="legionData"></param>
/// <returns></returns>
public Legion ParseLegion(Lg_Clt_LegionBase 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.TagIdxList)
{
legionData.TagIds.Add((uint)tagIdx);
}
return legionData;
}
private void _ParseLegionInfoDetail()
{
}
#region 编辑军团信息
public void SetExamineType(LegionExamineType examineType)
{
_myLegion.ExamineType = examineType;
}
#endregion
2024-12-16 15:50:22 +08:00
}
/// <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> TagIdxList; //标签索引列表
public int ManifestoID; //宣言索引
public int MinActorLevel; //招募最小等级限制
public int MemberCount; //成员数量
public List<uint> ApplyMembers; //申请成员列表
public LegionExamineType ExamineType; //审批类型
public List<ActorLegionData> MemberList; //成员列表
2024-12-16 15:50:22 +08:00
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);
}
}
2024-12-16 15:50:22 +08:00
public Legion()
{
ID = 0; //默认为0创建时通知服务器需要传0
MinActorLevel = GLConfig.Inst.data.LegionJoinLevelLimit;
2024-12-16 15:50:22 +08:00
}
}
/// <summary>
/// 军团成员数据
/// </summary>
public class ActorLegionData
2024-12-16 15:50:22 +08:00
{
public uint ActorID;
public string NickName;
public int Level;
2025-01-07 17:19:22 +08:00
public uint LastLogOutTime; //上次在线时间
public int WeekContribution; //周贡献
public int MonthContribution; //月贡献
2024-12-25 19:37:51 +08:00
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;
2025-01-07 17:19:22 +08:00
LastLogOutTime = actorData.LastLogoutTime;
WeekContribution = (int)actorData.WeekContribution;
MonthContribution = (int)actorData.MonthContribution;
2024-12-25 19:37:51 +08:00
Post = (cfg.LegionCfg.Position)actorData.Position;
OnLine = actorData.IsOnline;
}
2024-12-16 15:50:22 +08:00
}