using System.Collections.Generic; namespace SepCore.Battle { /// /// 每名参战玩家的战后结果。 /// 保留原始战斗值:阵亡者 HP 为 0;恢复 1/1 的规则由 RunBattleCoordinator 统一应用。 /// 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; } } }