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; } /// /// 建筑数据 /// public LegionBuildingData BuildingData { get; private set; } /// /// 是否攻击玩家 /// public bool IsAttackActor { get { return null == BuildingData; } } 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); int index = LegionBattleManager.Instance.CurBattle.Map.BlockPosition2TGSCellIndex(buildingPos); if (LegionBattleManager.Instance.TryGetBuildingDataByIndex(index, out LegionBuildingData buildingData)) BuildingData = buildingData; } /// /// 更新战斗数据 /// public void UpdateData(RepeatedField attacks, RepeatedField defences) { ListAttackId.Clear(); ListDefenceId.Clear(); ListAttackId.AddRange(attacks); ListDefenceId.AddRange(defences); } public void Clear() { ListAttackId.Clear(); ListDefenceId.Clear(); BuildingData = null; } } }