工程(判据出处注记4/7·presentation+剩余探针+system/smoke/example): 21套件+11探针+3宿主逐函数/逐段挂# oracle注记——HUD框架:260-282拒绝三源/明细行/状态槽/微光/三区几何/对比度+camp.md:16/29/45+level-map:3/11+level-clear+node-reward+设置与本地化:95+锻造工坊窗口内容+battle.md:122/128/154+战斗表现:148+test-conventions:30/37/84+code-conventions:41/54+architecture:168+README术语表; tune_sim_batch_parity(调参测量域)零规格句不造锚——记规格缺口待裁; 本步凭据: 抽验4套件+5探针+system_test+ui_click直跑全绿

This commit is contained in:
DKChan committed 2026-11-06 07:31:03 +08:00
1 parent 9e26df16be
commit 085717166d
32 files changed
+97 -2

No files matched your search

+8 -2
View File
@@ -54,6 +54,7 @@ func _ready() -> void:
if main.ui.modals.menu.debug_overlay.visible:
_problems.append("调试浮窗 boot 自动开(菜单优先失守)")
# ---- 营地购买合成点击路径(选档进档开层→购买→关闭全走真实按钮信号路径;
# oracle: design/gdd/systems/跨局循环/天赋树.md:198(营地购买段——单币购买只扣钥石组)
# 隔离存档换注 main.meta 保确定性(禁碰真实档 user://save.json);陈旧档段首清理)----
for p0 in ["user://smoke_click_probe_reset.json", "user://smoke_click_probe_reset.json.tmp"]:
if FileAccess.file_exists(p0):
@@ -191,6 +192,7 @@ func _ready() -> void:
if main.ui.modals.camp.scene.visible or not main.ui.screens.start_overlay.visible:
_problems.append("营地关闭后未恢复开始层〔句柄子容器批 V1〕")
# ---- 选档界面行为走查(迭代 33 卡③):sl5 空槽新档链/sl6 有档槽进档链/sl7 删档二次确认双路径
# oracle: design/gdd/systems/表现与支撑/存档序列化.md:61(选档走查段——激活态建立组)
# /sl8 消费方分派单口/sl12 动线序不回闪。开层=函数直调(「进入存档」钮归卡② mn3——中间态在案);
# 隔离=attach_slot_template 注入命名空间,夹具按槽直写(卡① 注入口)。----
var csel_tpl := "user://smoke_click_probe_savesel_slot_%d.json"
@@ -294,6 +296,7 @@ func _ready() -> void:
_problems.append("[savesel] 关闭后层未隐藏或开始层未恢复(模态栈单口失守)")
# ---- 设置面段(隔离 store 换注禁碰真实 user://settings.cfg;真实按钮信号路径)----
# oracle: design/gdd/systems/表现与支撑/设置与本地化.md:4(设置面段——最小设置面组)
for p0 in ["user://smoke_click_probe_settings.cfg"]:
if FileAccess.file_exists(p0):
DirAccess.remove_absolute(p0)
@@ -360,6 +363,7 @@ func _ready() -> void:
if ProbeUiUtil.find_button(main.ui.modals.menu.settings_overlay, "退出游戏", "prefix") != null:
_problems.append("设置面仍含退出游戏按钮(二轮 D1——只在一级菜单出现)")
# ---- 生涯页段(入口点击链+关闭回返,真实按钮信号路径;本页只读零写,
# oracle: design/gdd/ux/camp.md:45(生涯页段——同壳同形态组)
# 值断言归冒烟投影段与 ui_struct 结构族,此处只验开合路径与零跳转)----
# 生涯页驱动=函数直调中间态(卡② mn10——careerbtn 已撤,卡④ 笔记本改挂前无 UI 路径)
if true:
@@ -604,7 +608,7 @@ func _ready() -> void:
_run_modal_probes_once()
_play_one_action()
# ---- 预算耗尽收口(T17 硬锁批适配):选件变强后 probe 可能活过预算不再战败——断点段前提
# (冒险终局面在案)须主动满足。收口驱动:任何停点层逐个推进(复用主循环分支语义)至
# oracle: design/gdd/ux/level-map.md:11(主循环选路段——入口候选组) # (冒险终局面在案)须主动满足。收口驱动:任何停点层逐个推进(复用主循环分支语义)至
# level_screen 选路停点→真实放弃二击→终局面。战斗中则继续 autoplay 打完。
if not _done and not main.ui.modals.run.end_overlay.is_open():
var close_guard := 8000
@@ -649,7 +653,7 @@ func _ready() -> void:
_play_one_action()
# 排播期/Waiting 等待态=自然流逝(演播秒级、锁随队列空解除)
# T17 适配:战败或放弃二途皆达终局面(放弃=预算耗尽收口路径——见上),断点段前提不变。
await get_tree().process_frame
# oracle: design/gdd/systems/表现与支撑/存档序列化.md:180(断点段——断点域与续玩组) await get_tree().process_frame
var bp_file := "user://smoke_click_probe_reset.json"
var iso_chk = load("res://core/save_manager.gd").new(bp_file)
iso_chk.load_from_disk()
@@ -680,6 +684,7 @@ func _ready() -> void:
# ① 战斗收口断点写盘断言保留(上方——冒险流直调中间态 mn10)。
# ---- 大门两分支断言段(卡④ T5 接收——卡② 移交落点;V3 断言面)----
# oracle: design/gdd/ux/camp.md:16(大门段——点大门先出确认组)
# 驱动=营地场景根点选信号(真实路由)→组合根 _on_camp_object_pressed→确认弹窗。
# 无断点=两出口(是/否);有断点=三出口(set_breakpoint 注入选路停点形——同下方开场行③先例)。
# 判据绑可观测提交面:点大门不直接进冒险(is_adventure 翻转只在 confirmed 后);cancelled 恒=
@@ -1046,6 +1051,7 @@ func _click_stop() -> void:
# ---- T1 D1:锁期/重放断言(每 run 一次,脚本化场景——演播期豁免的断言化承载) ----
# oracle: design/gdd/systems/排雷循环/排雷玩法.md:236(锁期/重放段——拒绝与锁组)
# 锁期断言(排播队列活跃=锁面):注入封印击 → 直落被冻结不受理(封印未置)+ `_locked_click`
# 缓存命中且为本注入(「最后一次」语义——注入帧内无并发点击)。
# 重放断言(演播完边沿 pump_ended→_replay_locked_click 重入唯一动作通道):缓存清空 +