merge: 呈现层状态断言批——探针十一断言(2026-09-26)
This commit is contained in:
commit
adc72f23bf
1 file changed
+74
-2
@@ -5,7 +5,9 @@
|
||||
# 悬停/点选/chord 既有出口 → 组合根信号。四 case:①悬停可挖域(金框+十字光标)②悬停禁入
|
||||
# (hover_forbidden 信号+灰禁红框)③悬停已开格(路径预览点迹+移动光标)④右键插旗(flag_place
|
||||
# 到达组合根+核心旗态)⑤双击 chord(禁入格双左击,核心拒挖零副作用)⑥左键挖(dig 到达组合根+核心揭格)
|
||||
# ⑦英雄精灵世界落位(棋盘小人贴图批回归闸——SubViewport 世界坐标判据,素材缺位树跳过)。
|
||||
# ⑦英雄精灵世界落位(棋盘小人贴图批回归闸——SubViewport 世界坐标判据,素材缺位树跳过)
|
||||
# ⑧影子构成与贴脚 ⑨右移朝向+到位回站帧+缩放档 ⑩变格边长即时重排 ⑪贴图缺位回退字形
|
||||
#(⑧–⑪=呈现层状态断言批 2026-09-26——Node2D 展示几何/状态面单元化,A 档方案)。
|
||||
# 事件路径:Viewport.push_input(ev, in_local_coords=true)——落点用 BoardView.cell_center_local
|
||||
# (与 _cell_at 同一公式族)换算画布坐标,SubViewportContainer mouse_filter=IGNORE 不拦截。
|
||||
# 运行:Godot_console.exe --headless --path . res://smoke/ui_input_probe.tscn
|
||||
@@ -133,8 +135,78 @@ func _ready() -> void:
|
||||
+ Vector2(bv.cell_size * 0.5, bv.cell_size * (1.0 - bv.HERO_GROUND_FRAC))
|
||||
if bv._world.hero.position.distance_to(expect) > 0.5:
|
||||
_problems.append("case⑦ 英雄精灵世界落位偏移 pos=%s expect=%s" % [str(bv._world.hero.position), str(expect)])
|
||||
# ---- case⑧ 影子构成与贴脚(小人立体感批回归闸 2026-09-26):椭圆影=英雄子件、中心贴脚锚
|
||||
#(上批 (0,2) 下坠脱脚用户报缺陷)、z 相对回落格面之上英雄之下、黑色半透明、渐变纹理组件
|
||||
# 合成;父子 use_parent_material 双挂(结算期随世界去饱和与格面同口径)。 ----
|
||||
if bv._world.hero != null:
|
||||
var kids: Array = bv._world.hero.get_children()
|
||||
if kids.size() != 1 or not (kids[0] is Sprite2D):
|
||||
_problems.append("case⑧ 影子子件缺失或类型不对(children=%d)" % kids.size())
|
||||
else:
|
||||
var sh: Sprite2D = kids[0]
|
||||
if sh.position != Vector2.ZERO:
|
||||
_problems.append("case⑧ 影子未贴脚(pos=%s 应=ZERO)" % str(sh.position))
|
||||
if sh.z_index != -1:
|
||||
_problems.append("case⑧ 影子 z 相对档不对(%d 应=-1)" % sh.z_index)
|
||||
if absf(sh.modulate.a - 0.35) > 0.01:
|
||||
_problems.append("case⑧ 影子透明度漂移(%s 应=0.35)" % str(sh.modulate.a))
|
||||
if not (sh.texture is GradientTexture2D):
|
||||
_problems.append("case⑧ 影子纹理非径向渐变组件(%s)" % str(sh.texture))
|
||||
if not sh.use_parent_material or not bv._world.hero.use_parent_material:
|
||||
_problems.append("case⑧ 去饱和材质链漏挂(shadow=%s hero=%s)" % [str(sh.use_parent_material), str(bv._world.hero.use_parent_material)])
|
||||
# ---- case⑨ 右移朝向+到位回站帧+缩放档(贴图批回归闸):素材基准朝左——向右移动 flip_h=true;
|
||||
# 到位(0.3s 墙钟 > 位移 Tween 140ms)纹理回站帧、scale 恒 1.5 均匀档。无可达右邻已开格跳过。 ----
|
||||
if bv._world.hero != null:
|
||||
var hp9: Vector2i = ms.hero_pos()
|
||||
var mv9 := Vector2i(-9, -9)
|
||||
for n in bv._board.neighbors8(hp9):
|
||||
if n.x == hp9.x + 1 and ms.is_revealed(n):
|
||||
mv9 = n
|
||||
break
|
||||
if mv9.x == -9:
|
||||
print("[ui_input_probe] SKIP case⑨(无可达右邻已开格)")
|
||||
else:
|
||||
_push_click(_pos(bv, mv9), MOUSE_BUTTON_LEFT)
|
||||
await get_tree().create_timer(0.3).timeout
|
||||
var sp9: Sprite2D = bv._world.hero
|
||||
if not sp9.flip_h:
|
||||
_problems.append("case⑨ 右移后未翻转朝向(flip_h=false,素材基准朝左)")
|
||||
if sp9.texture != bv._hero_tex_idle:
|
||||
_problems.append("case⑨ 到位未回站帧(texture=%s)" % str(sp9.texture))
|
||||
if sp9.scale != Vector2.ONE * bv.HERO_SPRITE_SCALE:
|
||||
_problems.append("case⑨ 缩放档漂移(%s 应=%s 均匀)" % [str(sp9.scale), str(bv.HERO_SPRITE_SCALE)])
|
||||
# ---- case⑩ 变格边长即时重排(窗口缩放路径回归闸):set_cell_area 换小格 → 英雄即时落新脚锚、
|
||||
# 缩放均匀不残弹跳形;还原 → 46px 档复验。 ----
|
||||
if bv._world.hero != null:
|
||||
var hp10: Vector2i = ms.hero_pos()
|
||||
bv.set_cell_area(Vector2(300, 300))
|
||||
var expect10: Vector2 = Vector2(hp10) * (bv.cell_size + float(bv.SEP)) \
|
||||
+ Vector2(bv.cell_size * 0.5, bv.cell_size * (1.0 - bv.HERO_GROUND_FRAC))
|
||||
if bv._world.hero.position.distance_to(expect10) > 0.5 or bv._world.hero.scale != Vector2.ONE * bv.HERO_SPRITE_SCALE:
|
||||
_problems.append("case⑩ 缩格后英雄未即时重排(pos=%s expect=%s scale=%s)" % [str(bv._world.hero.position), str(expect10), str(bv._world.hero.scale)])
|
||||
bv.set_cell_area(bv.size)
|
||||
var expect10b: Vector2 = Vector2(hp10) * (bv.cell_size + float(bv.SEP)) \
|
||||
+ Vector2(bv.cell_size * 0.5, bv.cell_size * (1.0 - bv.HERO_GROUND_FRAC))
|
||||
if bv._world.hero.position.distance_to(expect10b) > 0.5:
|
||||
_problems.append("case⑩ 还原后英雄未复位(pos=%s expect=%s)" % [str(bv._world.hero.position), str(expect10b)])
|
||||
# ---- case⑪ 贴图缺位回退(字形「人」回归闸):texture 置 null + refresh → 英雄格数字 0 时字形
|
||||
# 必须回退「人」(数字格仍显数字——回退判据与抑制判据同源);验毕还原纹理重绘。 ----
|
||||
if bv._world.hero != null:
|
||||
var hp11: Vector2i = ms.hero_pos()
|
||||
var u11 = bv._cells[hp11]
|
||||
var tex_saved: Texture2D = bv._hero_tex_idle
|
||||
bv._hero_tex_idle = null
|
||||
bv.refresh()
|
||||
var digit11: int = int(ms.reveal_record(hp11).get("digit", 0))
|
||||
if digit11 == 0:
|
||||
if u11.glyph != "人":
|
||||
_problems.append("case⑪ 贴图缺位未回退字形「人」(glyph=%s)" % u11.glyph)
|
||||
elif u11.glyph != str(digit11):
|
||||
_problems.append("case⑪ 缺位态数字格字形被破坏(glyph=%s 应=%d)" % [u11.glyph, digit11])
|
||||
bv._hero_tex_idle = tex_saved
|
||||
bv.refresh()
|
||||
if _problems.is_empty():
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位 七断言全绿(真实 push_input 路径)")
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/flag_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退 十一断言全绿(真实 push_input 路径)")
|
||||
get_tree().quit(0)
|
||||
else:
|
||||
for p in _problems:
|
||||
|
||||
Reference in new issue
Block a user