using System.Collections.Generic;
namespace SepCore.Battle
{
///
/// 每名参战玩家的战后结果。
/// 保留原始战斗值:阵亡者 HP 为 0;恢复 1/1 的规则由 TurnBattleComponent 统一应用。
///
public sealed class BattlePlayerResult
{
///
/// 角色配置标识。
///
public readonly int CharacterId;
///
/// 战斗结束时的当前 HP。
///
public readonly int CurrentHp;
///
/// 战斗结束时的当前 MP。
///
public readonly int CurrentMp;
///
/// 是否在本场战斗中阵亡。
///
public readonly bool WasDefeated;
///
/// 是否在本场战斗中成功逃跑。
///
public readonly bool Escaped;
public BattlePlayerResult(int characterId, int currentHp, int currentMp, bool wasDefeated, bool escaped)
{
CharacterId = characterId;
CurrentHp = currentHp;
CurrentMp = currentMp;
WasDefeated = wasDefeated;
Escaped = escaped;
}
}
///
/// 战斗结果。
///
public sealed class BattleResult
{
///
/// 关联原地图敌人实例。
///
public readonly int EncounterId;
///
/// 四种战斗结果之一。
///
public readonly BattleOutcome Outcome;
///
/// 每名参战玩家的原始战后结果。
///
public readonly IReadOnlyList Players;
public BattleResult(int encounterId, BattleOutcome outcome, IReadOnlyList players)
{
EncounterId = encounterId;
Outcome = outcome;
Players = players != null ? Copy(players) : new BattlePlayerResult[0];
}
private static BattlePlayerResult[] Copy(IReadOnlyList source)
{
BattlePlayerResult[] copy = new BattlePlayerResult[source.Count];
for (int i = 0; i < source.Count; i++)
{
copy[i] = source[i];
}
return copy;
}
}
}