feat(t7): 结算面两件——终局回看走模态栈修复 z 序压死+冒险终局面板 GP 行

①卡⑨:_on_end_review/_open_review_from_band 改 open 后走 _open_modal(模态栈显式隐藏上方可见遮挡——修复回看层被终局层全屏 STOP 遮罩压死;净空态行为与旧直开逐位等价;关闭侧既有 closed→_on_modal_closed 通路不动)
②卡⑩:GP 冒险钱包呈现侧影子账(_adventure_gp_view/final,_wallet_changed gain/buy 载荷=入账后总额,clear 拍转存)——冒险终局胜利面板补「本局 GP 入账 · 合计 N」行,收束清零前取值纯呈现零核心触碰(C1 呈现层方案;C5:GP 行只上冒险终局面板,战斗 HUD 不回加;失败侧维持 OQ14 口径不呈现)
③ui_click_probe 增②b 终局入口回看断言(真实信号路径:开终局→review_pressed→回看开+终局层被栈隐藏→关闭恢复);ui_probe 增 GP 影子账转存+终局行呈现断言(合成收束期 meta 置空防隔离档跨跑自污染)
轻闸=冒烟 576/0+五探针全 PASS(input/click/layout 本卡加跑);踩坑一次=合成 settle 写隔离档致 camp 零余额断言跨跑失守,已修(meta 置空)+清档
This commit is contained in:
DKChan committed 2026-09-29 04:30:14 +08:00
1 parent 442156bfb7
commit a47c988a2d
3 files changed
+49 -1

No files matched your search

+14 -1
View File
@@ -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:
+17
View File
@@ -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 区站桩
+18
View File
@@ -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,