Files
gplan-2/game/tests/unit/presentation/animation_frame_spec_test.gd
T
DKChan 85abe37cf5 美术圣经去数值化批(用户裁 2026-11-07 两准则: 有落点补指针/无落点建脚本承载): art-bible v3.43→v3.44 全文定值剥离——头注定值单点纪律(数量面唯一事实源=执行件, 例外=WCAG 标准引用名与数据索引)+§8 头注两张表制退役+§4.1 主色板全 hex 清零(语义岗句+ui_kit 指针)+§4.2 五组微光/呈现参数/禁入带+§2 能量档改八拍序(数字退役)+世界底层两子带区间数值迁执行件+§3.2 封印/高墙 px 群+§6.1/6.2 舞台与营地坐标群+§6.5 迷雾定值群+§7.2/7.4/7.6 UI token/字号/控件态+§8.1/8.2/8.4 档位与帧数+换色合并沿革压缩归 git 史+六对欠账迁出; 执行件三件落地——glow_discrimination_sheet 增机检 E 门(世界底层两子带: 背景侧上沿+结构间隔, 地板侧归 tile_palette 归一化目标 0.10 渲染面, --no-sheet 全绿 exit=0)+新套件 animation_frame_spec_test(帧数档 4/6/2 规格表落码+现役单帧形制锚定, 经 UiKit.load_tex 装载链)+新套件 palette_token_pairwise_test(ui_kit Color 常量面两两互查, 存量 36 对在册豁免账含〔欠账〕四对, 账外零新增); run_all manifest 65→86 全量单元位次不变+能力清单帧数行入册+互查套件挂主题行; oracle 锚注记换代六件(seal/type_glow/standee/theme_projection/terrain/ui_contrast_probe——定值面=本测试措辞); art-pipeline-tools 升格执行件门值登记面(14 行定值落点索引)+边界句换代; 下游复写换代七件(术语表/08-Alpha/camp/battle/character-design/两清单); 待办清单去数值化条目推进文档设计已闭合+欠账条目新立。凭据: 圣经 hex 字面量 0+七触碰套件单跑 all green(exit=0)+熵增闸 PASS(--docs 内)+流水线闸 PASS(34 条目)+能力审计红 0(110 行·86 套·链断 0)+doc_term 零命中(销账/随批/收口/若干四词自清扫)+--docs 域闸【验收通过】exit=0
2026-11-07 04:31:39 +08:00

45 lines
2.3 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# tests/unit/presentation/animation_frame_spec_test.gd — 动画帧数规格守门(定值面=本测试)
# 断言面:①帧数规格表冻结(待机循环 4 帧/攻击准备 6 帧单次/受击 2 帧——样张冻结定值落码于本表,
# 文档侧只述规则并指路本测试);②现役四态单帧形制锚定(idle/walk 32×32、attack 92×92、
# hit 88×92——现役为单帧状态件,序列帧资产入包时按规格表逐件判帧数并同批换代本套件);
# ③死亡=灰化+碎裂退场(非帧件,无帧数断言面)。
# 运行:godot --headless --path game --script res://tests/unit/presentation/animation_frame_spec_test.gd
extends SceneTree
const Kit := preload("res://tests/unit/test_kit.gd")
# 帧数规格表(样张冻结值——多帧序列帧资产的生产规格;现役单帧占位件不适用本表)
const SPEC := {"idle": 4, "attack": 6, "hit": 2}
# 现役单帧形制(宽,高)——序列帧资产替换形制时同批修订本表并激活规格逐件断言
const CURRENT_FORM := {
"character_hero_idle.png": Vector2i(32, 32),
"character_hero_walk.png": Vector2i(32, 32),
"character_hero_attack.png": Vector2i(92, 92),
"character_hero_hit.png": Vector2i(88, 92),
}
func _init() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格条——样张冻结定值组)
_test_spec_table()
_test_current_form()
quit(Kit.finish("animation_frame_spec_test"))
# ① 规格表冻结面(帧数档定值单点=本表)
func _test_spec_table() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格表冻结组)
Kit.check("待机循环 4 帧在表〔帧规格 V1〕", SPEC.get("idle", 0) == 4)
Kit.check("攻击准备 6 帧单次在表〔帧规格 V2〕", SPEC.get("attack", 0) == 6)
Kit.check("受击 2 帧在表〔帧规格 V3〕", SPEC.get("hit", 0) == 2)
# ② 现役单帧形制锚定(真实加载链——资产被换形制而未走规格表时此处红)
func _test_current_form() -> void:
# oracle: design/art/art-bible.md:538 (现役单帧形制组)
for fn: String in CURRENT_FORM:
var tex: Texture2D = load("res://assets/art/character/" + fn)
var want := Vector2(CURRENT_FORM[fn])
Kit.check("现役件在库且形制冻结:%s %s〔帧规格 V4〕" % [fn, want],
tex != null and tex.get_size() == want)