using System.Collections.Generic;
namespace SepCore.Battle
{
///
/// 一次同步推进的返回值,是 UI 读取行动记录与最新视图的唯一来源。
/// 不保存独立流程状态:Result 非 null 即表示战斗已完成。
///
public sealed class BattleStep
{
///
/// 本次推进产生的有序行动记录列表。
///
public readonly IReadOnlyList Events;
///
/// 推进结束后的只读战斗视图。
///
public readonly BattleViewState View;
///
/// 仅在战斗完成时存在,否则为 null。
///
public readonly BattleResult Result;
public BattleStep(IReadOnlyList events, BattleViewState view, BattleResult result)
{
Events = events != null ? Copy(events) : new BattleEvent[0];
View = view;
Result = result;
}
private static BattleEvent[] Copy(IReadOnlyList source)
{
BattleEvent[] copy = new BattleEvent[source.Count];
for (int i = 0; i < source.Count; i++)
{
copy[i] = source[i];
}
return copy;
}
}
}