From c499fdc4fc53a64890399edec6ddf4d28ba2a58b Mon Sep 17 00:00:00 2001 From: Wickedness Date: Thu, 9 Jul 2026 14:05:55 +0900 Subject: [PATCH] Expose reserve drill option state --- scripts/verify-flow.mjs | 4 +++- src/game/scenes/CampScene.ts | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/scripts/verify-flow.mjs b/scripts/verify-flow.mjs index 94ee231..d4b0872 100644 --- a/scripts/verify-flow.mjs +++ b/scripts/verify-flow.mjs @@ -9666,7 +9666,9 @@ function assertSortieTacticalRoster(state, requiredUnitIds) { typeof state.rosterCollection?.reserveTrainingBondAssignmentCount !== 'number' || !Array.isArray(state.reserveTrainingFocusOptions) || state.reserveTrainingFocusOptions.length !== 3 || - !state.reserveTrainingFocusOptions.some((focus) => focus.id === 'bond-practice' && focus.bondExpGained > 0) + !state.reserveTrainingFocusOptions.some((focus) => focus.id === 'bond-practice' && focus.bondExpGained > 0) || + !state.reserveTrainingFocusOptions.some((focus) => focus.selected) || + state.reserveTrainingFocusOptions.some((focus) => typeof focus.selected !== 'boolean' || typeof focus.assignedReserveCount !== 'number') ) { throw new Error(`Expected sortie preparation to expose selectable reserve drill focuses: ${JSON.stringify(state.reserveTrainingFocusOptions)}`); } diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index 79f94e1..57d6cd4 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -15746,6 +15746,9 @@ export class CampScene extends Phaser.Scene { getDebugState() { const sortieChecklist = this.sortieChecklist(); const sortieScenario = this.nextSortieScenario(); + const reserveTrainingAssignments = this.campaign?.reserveTrainingAssignments ?? {}; + const reserveTrainingFocus = this.reserveTrainingFocusDefinition(); + const reserveTrainingUnits = this.reserveTrainingPreviewUnits(); return { scene: this.scene.key, activeTab: this.activeTab, @@ -15759,7 +15762,7 @@ export class CampScene extends Phaser.Scene { selectedVisitId: this.selectedVisitId, selectedSortieUnitIds: [...this.selectedSortieUnitIds], sortieFormationAssignments: { ...this.sortieFormationAssignments }, - reserveTrainingAssignments: { ...(this.campaign?.reserveTrainingAssignments ?? {}) }, + reserveTrainingAssignments: { ...reserveTrainingAssignments }, sortieItemAssignments: this.cloneSortieItemAssignments(this.sortieItemAssignments), sortieDeploymentPreview: this.sortieDeploymentPreviewDebug(), sortieFocusedUnitId: this.sortieFocusedUnitId, @@ -15767,8 +15770,12 @@ export class CampScene extends Phaser.Scene { sortiePlanFeedback: this.sortiePlanFeedback, sortieChecklist, sortieNextAction: this.sortiePrepSubtitle(sortieChecklist), - reserveTrainingFocus: this.reserveTrainingFocusDefinition(), - reserveTrainingFocusOptions: campaignReserveTrainingFocusDefinitions.map((focus) => ({ ...focus })), + reserveTrainingFocus, + reserveTrainingFocusOptions: campaignReserveTrainingFocusDefinitions.map((focus) => ({ + ...focus, + selected: focus.id === reserveTrainingFocus.id, + assignedReserveCount: reserveTrainingUnits.filter((unit) => reserveTrainingAssignments[unit.id] === focus.id).length + })), sortieRosterView: this.sortieRosterViewState(this.sortieAllies().length), sortieRoster: this.sortieAllies().map((unit) => { const summary = this.sortieUnitTacticalSummary(unit);