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