using Google.Protobuf.Collections; using NLDPB; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Gameplay.LegionBattle { /// /// 军团战单次战斗数据 /// public sealed class LegionBattleFightData { /// /// 攻击方列表 /// public List ListAttackId { get; private set; } /// /// 防守方列表 /// public List ListDefenceId { get; private set; } /// /// 开始战斗的时间 /// public DateTime StartFightTime { get; private set; } /// /// 是否攻击玩家,true:攻击玩家,false:攻城 /// public bool IsAttackPlayer { get; private set; } /// /// 攻打的建筑数据 /// public LegionBuildingData BuildingData { get; private set; } public LegionBattleFightData() { ListAttackId = new List(); ListDefenceId = new List(); } /// /// 初次创建战斗 /// public void InitData(float passTime, RepeatedField attacks, RepeatedField defences, Vector2Int buildingPos) { StartFightTime = CommonUtils.GetCurTime(CommonUtils.E_TimeType.Server).AddSeconds(-passTime); // 当前时间减去已经过去的时间 ListAttackId.AddRange(attacks); ListDefenceId.AddRange(defences); if (0 >= ListAttackId.Count) { DebugUtil.LogError("(军团战)攻击方列表空"); return; } int buildingIndex = LegionBattleManager.Instance.CurBattle.Map.BlockPosition2TGSCellIndex(buildingPos); if (LegionBattleManager.Instance.TryGetBuildingDataByIndex(buildingIndex, out LegionBuildingData buildingData)) { BuildingData = buildingData; IsAttackPlayer = false; return; } IsAttackPlayer = true; } /// /// 更新战斗数据 /// public void UpdateData(RepeatedField attacks, RepeatedField defences) { ListAttackId.Clear(); ListDefenceId.Clear(); ListAttackId.AddRange(attacks); ListDefenceId.AddRange(defences); } public void Clear() { ListAttackId.Clear(); ListDefenceId.Clear(); } } }