修红(调试角标恢复批后续·CI run 152 真红闭合): ui_struct_probe ESC批 V8 恒隐断言翻回——恢复批(5c9d8845)翻了三处恒隐断言,本处漏网第四处(「浮窗开态 debug_badge 不可见」预期随发布态恒隐语义退役而过期),按恢复批同口径翻回「浮窗开态角标不可见=全局浮层最顶层失守」;本文件判据出处注记行随内容锚改版批同批内容化。区内凭据: ui_struct_probe 直跑 exit 0(真实跑批读数,探针退出码为唯一权威判据)
This commit is contained in:
1 parent
a69310b738
commit
9fc12f791e
1 file changed
+15
-13
@@ -89,7 +89,7 @@ func _ready() -> void:
|
||||
# ---- 生涯页:入口=帐篷旁笔记本(卡④ T3 改挂——场景点选信号真实路由→组合根 _open_career)→
|
||||
# 结构断言族→只读巡检(契约 3)+零动效契约+零跳转契约(提纲 P4 甲)→组合根真实路径关闭。
|
||||
#(登记序/树序契约统一在全模态 _modal_registry_contract——boot 段跑)----
|
||||
# 判据出处: design/ux/camp.md:19 帐篷旁笔记本→生涯记录;生涯页返回钮口径由结构校验兜底(生涯段)
|
||||
# 判据出处: design/ux/camp.md「场景构成与七物件绑定」半开的门扇 半开的门扇;生涯页返回钮口径由结构校验兜底(生涯段)
|
||||
# 营地语境:开始层全程隐藏(笔记本入口在营地场景根——关生涯回营地不回开始层,卡④ T3 语境分支)
|
||||
main._camp_pres.open_camp() # 重开营地场景根(笔记本入口语境)
|
||||
_settle()
|
||||
@@ -106,7 +106,7 @@ func _ready() -> void:
|
||||
if main.ui.modals.menu.career_overlay.visible or main.ui.screens.start_overlay.visible:
|
||||
problems.append("[career] 关闭后页未隐藏或开始层回弹(营地语境分支失守)〔营地图批 V5〕")
|
||||
# ---- Esc 浮窗结构段(卡⑤——三钮在位且仅三+零动效契约+登记序在册+debug_badge 不波及)----
|
||||
# 判据出处: design/ux/camp.md:45 ESC 优先序:有窗先关最上层窗、无窗才进浮窗;各窗自带关闭钮(Esc 段)
|
||||
# 判据出处: design/ux/camp.md「叠层与开合」各窗自带关闭钮 各窗自带关闭钮、无窗才进浮窗;各窗自带关闭钮(Esc 段)
|
||||
main._camp_pres.open_camp()
|
||||
_settle()
|
||||
var gpos_gate: Vector2 = main.ui.modals.camp.scene.get_hotspot_rect(&"gate").get_center()
|
||||
@@ -159,8 +159,10 @@ func _ready() -> void:
|
||||
var quit_chain := FileAccess.get_file_as_string("res://presentation/main.gd") + FileAccess.get_file_as_string("res://presentation/main_esc_flow.gd")
|
||||
if not quit_chain.contains("MainEscFlow.on_quit(self)") or not quit_chain.contains("root.quit_game()"):
|
||||
problems.append("[esc] 退出调用链断裂(_on_esc_quit→_on_quit→_quit_game)〔ESC批 V5〕")
|
||||
if main.ui.screens.debug_badge.visible:
|
||||
problems.append("[esc] 浮窗开态 debug_badge 可见(发布态恒隐——float 类不注册 ModalStack 应零波及)〔ESC批 V8〕")
|
||||
# 调试入口断言(V8 随恢复批换代——全局浮层角标=UI 最顶层、任何 UI 不遮挡,浮窗开态仍应可见;
|
||||
# 2026-11-09 特批恢复批——发布态恒隐语义退役,原「浮窗开态不可见」预期过期漏翻,CI run 152 红实证)
|
||||
if main.ui.screens.debug_badge == null or not main.ui.screens.debug_badge.visible:
|
||||
problems.append("[esc] 浮窗开态调试角标不可见(全局浮层最顶层失守——被遮挡)〔ESC批 V8〕")
|
||||
push_esc.call()
|
||||
_settle()
|
||||
if main.ui.modals.camp.esc_overlay.visible:
|
||||
@@ -213,7 +215,7 @@ func _ready() -> void:
|
||||
_settle()
|
||||
|
||||
# ---- 冒险簇(真流推进:开冒险→地图选路态→选战斗节点→战斗 HUD)----
|
||||
# 判据出处: design/ux/level-map.md:3 图上点击选路·候选按钮退役(冒险簇选路真点组)
|
||||
# 判据出处: design/ux/level-map.md「UX Spec: 关卡画面」四项设计拍板 四项设计拍板(冒险簇选路真点组)
|
||||
ProbeUiUtil.isolate_save(main, "smoke_ui_struct_probe_adv", true, false, true)
|
||||
main.ui.modals.menu.debug_overlay.seed_edit.text = "42" # 种子钉死(种子框默认为空=非首局随机,结构采样确定性禁依赖默认分支)
|
||||
main._start_adventure_from_menu()
|
||||
@@ -243,7 +245,7 @@ func _ready() -> void:
|
||||
# ---- 图例层(旧模态、首过结构族):ap_bar legend_toggled
|
||||
# 信号真路径开(board_zone 信号→组合根 _on_legend_toggled→_open_modal)→结构断言族→
|
||||
# closed 信号真路径关(close()→组合根 _on_modal_closed)。
|
||||
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md:88 图例面板=模态族:统一登记序栈、入栈出栈、关闭逐层恢复(图例组)
|
||||
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md「提示与弹层:轻提示随起随消、重弹层排队进出」入栈出栈 入栈出栈、入栈出栈、关闭逐层恢复(图例组)
|
||||
main.ui.battle.board_zone.ap_bar._btn_legend.pressed.emit() # 前提注入(保留 emit):emit 选路路径下 battle_root 未及显示且输入锁在(实证在案),真点不可达——图例开启的真输入承载随「route 信号路径屏幕切换时序」发现一并呈报待裁
|
||||
_settle()
|
||||
if not main.ui.modals.run.legend_overlay.visible:
|
||||
@@ -406,7 +408,7 @@ const _PAUSE_READONLY_SIGNALS: Array[String] = [
|
||||
|
||||
|
||||
func _status_readonly_contract(main: Node) -> void:
|
||||
# 判据出处: design/engineering/code-conventions.md:21 视图零核心写调用、依赖单向(status 只读巡检组)
|
||||
# 判据出处: design/engineering/code-conventions.md「1.3 依赖单向,核心写调用完成」依赖单向 依赖单向、依赖单向(status 只读巡检组)
|
||||
var overlay: Control = main.ui.modals.run.status_panel
|
||||
var stack: Array = [overlay]
|
||||
var conn_count := 0
|
||||
@@ -453,7 +455,7 @@ func _status_zero_motion_contract(main: Node) -> void:
|
||||
# 清单外零连接。白名单={视图自身 _emit_closed〔返回钮〕, 组合根 _on_career_closed};页内任何
|
||||
# 购买/导航/写入方向的新连接一律红,须先入册审查。
|
||||
func _career_readonly_contract(main: Node) -> void:
|
||||
# 判据出处: design/engineering/code-conventions.md:21 视图零核心写调用、依赖单向(career 只读巡检组)
|
||||
# 判据出处: design/engineering/code-conventions.md「1.3 依赖单向,核心写调用完成」依赖单向 依赖单向、依赖单向(career 只读巡检组)
|
||||
var overlay: Control = main.ui.modals.menu.career_overlay
|
||||
var stack: Array = [overlay]
|
||||
var conn_count := 0
|
||||
@@ -500,7 +502,7 @@ func _career_zero_motion_contract(main: Node) -> void:
|
||||
# _career_registry_contract 的断言(career=状态面板后/确认弹窗前、树序同步)由本全量合同覆盖)
|
||||
# ⑭选档界面契约(卡③ sl1/sl2/sl3/sl4/sl9——呈现面全部来自喂入数据,视图零自判)
|
||||
func _save_select_contract(main: Node, tpl: String) -> void:
|
||||
# 判据出处: design/gdd/systems/表现与支撑/存档序列化.md:61 三存档位独立文件、激活态由选档界面建立(选档契约组)
|
||||
# 判据出处: design/gdd/systems/表现与支撑/存档序列化.md「存什么:表与档分家,局内系统资源不入档」第一条边界 第一条边界、激活态由选档界面建立(选档契约组)
|
||||
var sso: Node = main.ui.modals.menu.save_select_overlay
|
||||
# sl1 三槽呈现:槽卡计数==3+零滚动容器(禁滚动长列表形态——契约 1)
|
||||
var rows: VBoxContainer = sso._rows_box
|
||||
@@ -580,7 +582,7 @@ func _collect_labels(node: Node, out: Array[String]) -> void:
|
||||
|
||||
|
||||
func _modal_registry_contract(main: Node) -> void:
|
||||
# 判据出处: design/engineering/code-conventions.md:54 模态覆盖层层级规则——新增覆盖层必须登记 z 序位置(登记序契约组)
|
||||
# 判据出处: design/engineering/code-conventions.md「2.3 模态覆盖层层级规则」打开任何模态覆盖层时 打开任何模态覆盖层时(登记序契约组)
|
||||
var list: Array = main.ui.flow.stack._list
|
||||
# ① 登记册序==合同模态序(逐位点名——合同是登记序唯一事实源)
|
||||
var contract_modals: Array = []
|
||||
@@ -648,7 +650,7 @@ func _modal_registry_contract(main: Node) -> void:
|
||||
|
||||
# ⑬career 零跳转契约(提纲 P4 甲——页内零「前往他处」入口:除「返回」外任何导航钮=红)
|
||||
func _career_nojump_contract(main: Node) -> void:
|
||||
# 判据出处: design/ux/camp.md:19 生涯记录入口与返回钮口径由结构校验兜底——页内零导航入口(零跳转契约组)
|
||||
# 判据出处: design/ux/camp.md「场景构成与七物件绑定」半开的门扇 半开的门扇(零跳转契约组)
|
||||
for nav in ["营地", "商店", "设置", "冒险", "继续上局", "退出", "前往"]:
|
||||
if ProbeUiUtil.find_button(main.ui.modals.menu.career_overlay, nav, "contains") != null:
|
||||
problems.append("[career][nojump] 页内出现导航入口「%s」(零跳转违约——生涯纯只读)" % nav)
|
||||
@@ -658,7 +660,7 @@ func _career_nojump_contract(main: Node) -> void:
|
||||
# (名行基线离盒底 1px 同型高危写法返修回归闸;
|
||||
# 内容矩形=StandeeBody.content_rect(),最低绘制元素=底座下缘)
|
||||
func _standeefit_contract(main: Node) -> void:
|
||||
# 判据出处: design/ux/battle.md:154 主角站桩立绘(无框立绘+落影)——站桩内容矩形⊆舞台(站桩适配组)
|
||||
# 判据出处: design/ux/battle.md「封印格呈现预览」封印受理后格子进入 封印受理后格子进入(无框立绘+落影)——站桩内容矩形⊆舞台(站桩适配组)
|
||||
var st: Node = main.ui.battle.stage
|
||||
if st == null or st.hero_standee == null:
|
||||
problems.append("[standee] 舞台/主角站桩缺失(断言中断)")
|
||||
@@ -743,7 +745,7 @@ func _in_scroll(c: Control) -> bool:
|
||||
|
||||
|
||||
func _audit(screen: String, roots: Array) -> void:
|
||||
# 判据出处: design/engineering/architecture/architecture.md「三屏壳与组合根」(组合根交接面) 组合根交接面与呈现装配——屏结构审计宿主面(结构审计组)
|
||||
# 判据出处: design/engineering/architecture/architecture.md「三屏壳与组合根」呈现场景拆为三屏壳 呈现场景拆为三屏壳(组合根交接面) 组合根交接面与呈现装配——屏结构审计宿主面(结构审计组)
|
||||
for r in roots:
|
||||
if r != null and is_instance_valid(r):
|
||||
_force_layout(r)
|
||||
|
||||
Reference in new issue
Block a user