namespace GeometryTD.CustomComponent { public partial class CombatScheduler { private sealed class CombatWaitingForPhaseEndState : CombatStateBase { public CombatWaitingForPhaseEndState(CombatScheduler scheduler) : base(scheduler) { } public override void OnUpdate(float elapseSeconds, float realElapseSeconds) { _ = realElapseSeconds; if (Scheduler._phaseLoopRuntime.CurrentPhase == null) { Scheduler.EnterFailureFallback("CombatScheduler waiting phase failed. Current phase is null."); return; } Scheduler._phaseLoopRuntime.AdvancePhaseElapsed(elapseSeconds); if (Scheduler.ShouldEnterSettlementFromActiveState(out string reason, out bool isVictory)) { Scheduler.ChangeState(new CombatSettlementState(Scheduler, reason, isVictory)); return; } if (!Scheduler._phaseLoopRuntime.ShouldEndCurrentPhase( Scheduler._enemyManager.IsPhaseSpawnCompleted, Scheduler._enemyManager.AliveEnemyCount)) { return; } Scheduler.CompleteCurrentPhase(); } } } }