using UnityEngine; namespace Colosseum.Combat.Simulation { /// /// 허수아비 계산 시뮬레이터의 고정 가정입니다. /// [System.Serializable] public class SimulationRuleSet { [Header("Label")] [SerializeField] private string ruleName = "Dummy10s"; [Header("Timeline")] [Min(0.1f)] [SerializeField] private float durationSeconds = 10f; [Min(1)] [SerializeField] private int targetCount = 1; [Min(0f)] [SerializeField] private float movementLossSecondsPerCast = 0f; [Min(0f)] [SerializeField] private float manaRegenPerSecond = 0f; public string RuleName => string.IsNullOrWhiteSpace(ruleName) ? "Rule" : ruleName.Trim(); public float DurationSeconds => durationSeconds; public int TargetCount => Mathf.Max(1, targetCount); public float MovementLossSecondsPerCast => Mathf.Max(0f, movementLossSecondsPerCast); public float ManaRegenPerSecond => Mathf.Max(0f, manaRegenPerSecond); /// /// 룰셋 값을 한 번에 설정합니다. /// public void Configure(string ruleName, float durationSeconds, int targetCount, float movementLossSecondsPerCast, float manaRegenPerSecond) { this.ruleName = ruleName ?? string.Empty; this.durationSeconds = Mathf.Max(0.1f, durationSeconds); this.targetCount = Mathf.Max(1, targetCount); this.movementLossSecondsPerCast = Mathf.Max(0f, movementLossSecondsPerCast); this.manaRegenPerSecond = Mathf.Max(0f, manaRegenPerSecond); } } }