From 361a1bed5ddd82de585f13cc4c64569de10e8309 Mon Sep 17 00:00:00 2001 From: Cloud Bot Date: Tue, 24 Mar 2026 08:48:19 +0000 Subject: [PATCH] =?UTF-8?q?fix(game):=20=E5=85=B3=E5=8D=A1=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=97=B6=E9=87=8D=E7=BD=AEHC=E4=B8=BA200=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=B8=A6=E5=85=A5=E4=B8=8A=E4=B8=80=E5=85=B3=E4=BD=99?= =?UTF-8?q?=E9=87=8F=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=B8=B8=E6=88=8F=E5=B9=B3?= =?UTF-8?q?=E8=A1=A1=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/GameManager.ts | 6 ++++++ game/GameScene.ts | 2 ++ game/ui/MapTransitionModal.ts | 14 +++++--------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/game/GameManager.ts b/game/GameManager.ts index 99efbf0..416f7f8 100644 --- a/game/GameManager.ts +++ b/game/GameManager.ts @@ -58,6 +58,12 @@ export class GameManager { // difficulty 保留,不重置 } + /** 重置 HC 到初始值(进入下一关时调用,不带入上一关的余量) */ + resetHC(): void { + this.hc = INITIAL_HC + this.onHCChange.forEach(cb => cb(this.hc)) + } + /** * 扣除 HC,余额不足时返回 false */ diff --git a/game/GameScene.ts b/game/GameScene.ts index a29790b..f4181ba 100644 --- a/game/GameScene.ts +++ b/game/GameScene.ts @@ -399,6 +399,8 @@ export function createGameScene(PhaserLib: typeof Phaser): typeof Phaser.Scene { this.waveManager.clearAllEnemies() // 清除上一关所有防御塔 this.towerManager.clearAllTowers() + // 重置 HC:每关重新开始,不带入上关余量 + this.manager.resetHC() this.loadMap(ALL_MAPS[nextIndex]) this.hud.enableWaveButton() this.hud.setWaveButtonText('▶ 召唤下一波') diff --git a/game/ui/MapTransitionModal.ts b/game/ui/MapTransitionModal.ts index 0325514..8a50dd7 100644 --- a/game/ui/MapTransitionModal.ts +++ b/game/ui/MapTransitionModal.ts @@ -33,7 +33,6 @@ export class MapTransitionModal { ): void { const manager = GameManager.getInstance() const kpi = manager.kpi - const hcReward = 100 const overlay = document.createElement('div') overlay.id = 'map-transition-overlay' @@ -92,9 +91,9 @@ export class MapTransitionModal { ` card.appendChild(hr) - // KPI & 奖励 + // KPI & 说明 const statsEl = document.createElement('div') - statsEl.innerHTML = `KPI: ${kpi}%  |  获得奖励: +${hcReward} HC` + statsEl.innerHTML = `最终KPI: ${kpi}%  |  HC 将重置为 200` statsEl.style.cssText = ` font-size: 20px; color: #e2e8f0; @@ -129,10 +128,10 @@ export class MapTransitionModal { } card.appendChild(nextEl) - // 倒计时提示 + // 倒计时提示(HC 重置提醒) const countdownEl = document.createElement('div') countdownEl.id = 'mt-countdown' - countdownEl.textContent = isFinalMap ? '3秒后返回主菜单...' : '3秒后自动进入下一关...' + countdownEl.textContent = isFinalMap ? '3秒后返回主菜单...' : '3秒后进入下一关,HC重置为200...' countdownEl.style.cssText = ` font-size: 16px; color: #6b7280; @@ -151,9 +150,6 @@ export class MapTransitionModal { document.body.appendChild(overlay) this.container = overlay - // 给 HC 奖励 - manager.addHC(hcReward) - // 3秒自动触发 let remaining = 3 const tick = () => { @@ -161,7 +157,7 @@ export class MapTransitionModal { const el = document.getElementById('mt-countdown') if (el) el.textContent = isFinalMap ? `${remaining}秒后返回主菜单...` - : `${remaining}秒后自动进入下一关...` + : `${remaining}秒后进入下一关,HC重置为200...` } const interval = setInterval(tick, 1000) this.autoCloseTimer = setTimeout(() => {