44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
namespace GeometryTD.CustomComponent
|
|
{
|
|
internal sealed class CombatRewardSelectionState : CombatStateBase
|
|
{
|
|
public CombatRewardSelectionState(CombatSchedulerRuntime runtime, CombatSchedulerCoordinator coordinator)
|
|
: base(runtime, coordinator)
|
|
{
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (Runtime.SettlementContext == null)
|
|
{
|
|
Coordinator.EnterFailureFallback("Combat reward selection failed. Settlement context is missing.");
|
|
return;
|
|
}
|
|
|
|
Coordinator.EnsureRewardSelectFormUseCaseBound();
|
|
int nextRewardOrdinal = Runtime.NextRewardOrdinal;
|
|
if (!Runtime.CombatSettlementService.TryPrepareRewardSelection(
|
|
Runtime.SettlementContext,
|
|
Runtime.PhaseLoopRuntime.DisplayPhaseIndex,
|
|
Coordinator.ResolveCurrentThemeType(),
|
|
Runtime.NodeContext != null ? Runtime.NodeContext.RunSeed : 0,
|
|
Runtime.NodeContext != null ? Runtime.NodeContext.SequenceIndex : -1,
|
|
ref nextRewardOrdinal,
|
|
Runtime.RewardSelectFormUseCase,
|
|
Coordinator.OnFullBaseHpRewardSelected,
|
|
Coordinator.OnFullBaseHpRewardGiveUp))
|
|
{
|
|
Coordinator.ChangeState(new CombatFinishFormState(Runtime, Coordinator));
|
|
return;
|
|
}
|
|
|
|
Runtime.NextRewardOrdinal = nextRewardOrdinal;
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
Coordinator.CloseRewardSelectForm();
|
|
}
|
|
}
|
|
}
|