结构搬移批(用户裁 2026-11-07): design/gdd/ux 上提为 design/ux——三目录同级(gdd/系统概念·ux/呈现实现规格·art/美术), git mv 八件 ux spec; 出向链接改写 23 链(../systems/→../gdd/systems/ ×17、../../art/→../art/ ×5、体验验证清单 ×1), 入向改写 systems 六件 15 链+art 两件 4 链+08-Alpha 九链, game 侧 20 件 71 行 oracle 注引与头注改路径(纯注释,diff 非注释行=0), reports 两件 14 处锚路径同步(需求卡片-营地交互修复批 13 处+评估-美术资产清单 1 处); 声明面: 02-系统清单 ux 节头注同级化+AGENTS.md 导航行两支改三支+doc-conventions 数值纪律句+test-conventions 先例句+待办清单两处; 熵增闸白名单: RETIRED 摘 design/ux+DESIGN_SUBDIRS 增 ux。凭据: 全仓 gdd/ux 零残留+熵增闸直跑 PASS(design 子目录五支含 ux)+--docs 域闸【验收通过】exit=0 无新增红+触碰八单元套件单跑 all green(8 suites, filtered, exit=0)

This commit is contained in:
DKChan committed 2026-11-07 04:12:49 +08:00
1 parent 5b5e629706
commit 77c1d360f6
49 files changed
+162 -161

No files matched your search

+5 -5
View File
@@ -89,7 +89,7 @@ func _ready() -> void:
# ---- 生涯页:入口=帐篷旁笔记本(卡④ T3 改挂——场景点选信号真实路由→组合根 _open_career)→
# 结构断言族→只读巡检(契约 3)+零动效契约+零跳转契约(提纲 P4 甲)→组合根真实路径关闭。
#(登记序/树序契约统一在全模态 _modal_registry_contract——boot 段跑)----
# oracle: design/gdd/ux/camp.md:19 帐篷旁笔记本→生涯记录;生涯页返回钮口径由结构校验兜底(生涯段)
# oracle: design/ux/camp.md:19 帐篷旁笔记本→生涯记录;生涯页返回钮口径由结构校验兜底(生涯段)
# 营地语境:开始层全程隐藏(笔记本入口在营地场景根——关生涯回营地不回开始层,卡④ 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 不波及)----
# oracle: design/gdd/ux/camp.md:45 ESC 优先序:有窗先关最上层窗、无窗才进浮窗;各窗自带关闭钮(Esc 段)
# oracle: design/ux/camp.md:45 ESC 优先序:有窗先关最上层窗、无窗才进浮窗;各窗自带关闭钮(Esc 段)
main._camp_pres.open_camp()
_settle()
var gpos_gate: Vector2 = main.ui.modals.camp.scene.get_hotspot_rect(&"gate").get_center()
@@ -213,7 +213,7 @@ func _ready() -> void:
_settle()
# ---- 冒险簇(真流推进:开冒险→地图选路态→选战斗节点→战斗 HUD)----
# oracle: design/gdd/ux/level-map.md:3 图上点击选路·候选按钮退役(冒险簇选路真点组)
# oracle: design/ux/level-map.md:3 图上点击选路·候选按钮退役(冒险簇选路真点组)
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()
@@ -648,7 +648,7 @@ func _modal_registry_contract(main: Node) -> void:
# ⑬career 零跳转契约(提纲 P4 甲——页内零「前往他处」入口:除「返回」外任何导航钮=红)
func _career_nojump_contract(main: Node) -> void:
# oracle: design/gdd/ux/camp.md:19 生涯记录入口与返回钮口径由结构校验兜底——页内零导航入口(零跳转契约组)
# oracle: design/ux/camp.md:19 生涯记录入口与返回钮口径由结构校验兜底——页内零导航入口(零跳转契约组)
for nav in ["营地", "商店", "设置", "冒险", "继续上局", "退出", "前往"]:
if ProbeUiUtil.find_button(main.ui.modals.menu.career_overlay, nav, "contains") != null:
problems.append("[career][nojump] 页内出现导航入口「%s」(零跳转违约——生涯纯只读)" % nav)
@@ -658,7 +658,7 @@ func _career_nojump_contract(main: Node) -> void:
# (名行基线离盒底 1px 同型高危写法返修回归闸;
# 内容矩形=StandeeBody.content_rect(),最低绘制元素=底座下缘)
func _standeefit_contract(main: Node) -> void:
# oracle: design/gdd/ux/battle.md:154 主角站桩立绘(无框立绘+落影)——站桩内容矩形⊆舞台(站桩适配组)
# oracle: design/ux/battle.md:154 主角站桩立绘(无框立绘+落影)——站桩内容矩形⊆舞台(站桩适配组)
var st: Node = main.ui.battle.stage
if st == null or st.hero_standee == null:
problems.append("[standee] 舞台/主角站桩缺失(断言中断)")