合并(营地场景重排接线批): 落表——十层新矩形(围墙 (0,220,1280,200)、大门 240×138 底压墙底 (520,282)、告示板 (845,241)、其余六件按 2026-11-05 裁定)+围墙件换代(1280×164 补尖+墙脚入土, 12 色零新增)+视图 expand_mode 修(门扇 138 高矩形生效)+单测 5 条钉值断言+设计文档三件(camp-scene-prompts v1.9/art-bible v3.48/camp.md)+需求卡片成立(两轮独立复核 24 发现全处置)+实现报告/反哺点两件;待办条目随实现完成整条删除。凭据: 营地单测 exit=0、冒烟 PASS、ui_struct_probe PASS、色板零新增、path_check 0、流水线闸 PASS;冲突续提交路径钩子不触发——前置检查手动补跑、推送手动补做(本仓在册坑)
ci / gates (push) Failing after 8m2s
ci / gates (push) Failing after 8m2s
This commit is contained in:
commit
5f233bac9a
11 files changed
+237
-35
No files matched your search
@@ -2,7 +2,7 @@ extends SceneTree
|
||||
# 营地场景布局数据件校验套件(V14——camp_scene_layout.tres 加载期 fail-fast 判据+七命中区几何红线机检)
|
||||
# 覆盖:校验函数通过(键唯一/贴图在画布/命中成对/围墙带包络)· 七可点件键集 · 两两不相交 ·
|
||||
# 不越画面 · 不侵顶栏禁区 · 篝火命中只取下半(关系谓词)· 门扇对齐门洞缺口 · 布告板挂围墙带。
|
||||
# 断言全部为表内关系谓词——禁坐标字面量(数值单一事实源 = 数据行本表)。
|
||||
# 断言以表内关系谓词为主;2026-11-07 重排追加十层钉值断言(钉值出处见各断言前 oracle 注)。
|
||||
# 运行:godot --headless --path game --script res://tests/unit/presentation/camp_scene_layout_test.gd(expect 0)
|
||||
const Kit := preload("res://tests/unit/test_kit.gd")
|
||||
|
||||
@@ -85,6 +85,32 @@ func _test_layout_hotspot_geometry() -> void:
|
||||
and board.hotspot.position.y >= wall.texture_rect.position.y \
|
||||
and board.hotspot.position.y <= wall.texture_rect.end.y
|
||||
Kit.check("V14 布告板命中挂围墙带〔营地图批 V14〕", board_ok)
|
||||
# oracle: design/art/camp-scene-prompts.md:250 (2026-11-07 围墙/门/板钉值,§5 第 12 条)
|
||||
Kit.check("V14 围墙矩形钉值 (0,220,1280,200)〔营地图批 V14〕",
|
||||
wall != null and wall.texture_rect == Rect2(0, 220, 1280, 200))
|
||||
Kit.check("V14 门扇矩形钉值 (520,282,240,138)〔营地图批 V14〕",
|
||||
gate != null and gate.texture_rect == Rect2(520, 282, 240, 138))
|
||||
Kit.check("V14 告示板矩形钉值 (845,241,130,121)〔营地图批 V14〕",
|
||||
board != null and board.texture_rect == Rect2(845, 241, 130, 121))
|
||||
Kit.check("V14 围墙带钉值 (0,220,1280,200)〔营地图批 V14〕",
|
||||
table.wall_band == Rect2(0, 220, 1280, 200))
|
||||
# oracle: design/art/camp-scene-prompts.md:244 (其余七件落位:帐篷:242/笔记本:243/宝箱与其余上移:244)
|
||||
var seven_ok := true
|
||||
var seven_bad := ""
|
||||
for spec in table.layers:
|
||||
var want: Rect2
|
||||
match String(spec.key):
|
||||
"dummy": want = Rect2(340, 474, 120, 180)
|
||||
"forge": want = Rect2(40, 421, 240, 193)
|
||||
"tent": want = Rect2(982, 335, 251, 170)
|
||||
"chest": want = Rect2(1097, 654, 106, 90)
|
||||
"notebook": want = Rect2(870, 515, 100, 66)
|
||||
"campfire": want = Rect2(560, 525, 160, 149)
|
||||
_: continue
|
||||
if spec.texture_rect != want:
|
||||
seven_ok = false
|
||||
seven_bad = "%s %s" % [spec.key, spec.texture_rect]
|
||||
Kit.check("V14 六件落位钉值(违例 %s)〔营地图批 V14〕" % seven_bad, seven_ok)
|
||||
# 层序结构:10 层且 bg/wall 压前两位(z0/z1——子节点序=表序先验)
|
||||
var order_ok := table.layers.size() == 10 \
|
||||
and String(table.layers[0].key) == "bg" and String(table.layers[1].key) == "wall"
|
||||
|
||||
Reference in new issue
Block a user