diff --git a/scripts/verify-release-candidate.mjs b/scripts/verify-release-candidate.mjs index 8f487cd..52d1d3d 100644 --- a/scripts/verify-release-candidate.mjs +++ b/scripts/verify-release-candidate.mjs @@ -8439,7 +8439,7 @@ function assertCampSkinState(state, expectedSkinId, label) { const sceneBounds = campSkin?.sceneBounds; const transition = campSkin?.transition; const fullSceneLayers = [campSkin?.backdrop, campSkin?.wash, campSkin?.vignette]; - const ornamentLayers = [campSkin?.header, campSkin?.accentLine, campSkin?.seal, campSkin?.badge]; + const ornamentLayers = [campSkin?.header, campSkin?.accentLine, campSkin?.seal, campSkin?.badge, campSkin?.summary]; assert( campSkin?.id === expectedSkinId && @@ -8469,6 +8469,12 @@ function assertCampSkinState(state, expectedSkinId, label) { ), `Expected ${label} camp header ornaments to remain inside the FHD scene: ${JSON.stringify(campSkin)}` ); + assert( + isVisibleCampSkinView(campSkin?.summary) && + isVisibleCampSkinView(campSkin?.header) && + boundsInside(campSkin.summary.bounds, campSkin.header.bounds), + `Expected ${label} camp summary to stay on one line inside the header: ${JSON.stringify(campSkin)}` + ); assert( transition?.active === false && transition.revision > 0 && diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index 7bdccd5..632ff4d 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -11069,6 +11069,7 @@ export class CampScene extends Phaser.Scene { private campSkinAccentLine?: Phaser.GameObjects.Rectangle; private campSkinSeal?: Phaser.GameObjects.Arc; private campSkinBadge?: Phaser.GameObjects.Rectangle; + private campSkinSummary?: Phaser.GameObjects.Text; private campSkinRenderedTextureKey?: string; private campSkinUsedFallback = false; private campSkinTransitionRevision = 0; @@ -11212,6 +11213,7 @@ export class CampScene extends Phaser.Scene { this.campSkinAccentLine = undefined; this.campSkinSeal = undefined; this.campSkinBadge = undefined; + this.campSkinSummary = undefined; this.campSkinRenderedTextureKey = undefined; this.campSkinUsedFallback = false; this.campSkinTransitionActive = false; @@ -11297,11 +11299,10 @@ export class CampScene extends Phaser.Scene { stroke: '#05070a', strokeThickness: 4 })); - this.scaleLegacyCampUi(this.add.text(88, 62, this.reportSummary(), { + this.campSkinSummary = this.scaleLegacyCampUi(this.add.text(88, 62, this.reportSummary(), { fontFamily: '"Malgun Gothic", "Noto Sans KR", sans-serif', fontSize: '14px', - color: '#d4dce6', - wordWrap: { width: 320, useAdvancedWrap: false } + color: '#d4dce6' })); this.campSkinBadge = this.scaleLegacyCampUi(this.add.rectangle(476, 64, 112, 24, skin.headerColor, 0.9)) @@ -12151,7 +12152,7 @@ export class CampScene extends Phaser.Scene { const achieved = this.report.objectives.filter((objective) => objective.achieved).length; const gold = this.campaign?.gold ?? this.report.rewardGold; - return `${this.report.battleTitle} ${this.report.turnNumber}턴 승리 · 보유 군자금 ${gold} · 목표 보상 ${achieved}/${this.report.objectives.length} · 격파 ${this.report.defeatedEnemies}/${this.report.totalEnemies}`; + return `${this.report.turnNumber}턴 승리 · 군자금 ${gold} · 목표 ${achieved}/${this.report.objectives.length}`; } private currentCampTitle() { @@ -21031,7 +21032,7 @@ export class CampScene extends Phaser.Scene { } private campSkinObjectDebug( - object?: Phaser.GameObjects.Image | Phaser.GameObjects.Rectangle | Phaser.GameObjects.Arc + object?: Phaser.GameObjects.Image | Phaser.GameObjects.Rectangle | Phaser.GameObjects.Arc | Phaser.GameObjects.Text ) { if (!object?.active) { return null; @@ -21699,6 +21700,7 @@ export class CampScene extends Phaser.Scene { accentLine: this.campSkinObjectDebug(this.campSkinAccentLine), seal: this.campSkinObjectDebug(this.campSkinSeal), badge: this.campSkinObjectDebug(this.campSkinBadge), + summary: this.campSkinObjectDebug(this.campSkinSummary), transition: { revision: this.campSkinTransitionRevision, completedRevision: this.campSkinTransitionCompletedRevision,