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