From a47c988a2d7ed422d3a98cc548be1ce4c4303d97 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Tue, 29 Sep 2026 04:30:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(t7):=20=E7=BB=93=E7=AE=97=E9=9D=A2?= =?UTF-8?q?=E4=B8=A4=E4=BB=B6=E2=80=94=E2=80=94=E7=BB=88=E5=B1=80=E5=9B=9E?= =?UTF-8?q?=E7=9C=8B=E8=B5=B0=E6=A8=A1=E6=80=81=E6=A0=88=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20z=20=E5=BA=8F=E5=8E=8B=E6=AD=BB+=E5=86=92=E9=99=A9=E7=BB=88?= =?UTF-8?q?=E5=B1=80=E9=9D=A2=E6=9D=BF=20GP=20=E8=A1=8C=20=E2=91=A0?= =?UTF-8?q?=E5=8D=A1=E2=91=A8:=5Fon=5Fend=5Freview/=5Fopen=5Freview=5Ffrom?= =?UTF-8?q?=5Fband=20=E6=94=B9=20open=20=E5=90=8E=E8=B5=B0=20=5Fopen=5Fmod?= =?UTF-8?q?al(=E6=A8=A1=E6=80=81=E6=A0=88=E6=98=BE=E5=BC=8F=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E4=B8=8A=E6=96=B9=E5=8F=AF=E8=A7=81=E9=81=AE=E6=8C=A1?= =?UTF-8?q?=E2=80=94=E2=80=94=E4=BF=AE=E5=A4=8D=E5=9B=9E=E7=9C=8B=E5=B1=82?= =?UTF-8?q?=E8=A2=AB=E7=BB=88=E5=B1=80=E5=B1=82=E5=85=A8=E5=B1=8F=20STOP?= =?UTF-8?q?=20=E9=81=AE=E7=BD=A9=E5=8E=8B=E6=AD=BB;=E5=87=80=E7=A9=BA?= =?UTF-8?q?=E6=80=81=E8=A1=8C=E4=B8=BA=E4=B8=8E=E6=97=A7=E7=9B=B4=E5=BC=80?= =?UTF-8?q?=E9=80=90=E4=BD=8D=E7=AD=89=E4=BB=B7;=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E4=BE=A7=E6=97=A2=E6=9C=89=20closed=E2=86=92=5Fon=5Fmodal=5Fcl?= =?UTF-8?q?osed=20=E9=80=9A=E8=B7=AF=E4=B8=8D=E5=8A=A8)=20=E2=91=A1?= =?UTF-8?q?=E5=8D=A1=E2=91=A9:GP=20=E5=86=92=E9=99=A9=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E5=91=88=E7=8E=B0=E4=BE=A7=E5=BD=B1=E5=AD=90=E8=B4=A6(=5Fadven?= =?UTF-8?q?ture=5Fgp=5Fview/final,=5Fwallet=5Fchanged=20gain/buy=20?= =?UTF-8?q?=E8=BD=BD=E8=8D=B7=3D=E5=85=A5=E8=B4=A6=E5=90=8E=E6=80=BB?= =?UTF-8?q?=E9=A2=9D,clear=20=E6=8B=8D=E8=BD=AC=E5=AD=98)=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=86=92=E9=99=A9=E7=BB=88=E5=B1=80=E8=83=9C=E5=88=A9?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E8=A1=A5=E3=80=8C=E6=9C=AC=E5=B1=80=20GP=20?= =?UTF-8?q?=E5=85=A5=E8=B4=A6=20=C2=B7=20=E5=90=88=E8=AE=A1=20N=E3=80=8D?= =?UTF-8?q?=E8=A1=8C,=E6=94=B6=E6=9D=9F=E6=B8=85=E9=9B=B6=E5=89=8D?= =?UTF-8?q?=E5=8F=96=E5=80=BC=E7=BA=AF=E5=91=88=E7=8E=B0=E9=9B=B6=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E8=A7=A6=E7=A2=B0(C1=20=E5=91=88=E7=8E=B0=E5=B1=82?= =?UTF-8?q?=E6=96=B9=E6=A1=88;C5:GP=20=E8=A1=8C=E5=8F=AA=E4=B8=8A=E5=86=92?= =?UTF-8?q?=E9=99=A9=E7=BB=88=E5=B1=80=E9=9D=A2=E6=9D=BF,=E6=88=98?= =?UTF-8?q?=E6=96=97=20HUD=20=E4=B8=8D=E5=9B=9E=E5=8A=A0;=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E4=BE=A7=E7=BB=B4=E6=8C=81=20OQ14=20=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E4=B8=8D=E5=91=88=E7=8E=B0)=20=E2=91=A2ui=5Fclick=5Fp?= =?UTF-8?q?robe=20=E5=A2=9E=E2=91=A1b=20=E7=BB=88=E5=B1=80=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E5=9B=9E=E7=9C=8B=E6=96=AD=E8=A8=80(=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E4=BF=A1=E5=8F=B7=E8=B7=AF=E5=BE=84:=E5=BC=80?= =?UTF-8?q?=E7=BB=88=E5=B1=80=E2=86=92review=5Fpressed=E2=86=92=E5=9B=9E?= =?UTF-8?q?=E7=9C=8B=E5=BC=80+=E7=BB=88=E5=B1=80=E5=B1=82=E8=A2=AB?= =?UTF-8?q?=E6=A0=88=E9=9A=90=E8=97=8F=E2=86=92=E5=85=B3=E9=97=AD=E6=81=A2?= =?UTF-8?q?=E5=A4=8D);ui=5Fprobe=20=E5=A2=9E=20GP=20=E5=BD=B1=E5=AD=90?= =?UTF-8?q?=E8=B4=A6=E8=BD=AC=E5=AD=98+=E7=BB=88=E5=B1=80=E8=A1=8C?= =?UTF-8?q?=E5=91=88=E7=8E=B0=E6=96=AD=E8=A8=80(=E5=90=88=E6=88=90?= =?UTF-8?q?=E6=94=B6=E6=9D=9F=E6=9C=9F=20meta=20=E7=BD=AE=E7=A9=BA?= =?UTF-8?q?=E9=98=B2=E9=9A=94=E7=A6=BB=E6=A1=A3=E8=B7=A8=E8=B7=91=E8=87=AA?= =?UTF-8?q?=E6=B1=A1=E6=9F=93)=20=E8=BD=BB=E9=97=B8=3D=E5=86=92=E7=83=9F?= =?UTF-8?q?=20576/0+=E4=BA=94=E6=8E=A2=E9=92=88=E5=85=A8=20PASS(input/clic?= =?UTF-8?q?k/layout=20=E6=9C=AC=E5=8D=A1=E5=8A=A0=E8=B7=91);=E8=B8=A9?= =?UTF-8?q?=E5=9D=91=E4=B8=80=E6=AC=A1=3D=E5=90=88=E6=88=90=20settle=20?= =?UTF-8?q?=E5=86=99=E9=9A=94=E7=A6=BB=E6=A1=A3=E8=87=B4=20camp=20?= =?UTF-8?q?=E9=9B=B6=E4=BD=99=E9=A2=9D=E6=96=AD=E8=A8=80=E8=B7=A8=E8=B7=91?= =?UTF-8?q?=E5=A4=B1=E5=AE=88,=E5=B7=B2=E4=BF=AE(meta=20=E7=BD=AE=E7=A9=BA?= =?UTF-8?q?)+=E6=B8=85=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/presentation/main.gd | 15 ++++++++++++++- game/smoke/ui_click_probe.gd | 17 +++++++++++++++++ game/smoke/ui_probe.gd | 18 ++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) 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,