From dd873b211b0f5986c6b9a6d617a630d776b585ea Mon Sep 17 00:00:00 2001 From: Wickedness Date: Thu, 9 Jul 2026 14:02:55 +0900 Subject: [PATCH] Consolidate reserve drill assignment counts --- src/game/scenes/CampScene.ts | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index 8e054bb..f693776 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -13336,10 +13336,8 @@ export class CampScene extends Phaser.Scene { const selectedRecruitedCount = recruitedUnits.filter((unit) => selectedIds.has(unit.id)).length; const reserveUnits = allAllies.filter((unit) => !selectedIds.has(unit.id)); const reserveNames = reserveUnits.map((unit) => unit.name).join(', '); - const individualReserveTrainingCount = reserveUnits.filter((unit) => this.campaign?.reserveTrainingAssignments[unit.id]).length; - const reserveTrainingBondAssignmentCount = reserveUnits.filter( - (unit) => this.campaign?.reserveTrainingAssignments[unit.id] && this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0 - ).length; + const individualReserveTrainingCount = this.reserveTrainingAssignedUnits(reserveUnits).length; + const reserveTrainingBondAssignmentCount = this.reserveTrainingBondAssignedUnits(reserveUnits).length; const terrainScores = selectedUnits.map((unit) => this.sortieTerrainScore(unit, scenario)); const terrainScore = terrainScores.length ? Math.round(terrainScores.reduce((sum, score) => sum + score, 0) / terrainScores.length) @@ -13696,6 +13694,14 @@ export class CampScene extends Phaser.Scene { return campaignReserveTrainingFocusDefinitions.find((focus) => focus.id === focusId) ?? this.reserveTrainingFocusDefinition(); } + private reserveTrainingAssignedUnits(units: UnitData[]) { + return units.filter((unit) => this.campaign?.reserveTrainingAssignments[unit.id]); + } + + private reserveTrainingBondAssignedUnits(units: UnitData[]) { + return this.reserveTrainingAssignedUnits(units).filter((unit) => this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0); + } + private reserveTrainingPreviewUnits() { const selectedIds = new Set(this.selectedSortieUnits().map((unit) => unit.id)); return this.sortieAllies().filter((unit) => !selectedIds.has(unit.id)); @@ -13704,10 +13710,8 @@ export class CampScene extends Phaser.Scene { private reserveTrainingPreviewLine(reserveUnits: UnitData[], focus: CampaignReserveTrainingFocusDefinition) { const previewNames = reserveUnits.slice(0, 2).map((unit) => unit.name).join(', '); const remaining = reserveUnits.length > 2 ? ` 외 ${reserveUnits.length - 2}명` : ''; - const individualCount = reserveUnits.filter((unit) => this.campaign?.reserveTrainingAssignments[unit.id]).length; - const bondIndividualCount = reserveUnits.filter( - (unit) => this.campaign?.reserveTrainingAssignments[unit.id] && this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0 - ).length; + const individualCount = this.reserveTrainingAssignedUnits(reserveUnits).length; + const bondIndividualCount = this.reserveTrainingBondAssignedUnits(reserveUnits).length; const bondIndividualLine = bondIndividualCount > 0 ? ` · 공명 ${bondIndividualCount}명` : ''; const gainLine = individualCount > 0 ? `개별 ${individualCount}명${bondIndividualLine} · 기본 ${focus.label}` @@ -14059,10 +14063,9 @@ export class CampScene extends Phaser.Scene { const reserveCount = Math.max(0, allies.length - selected.length); const recentTrainingCount = this.latestReserveTrainingAwards().length; const selectedIds = new Set(selected.map((unit) => unit.id)); - const reserveTrainingAssignmentCount = allies.filter((unit) => !selectedIds.has(unit.id) && this.campaign?.reserveTrainingAssignments[unit.id]).length; - const reserveTrainingBondAssignmentCount = allies.filter( - (unit) => !selectedIds.has(unit.id) && this.campaign?.reserveTrainingAssignments[unit.id] && this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0 - ).length; + const reserveUnits = allies.filter((unit) => !selectedIds.has(unit.id)); + const reserveTrainingAssignmentCount = this.reserveTrainingAssignedUnits(reserveUnits).length; + const reserveTrainingBondAssignmentCount = this.reserveTrainingBondAssignedUnits(reserveUnits).length; const bg = this.track(this.add.rectangle(x, y, width, 26, 0x0d141c, 0.92)); bg.setOrigin(0); bg.setStrokeStyle(1, palette.gold, 0.38); @@ -14388,10 +14391,8 @@ export class CampScene extends Phaser.Scene { recruitedCount, averageLevel, reserveTrainingFocus: this.reserveTrainingFocusDefinition(), - reserveTrainingAssignmentCount: reserveUnits.filter((unit) => this.campaign?.reserveTrainingAssignments[unit.id]).length, - reserveTrainingBondAssignmentCount: reserveUnits.filter( - (unit) => this.campaign?.reserveTrainingAssignments[unit.id] && this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0 - ).length, + reserveTrainingAssignmentCount: this.reserveTrainingAssignedUnits(reserveUnits).length, + reserveTrainingBondAssignmentCount: this.reserveTrainingBondAssignedUnits(reserveUnits).length, reserveTrainingCount: reserveTrainingAwards.length, reserveTrainingExp: reserveTrainingAwards.reduce((sum, entry) => sum + entry.expGained, 0) };