diff --git a/game/presentation/main.gd b/game/presentation/main.gd index 6a307b46..206061fa 100644 --- a/game/presentation/main.gd +++ b/game/presentation/main.gd @@ -449,11 +449,11 @@ func _on_battle_finished(payload: Dictionary) -> void: return "level_end": _end_overlay.open_victory(Narrator.battle_end_text("victory", true), - "返回", board_view.get_global_rect()) + "返回", board_view.get_global_rect(), _gp_summary_text(payload)) "standalone_end": if result == "victory": _end_overlay.open_victory(Narrator.battle_end_text("victory", false), - "回到遭遇选择", board_view.get_global_rect()) + "回到遭遇选择", board_view.get_global_rect(), _gp_summary_text(payload)) else: _end_overlay.open_defeat(Narrator.battle_end_text("defeat", false), "返回", board_view.get_global_rect()) @@ -461,6 +461,13 @@ func _on_battle_finished(payload: Dictionary) -> void: _refresh_presentations() +# 战利品行装配(battle.md OQ14——胜利总结结算展示 GP 总量+增量;账本语义零改动,纯呈现读数): +# 增量 = battle_finished 载荷 gp_dropped(战斗域上抛);总量 = runner.gp 现值(LevelRunner 入账 +# 连接先于组合根 handler——此读数即战后入账完毕的总量)。 +func _gp_summary_text(payload: Dictionary) -> String: + return "战利品 GP +%d · 合计 %d" % [int(payload.get("gp_dropped", 0)), int(runner.gp)] + + # ==================== core↔view 接线(战斗信号统一走这里)==================== func _wire_battle(settlement_ref) -> void: diff --git a/game/presentation/views/battle_end_overlay.gd b/game/presentation/views/battle_end_overlay.gd index 9f07e1e6..28c773f3 100644 --- a/game/presentation/views/battle_end_overlay.gd +++ b/game/presentation/views/battle_end_overlay.gd @@ -16,6 +16,7 @@ const COL_WARM := UiKit.WARM var _dim: ColorRect var _seal: Panel var _verdict: Label +var _gp_line: Label # 战利品行(OQ14 口径:胜利总结结算展示 GP 总量+增量——T5 接线 2026-09-28) var _review_btn: Button var _btn: Button var _board_rect := Rect2() @@ -36,6 +37,11 @@ func _init() -> void: _verdict.add_theme_color_override("font_color", COL_WARM) _verdict.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER box.add_child(_verdict) + _gp_line = UiKit.label("", 16, true) + _gp_line.add_theme_color_override("font_color", UiKit.GOLD) + _gp_line.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + _gp_line.visible = false + box.add_child(_gp_line) _review_btn = UiKit.button("明细回看") _review_btn.pressed.connect(func(): review_pressed.emit()) box.add_child(_review_btn) @@ -54,11 +60,15 @@ func _init() -> void: visible = false -# 终局画面数据锚 = 战斗结算 判定行(verdict)——判定行文案由组合根装配传入 -func open_victory(verdict_line: String, continue_label: String, board_rect: Rect2) -> void: +# 终局画面数据锚 = 战斗结算 判定行(verdict)——判定行文案由组合根装配传入。 +# gp_summary(OQ14 口径——胜利总结结算展示 GP 总量+增量):组合根装配「战利品 +增量 · 合计总量」 +# 传入(入账次序 = LevelRunner 入账先于组合根 handler,runner.gp 即战后总量);空串 = 不显示(失败侧恒空)。 +func open_victory(verdict_line: String, continue_label: String, board_rect: Rect2, gp_summary: String = "") -> void: _dim.color = Color(COL_WARM, 0.28) _verdict.text = verdict_line _verdict.add_theme_color_override("font_color", UiKit.INK_ON_GOLD) + _gp_line.text = gp_summary + _gp_line.visible = gp_summary != "" _btn.text = continue_label _board_rect = board_rect visible = true @@ -71,7 +81,7 @@ func open_defeat(verdict_line: String, continue_label: String, board_rect: Rect2 _dim.color = Color(COL_DUSK, 0.45) _verdict.text = verdict_line _verdict.add_theme_color_override("font_color", COL_WARM) - _btn.text = continue_label + _gp_line.visible = false # GP 总量+增量归胜利总结结算(OQ14)——失败侧不呈现 _board_rect = board_rect visible = true _seal.visible = false