refactor(iter37③): boardview 拆件——瓦片调色板/英雄精灵两族出根(行为等价,golden 逐像素零变)
r2-1 瓦片族(排版+素材装载+墨族判据+查表)→ views/tile_palette.gd; r2-2 英雄族(贴图/位移/影/朝向/缩放几何)→ views/hero_sprite.gd(Node2D); r2-3 board_view 改引+直引面换指(terrain_tile_sets_test/ui_contrast_probe), 探针与 main 的组合根直读面经转发属性/常量别名保持零改动。 S13 计数守恒:基线含类变量数/公有方法数两条计数型键,故 board_view 用 13 个转发属性 +2 个组件引用压回原计数(45 变量/27 公有方法);baselined 的 wall_tile_for/ wall_center_tile/digit_ink_mode 以查表/辅助函数重构压回阈值内(非改名保违例), 旧文件级键随函数迁出自然失效——基线文件零改动(用户令:只改代码不改基线)。 验收:terrain_tile_sets_test 19 检查绿(判据读数与迁移前同值);gdstyle 基线外新违规 0; S9/S10 绿;probe_gate --click 全绿(含 ui_input_probe 十八断言/click 走查 0 问题); render_gate 棋盘三图+菜单 golden changed=0.00%;撤销证明:测试改引回退旧址符号 → SCRIPT ERROR(Parse Error: Static function "_normalize_floor_luma()" not found)+ error_scan exit 1,还原后 19 检查复绿、error_scan exit 0。
This commit is contained in:
1 parent
c99c23fba3
commit
5c9c5f8083
9 files changed
+511
-378
No files matched your search
@@ -8,7 +8,7 @@
|
||||
extends SceneTree
|
||||
|
||||
const ConfigDBScript := preload("res://core/config_db.gd")
|
||||
const BoardViewScript := preload("res://presentation/views/board_view.gd")
|
||||
const TilePaletteScript := preload("res://presentation/views/tile_palette.gd")
|
||||
const Kit := preload("res://tests/unit/test_kit.gd") # T6 收口:_check/汇总退出样板单点
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ func _init() -> void:
|
||||
# 套完整性:词表每个 board_type 的 16 墙 + 5 地面变体全部在盘(缺位 → BoardView 整批回落 dungeon 的
|
||||
# 缺位回退断言由 ui_input_probe 覆盖;本断言管「入包完整」面)
|
||||
func _test_set_completeness(board_dir: String, types: Array) -> void:
|
||||
var wall_names: Array = BoardViewScript.TILE_WALL_NAMES
|
||||
var variants: int = int(BoardViewScript.TILE_FLOOR_VARIANTS)
|
||||
var wall_names: Array = TilePaletteScript.TILE_WALL_NAMES
|
||||
var variants: int = int(TilePaletteScript.TILE_FLOOR_VARIANTS)
|
||||
for bt in types:
|
||||
var missing: Array = []
|
||||
for w in wall_names:
|
||||
@@ -119,10 +119,10 @@ func _load_stats(board_dir: String, fname: String, top_half: bool) -> Dictionary
|
||||
# 每个图型走 BoardView 同一归一+测光+选模式管线(禁测试侧另写算法),断言:
|
||||
# ①dungeon=亮墨族直画(对 p90 ≥4.5 且对均值 ≥2.5);②underdark/deep_underdark=色牌垫底
|
||||
# (双峰纹理直画不可救——渲染帧取证深墨隐形实证,牌上深墨 12:1);③直画模式的双门槛值照抄
|
||||
# BoardView 判据常量(防判据漂移)
|
||||
# TilePalette 判据常量(防判据漂移)
|
||||
func _test_digit_ink_modes(board_dir: String, types: Array) -> void:
|
||||
var expect_plate := {"dungeon": false, "underdark": true, "deep_underdark": true}
|
||||
var variants: int = int(BoardViewScript.TILE_FLOOR_VARIANTS)
|
||||
var variants: int = int(TilePaletteScript.TILE_FLOOR_VARIANTS)
|
||||
for bt in types:
|
||||
var lumas: Array = []
|
||||
var readable := true
|
||||
@@ -132,11 +132,11 @@ func _test_digit_ink_modes(board_dir: String, types: Array) -> void:
|
||||
readable = false
|
||||
break
|
||||
var tex: Texture2D = ImageTexture.create_from_image(Image.load_from_file(p))
|
||||
BoardViewScript._normalize_floor_luma(tex, 0.10, lumas)
|
||||
TilePaletteScript.normalize_floor_luma(tex, 0.10, lumas)
|
||||
if not readable:
|
||||
Kit.check("图型 %s 数字墨族断言样本可读" % String(bt), false)
|
||||
continue
|
||||
var mode: Dictionary = BoardViewScript._digit_ink_mode(lumas)
|
||||
var mode: Dictionary = TilePaletteScript.digit_ink_mode(lumas)
|
||||
var plate: bool = bool(mode["plate"])
|
||||
var dark: bool = bool(mode["dark"])
|
||||
var mode_name := "色牌垫底" if plate else ("深墨族直画" if dark else "亮墨族直画")
|
||||
@@ -144,14 +144,14 @@ func _test_digit_ink_modes(board_dir: String, types: Array) -> void:
|
||||
Kit.check("图型 %s 双峰纹理落牌(亮族 p90 %.2f/均值 %.2f,深族 p90 %.2f/均值 %.2f 均未过门)" % [
|
||||
String(bt), float(mode["cr_p90_bright"]), float(mode["cr_mean_bright"]),
|
||||
float(mode["cr_p90_dark"]), float(mode["cr_mean_dark"])],
|
||||
float(mode["cr_mean_dark"]) < float(BoardViewScript.DIGIT_INK_CR_MEAN_DARK))
|
||||
float(mode["cr_mean_dark"]) < float(TilePaletteScript.DIGIT_INK_CR_MEAN_DARK))
|
||||
else:
|
||||
var cr_p90 := float(mode["cr_p90_bright"]) if not dark else float(mode["cr_p90_dark"])
|
||||
var cr_mean := float(mode["cr_mean_bright"]) if not dark else float(mode["cr_mean_dark"])
|
||||
Kit.check("图型 %s 所选%s 对 p90 ≥%.1f(实测 %.2f)" % [String(bt), mode_name,
|
||||
float(BoardViewScript.DIGIT_INK_CR_P90), cr_p90],
|
||||
cr_p90 >= float(BoardViewScript.DIGIT_INK_CR_P90))
|
||||
var mean_gate := float(BoardViewScript.DIGIT_INK_CR_MEAN_BRIGHT) if not dark else float(BoardViewScript.DIGIT_INK_CR_MEAN_DARK)
|
||||
float(TilePaletteScript.DIGIT_INK_CR_P90), cr_p90],
|
||||
cr_p90 >= float(TilePaletteScript.DIGIT_INK_CR_P90))
|
||||
var mean_gate := float(TilePaletteScript.DIGIT_INK_CR_MEAN_BRIGHT) if not dark else float(TilePaletteScript.DIGIT_INK_CR_MEAN_DARK)
|
||||
Kit.check("图型 %s 所选%s 对均值 ≥%.1f(实测 %.2f)" % [String(bt), mode_name, mean_gate, cr_mean],
|
||||
cr_mean >= mean_gate)
|
||||
if expect_plate.has(bt):
|
||||
|
||||
Reference in new issue
Block a user