using System.Collections.Generic; using UnityEngine; namespace Colosseum.Combat.Simulation { /// /// 배치 시뮬레이션의 단일 결과 엔트리입니다. /// [System.Serializable] public sealed class SimulationBatchEntry { [SerializeField] private string buildLabel; [SerializeField] private SimulationResult result; public string BuildLabel => buildLabel; public SimulationResult Result => result; public SimulationBatchEntry(string buildLabel, SimulationResult result) { this.buildLabel = buildLabel ?? string.Empty; this.result = result; } } /// /// 배치 시뮬레이션의 전체 결과입니다. /// [System.Serializable] public sealed class SimulationBatchResult { [SerializeField] private string batchName = string.Empty; [SerializeField] private int generatedBuildCount; [SerializeField] private bool truncated; [SerializeField] private List entries = new List(); [SerializeField] private List warnings = new List(); public string BatchName => batchName; public int GeneratedBuildCount => generatedBuildCount; public bool Truncated => truncated; public IReadOnlyList Entries => entries; public IReadOnlyList Warnings => warnings; public void Initialize(string batchName, int generatedBuildCount, bool truncated, List entries, List warnings) { this.batchName = batchName ?? string.Empty; this.generatedBuildCount = Mathf.Max(0, generatedBuildCount); this.truncated = truncated; this.entries = entries ?? new List(); this.warnings = warnings ?? new List(); } } }