diff --git a/game/presentation/main.gd b/game/presentation/main.gd index cfa6819b..32392a7a 100644 --- a/game/presentation/main.gd +++ b/game/presentation/main.gd @@ -64,6 +64,9 @@ var legend_overlay: LegendOverlay var review_overlay: SettlementReviewOverlay var node_overlay: NodeOverlay var shop_overlay: ShopOverlay # 商店覆盖层(GP+商店房实施批——商店房节点兑付呈现) +var _adventure_gp_view := 0 # GP 冒险钱包呈现侧影子(迭代 6 T7——终局面板 GP 行取数面, + # wallet_changed gain/buy 载荷=入账后总额 level_runner.gd:482/539) +var _adventure_gp_final := 0 # 收束清零拍暂存的最终合计("clear" 到达时自影子转存) var camp_overlay: CampOverlay # 营地覆盖层(元进度实现批——主菜单营地入口兑付呈现) var tune_panel: TunePanel @@ -325,7 +328,8 @@ func _on_adventure_finished(summary: Dictionary) -> void: if not detail.is_empty(): text += "\n" + Narrator.keystone_settle_text(detail, _item_name_lookup()) if result == "completed": - _end_overlay.open_victory(text, "返回冒险", board_view.get_global_rect()) + _end_overlay.open_victory(text, "返回冒险", board_view.get_global_rect(), + "本局 GP 入账 · 合计 %d" % _adventure_gp_final) # 迭代 6 T7 卡⑩——GP 行只上冒险终局面板(C5) else: _end_overlay.open_defeat(text, "返回", board_view.get_global_rect()) logger.log_level_end(summary) # 试玩时间线:冒险终局(摘要随载荷) @@ -362,6 +366,8 @@ func _on_battle_end_continue() -> void: func _on_end_review() -> void: review_overlay.open(log_view.parsed_text()) + _open_modal(review_overlay) # 迭代 6 T7——走模态栈:终局层在册上方的可见遮挡被显式隐藏, + # 修复「回看层被终局层全屏 STOP 遮罩压死」(直开绕栈缺陷) # ==================== 调试模式(连续两层——编排归 debug_session.gd; @@ -719,6 +725,12 @@ func _on_shop_leave() -> void: func _on_wallet_changed(event: String, gp: int, extra: Dictionary) -> void: # wallet 行族转发(到账/购买/清零——试玩日志验收取数面)+ 常驻余额与在开商店覆盖层重刷 logger.log_wallet(event, gp, extra) + match String(event): # GP 影子账(迭代 6 T7——收束清零前取值,纯呈现零核心触碰=C1 呈现层方案) + "gain", "buy": + _adventure_gp_view = gp + "clear": + _adventure_gp_final = _adventure_gp_view + _adventure_gp_view = 0 if shop_overlay.visible and runner != null: shop_overlay.refresh_state(runner.shop_products(), int(runner.gp)) _refresh_presentations() @@ -846,6 +858,7 @@ func _phase_text() -> String: func _open_review_from_band() -> void: review_overlay.open(log_view.parsed_text()) + _open_modal(review_overlay) # 迭代 6 T7 同款——净空态下栈上无可隐藏层,行为与旧直开逐位等价 func _on_legend_toggled() -> void: diff --git a/game/smoke/ui_click_probe.gd b/game/smoke/ui_click_probe.gd index bff6c689..74e892c4 100644 --- a/game/smoke/ui_click_probe.gd +++ b/game/smoke/ui_click_probe.gd @@ -22,6 +22,7 @@ var _ap_spent_this_round := 0 var _problems: Array = [] # 新增覆盖的问题收集(退出码合并判定) var _tested_legend := false var _tested_review := false +var _tested_end_review := false # 迭代 6 T7——终局面板回看入口(z 序修复回归) var _tested_refresh_chain := false var _tested_tooltip := false var _inter_confirms := 0 # 大奖励屏确认计数(冒险推进停点——首见确认推进 L2,再见 = L2 通关收口) @@ -221,6 +222,22 @@ func _run_modal_probes_once() -> void: main.review_overlay.close() if main.review_overlay.is_open() or main._input_locked(): _problems.append("明细回看关闭后未恢复") + # ②b 终局面板明细回看入口(迭代 6 T7——z 序修复回归闸):终局层开启态点回看 → + # 模态栈隐藏终局层、回看可用;关回看终局层恢复(修复「回看被终局层 STOP 遮罩压死」) + if not _tested_end_review: + _tested_end_review = true + main._end_overlay.open_victory("探针终局", "继续", Rect2(Vector2.ZERO, Vector2(400, 300))) + main._end_overlay.review_pressed.emit() # 真实信号路径(按钮 → 组合根 _on_end_review) + if not main.review_overlay.is_open(): + _problems.append("终局入口回看未打开(_on_end_review 路径)") + if main._end_overlay.visible: + _problems.append("回看打开时终局层未被模态栈隐藏(z 序压死复发——迭代 6 T7)") + main.review_overlay.close() + if not main._end_overlay.visible: + _problems.append("回看关闭后终局层未恢复(模态栈遮挡恢复缺失)") + main._end_overlay.close() + if main._end_overlay.is_open(): + _problems.append("终局层未关闭干净") # ③ tooltip(状态效果槽悬停——来源+语义+剩余):有槽可见时触发 if not _tested_tooltip: var row = main.stage.hero_standee.slot_row # 状态 tooltip 载体 2026-09-26 迁 B 区站桩 diff --git a/game/smoke/ui_probe.gd b/game/smoke/ui_probe.gd index da82e2cb..c053c00e 100644 --- a/game/smoke/ui_probe.gd +++ b/game/smoke/ui_probe.gd @@ -114,6 +114,7 @@ func _ready() -> void: if main.log_view.mode() != "dig" or main.log_view.custom_minimum_size.y != 24.0: problems.append("B 区明细带挖掘期应收起 24px(mode=%s h=%s)" % [main.log_view.mode(), str(main.log_view.custom_minimum_size.y)]) # E 区道具面板已随可选类删除下线(格面资源批 2026-09-15)——四区构建由其余断言覆盖 + # ---- 敌方站桩投影(顺位徽标/意图三档动作动画占位——敌人系统×4;2026-09-20 全站桩拍板)---- # B 区站桩 Node2D 迁移批 T3(2026-09-26)断言等价改写(台账 171 改判记录):enemy_box 子件 # 伴随件化(壳层 tooltip 载体),穿透明(子件 _name_label/_armor_icon/_intent_badge)改本体 @@ -209,6 +210,23 @@ func _ready() -> void: break main.board_view.set_desaturated(true) main.board_view.set_desaturated(false) + # ---- GP 终局行(迭代 6 T7 卡⑩):影子账清零转存+胜利面板 GP 行呈现(C5:GP 行只上冒险终局面板)---- + # (置于战斗态断言之后——合成收束会灰化站桩并清 settlement 引用,具污染性) + main._adventure_gp_view = 57 + main._on_wallet_changed("clear", 0, {}) + if int(main._adventure_gp_final) != 57 or int(main._adventure_gp_view) != 0: + problems.append("GP 影子账清零转存失败(final=%s view=%s)" % [str(main._adventure_gp_final), str(main._adventure_gp_view)]) + var meta_saved = main.meta + main.meta = null # 合成摘要不落结算(settle_adventure 会写隔离档→跨跑自污染),GP 行只验呈现 + main._on_adventure_finished({"result": "completed", "cleared": true, "levels_cleared": 3, + "stopped_at": 0, "keystone_total": 30, "master_seed": 42}) + main.meta = meta_saved + if not main._end_overlay.is_open(): + problems.append("冒险终局面板未开(合成摘要路径)") + elif not main._end_overlay._gp_line.visible or not main._end_overlay._gp_line.text.contains("57"): + problems.append("终局面板 GP 行缺失或取数不对(%s)" % main._end_overlay._gp_line.text) + main._end_overlay.close() + main._close_modal(main._end_overlay) if problems.is_empty(): print("[ui_probe] PASS — cells=%d board=%dx%d hp='%s' enemies=%d ap_dots=%d" % [ main.board_view._cells.size(), main.board_view.board().width, main.board_view.board().height,