feat(boss): HUD Boss 阶段提示 + boss_design.md 现状更新为已实现

This commit is contained in:
2026-07-23 10:32:27 +08:00
parent 3480255a5a
commit e06cdf8948
2 changed files with 7 additions and 0 deletions
+2
View File
@@ -6,6 +6,8 @@
--- ---
> **⚠️ 实现现状 (2026-07-20 审计)**:本文档描述的整套 Boss 架构(`BossManager` Autoload、`BossDef`/`BossPhaseDef`/`.tres` 资源、`BossAttackRegistry` 攻击模式注册表、场地机制如冰墙/场地收缩、多阶段弹幕、状态机 `BossInstance`**均为设计蓝图,代码 0% 实现**。现状 Boss 只是 `EnemyManager` SoA 中 `type=4`Mini BossWave 8/`type=5`Final BossWave 20)的普通厚血实体;唯一的"阶段行为"是当血量跨越 66% / 33% 阈值时召唤一批 `FAST` 杂兵援军(`wave_manager.gd:94-117`)。以下 `BossManager`/`.tres`/攻击模式注册表/场地机制全部尚未落地,保留作为未来实现的目标设计。详见 [审计报告](../../docs_dev/doc_code_audit_2026-07-20.md)。 > **⚠️ 实现现状 (2026-07-20 审计)**:本文档描述的整套 Boss 架构(`BossManager` Autoload、`BossDef`/`BossPhaseDef`/`.tres` 资源、`BossAttackRegistry` 攻击模式注册表、场地机制如冰墙/场地收缩、多阶段弹幕、状态机 `BossInstance`**均为设计蓝图,代码 0% 实现**。现状 Boss 只是 `EnemyManager` SoA 中 `type=4`Mini BossWave 8/`type=5`Final BossWave 20)的普通厚血实体;唯一的"阶段行为"是当血量跨越 66% / 33% 阈值时召唤一批 `FAST` 杂兵援军(`wave_manager.gd:94-117`)。以下 `BossManager`/`.tres`/攻击模式注册表/场地机制全部尚未落地,保留作为未来实现的目标设计。详见 [审计报告](../../docs_dev/doc_code_audit_2026-07-20.md)。
>
> **✅ 更新 (2026-07-22)**:阶段状态机 + 7 种攻击模式(ring/spread/aimed/spiral/dash/charge_up/melee+ 敌方子弹(`EnemyBulletManager`+ `BOSS_PHASE_CHANGED=29`/`BOSS_KILLED=30` 事件已实现(`BossManager` autoload + `data/bosses.json` + 设计器 Boss 分页)。Boss 仍留在 EnemyManager SoA,移动由 BossManager 接管(非本文档 §2 的完全解耦方案)。仍未实现:场地机制(冰墙/收缩)、通关演出/`GAME_CLEARED`、`.tres`(本工程纯 JSON)。
--- ---
+5
View File
@@ -218,6 +218,7 @@ func _subscribe_events() -> void:
EventBus.subscribe(EventID.SPELL_DEPTH_EXCEEDED, _on_spell_depth_exceeded) EventBus.subscribe(EventID.SPELL_DEPTH_EXCEEDED, _on_spell_depth_exceeded)
EventBus.subscribe(EventID.CHARGE_STATE_CHANGED, _on_charge_state_changed) EventBus.subscribe(EventID.CHARGE_STATE_CHANGED, _on_charge_state_changed)
EventBus.subscribe(EventID.CHARGE_FIRED, _on_charge_fired) EventBus.subscribe(EventID.CHARGE_FIRED, _on_charge_fired)
EventBus.subscribe(EventID.BOSS_PHASE_CHANGED, _on_boss_phase_changed)
PlayerStats.stats_changed.connect(_on_stats_changed) PlayerStats.stats_changed.connect(_on_stats_changed)
func _setup_hud() -> void: func _setup_hud() -> void:
@@ -741,6 +742,10 @@ func _on_charge_fired(_payload: Dictionary) -> void:
_lbl_charge.text = tr("UI_CHARGE_DONE") _lbl_charge.text = tr("UI_CHARGE_DONE")
_lbl_status.text = tr("STATUS_CHARGE_FIRED") _lbl_status.text = tr("STATUS_CHARGE_FIRED")
func _on_boss_phase_changed(payload: Dictionary) -> void:
if _lbl_status:
_lbl_status.text = "Boss 阶段 %d" % int(payload.get("phase", 0))
func _on_spell_depth_exceeded(_payload: Dictionary) -> void: func _on_spell_depth_exceeded(_payload: Dictionary) -> void:
_lbl_status.text = tr("STATUS_DEPTH") % SpellEvaluator.MAX_TRIGGER_DEPTH _lbl_status.text = tr("STATUS_DEPTH") % SpellEvaluator.MAX_TRIGGER_DEPTH
_lbl_status.modulate = Color.YELLOW _lbl_status.modulate = Color.YELLOW