namespace GeometryTD.CustomComponent { internal sealed class CombatRewardSelectionState : CombatStateBase { public CombatRewardSelectionState(CombatSchedulerRuntimeContext context, CombatSchedulerFlowCoordinator flow) : base(context, flow) { } public override void OnEnter() { if (Context.SettlementContext == null) { Flow.EnterFailureFallback("Combat reward selection failed. Settlement context is missing."); return; } Flow.EnsureRewardSelectFormUseCaseBound(); if (!Context.SettlementFlowService.TryPrepareRewardSelection( Context.SettlementContext, Context.CombatInRunResourceManager, Context.PhaseLoopRuntime.DisplayPhaseIndex, Flow.ResolveCurrentThemeType(), Context.RewardSelectFormUseCase, Flow.OnFullBaseHpRewardSelected, Flow.OnFullBaseHpRewardGiveUp)) { Flow.ChangeState(new CombatFinishFormState(Context, Flow)); } } public override void OnExit() { Flow.CloseRewardSelectForm(); } } }