NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/LegionBattle/Data/LegionTeamData.cs

69 lines
2.2 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 Framework;
using Google.Protobuf.Collections;
using NLDPB;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Gameplay.LegionBattle
{
/// <summary>
/// 军团战队伍数据
/// </summary>
public sealed class LegionTeamData
{
/// <summary>
/// 编队数据字典
/// </summary>
private Dictionary<uint, LegionRoleData> dicLegionRoleData;
/// <summary>
/// 队伍角色列表,最多3个队伍,每个队伍n个角色
/// </summary>
public List<LegionRoleData>[] RoleDataLists { get; private set; }
public LegionTeamData()
{
dicLegionRoleData = new Dictionary<uint, LegionRoleData>();
RoleDataLists = new List<LegionRoleData>[TableManager.Instance.Tables.GlobalConfig.MaxLegionTeamCount];
for (int i = 0; i < TableManager.Instance.Tables.GlobalConfig.MaxLegionTeamCount; ++i)
{
RoleDataLists[i] = new List<LegionRoleData>();
}
}
/// <summary>
/// 初始化数据
/// </summary>
/// <param name="listTeam"></param>
/// <param name="listCharacter"></param>
public void InitData(RepeatedField<MSG_LB_Team> listTeam, RepeatedField<MSG_LB_Character> listCharacter)
{
for (int i = 0; i < listTeam.Count; ++i)
{
LegionRoleData data = new(listTeam[i].Commander);
dicLegionRoleData[listTeam[i].Commander] = data;
RoleDataLists[i].Add(data);
foreach (uint id in listTeam[i].Units)
{
if (0u == id)
continue;
data = new LegionRoleData(id);
dicLegionRoleData[id] = data;
RoleDataLists[i].Add(data);
}
}
for (int i = 0; i < listCharacter.Count; ++i)
{
if (!dicLegionRoleData.TryGetValue(listCharacter[i].Id, out LegionRoleData legionRoleData))
continue;
legionRoleData.CopyData(listCharacter[i]);
}
}
}
}