iter34 卡④ D1 回炉 T2(甲案): _draw_graph 在实际绘制点记录本帧绘制事实,display_probe 改读该记录(接线坏可判红);探针⑱ 选区改按核心可见集解除自指,PASS 文案补列 ⑱
This commit is contained in:
1 parent
8121887708
commit
1970e0efc4
2 files changed
+23
-18
No files matched your search
@@ -48,6 +48,7 @@ var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
||||
var abandon_btn: Button # 放弃入口(可见性归组合根 set_abandon_available——只在冒险模式开)
|
||||
var status_badge: Button # 状态面板入口角标(顶栏 GP 徽右侧;连接归组合根)
|
||||
var _abandon_timer := ArmedTimer.new() # 放弃确认窗(_process 帧驱动倒计时机制收口;窗口=CONFIRM_WINDOW_S)
|
||||
var _drawn_disp: Dictionary[int, Dictionary] = {} # 本停点实际绘制记录(_draw_graph 逐帧在实际绘制点重建——display_probe 消费面)
|
||||
var _node_icons := {} # 节点图标贴图(load_tex 守卫——缺位 null → 字形回退,冒烟/无素材检出安全)
|
||||
var _noise_rect: TextureRect # 屏底石纹(换层色板渐变承载面——null = 纯色回退无挂点)
|
||||
var _tint_level := 0 # 当前已应用 tint 的层号(0 = 未应用)
|
||||
@@ -440,6 +441,7 @@ static func node_display(node: Dictionary, nid: int, type_vis: Array,
|
||||
func _draw_graph(canvas: Control) -> void:
|
||||
if _runner == null or not visible:
|
||||
return
|
||||
_drawn_disp.clear() # 绘制记录随本帧重建——只反映实际发生的绘制(接线坏的判据面)
|
||||
var nodes: Array[Variant] = _runner.nodes()
|
||||
var pos := _layout(nodes, canvas)
|
||||
var current_id: int = _runner.current_node_id()
|
||||
@@ -476,17 +478,21 @@ func _draw_graph(canvas: Control) -> void:
|
||||
var rect := Rect2(p - NODE_HALF, NODE_HALF * 2.0)
|
||||
canvas.draw_rect(rect, col)
|
||||
var disp := node_display(node, nid, type_vis, nid == current_id, cand_ids.has(nid))
|
||||
var rec: Dictionary[String, Variant] = {"draw_icon": false, "draw_label": false,
|
||||
"label_text": "", "boss_border": false}
|
||||
if bool(disp["boss_border"]):
|
||||
# Boss 描边 = 紫赤 2px(§4.2 色相独占)+ 外缘 1px 深墨环(灰度冗余通道强制:
|
||||
# 紫赤灰度 72 对石纹噪底 65 灰度不可辨;灰度/色弱下 Boss 环经深墨环可辨)
|
||||
canvas.draw_rect(Rect2(rect.position - Vector2(3, 3), rect.size + Vector2(6, 6)), UiKit.INK_ROUTE, false, 1.0)
|
||||
canvas.draw_rect(rect, COL_BOSS_BORDER, false, 2.0)
|
||||
rec["boss_border"] = true
|
||||
elif cand_ids.has(nid):
|
||||
# 悬停预承诺 = 亮金描边加粗(4px),常态候选 = 亮金描边 2px(spec States 悬停预承诺行)
|
||||
canvas.draw_rect(rect, COL_PASSAGE_LIT, false, 4.0 if _hover_id == nid else 2.0)
|
||||
# 节点图标(20px 烘焙 1:1 消费;双色墨制=乘法调制——当前金底深墨,暗底系 WARM 原色;
|
||||
# 贴图缺位 → 字形回退=贴图在位字形退役惯例)
|
||||
if bool(disp["draw_icon"]):
|
||||
rec["draw_icon"] = true
|
||||
var icon: Texture2D = _node_icons.get(t)
|
||||
if icon != null:
|
||||
var tint := UiKit.ICON_TINT_ON_GOLD if col == COL_ROOM_CURRENT else Color(1.0, 1.0, 1.0)
|
||||
@@ -503,9 +509,12 @@ func _draw_graph(canvas: Control) -> void:
|
||||
# 类型文字标签(demo ④:节点下方 11px;当前位=「当前位置」金、候选=类型名+「 · 可选」烛光黄、
|
||||
# 其余=类型名暖米弱化;文字+图标+形状三通道)
|
||||
if bool(disp["draw_label"]):
|
||||
rec["draw_label"] = true
|
||||
rec["label_text"] = String(disp["label_text"])
|
||||
var type_ink := COL_ROOM_CURRENT if nid == current_id else (UiKit.CANDLE if cand_ids.has(nid) else UiKit.WARM_FAINT)
|
||||
canvas.draw_string(get_theme_default_font(), Vector2(p.x - 44.0, rect.end.y + 15.0),
|
||||
String(disp["label_text"]), HORIZONTAL_ALIGNMENT_CENTER, 88, 11, type_ink)
|
||||
_drawn_disp[nid] = rec
|
||||
|
||||
|
||||
func _layout(nodes: Array, canvas: Control) -> Dictionary:
|
||||
@@ -532,19 +541,10 @@ func canvas_probe() -> Dictionary:
|
||||
return {"origin": _canvas.get_global_position(), "min_size": _canvas.custom_minimum_size}
|
||||
|
||||
|
||||
# 类型可见性呈现只读快照(id → node_display 决策输出;真机绘制面断言消费点)
|
||||
# 类型可见性绘制只读记录(id → 本帧实际绘制事实:图标/文字/描边/文案;_draw_graph 在实际绘制点写入——
|
||||
# 接线层断言消费点:绕开决策面直接画,这里就露出「雾下也画了」)
|
||||
func display_probe() -> Dictionary:
|
||||
var out := {}
|
||||
if _runner == null:
|
||||
return out
|
||||
var nodes: Array[Variant] = _runner.nodes()
|
||||
var type_vis: Array[int] = _runner.type_visible_ids()
|
||||
var current_id: int = _runner.current_node_id()
|
||||
var cand_ids: Array[Variant] = _runner.next_candidate_ids()
|
||||
for node in nodes:
|
||||
var nid := _id_of(node)
|
||||
out[nid] = node_display(node, nid, type_vis, nid == current_id, cand_ids.has(nid))
|
||||
return out
|
||||
return _drawn_disp
|
||||
|
||||
|
||||
# 分层(layout/fit 共享件):layer = 入口 BFS 深度;同层 slot 垂直排布;未达节点兜底排末层
|
||||
|
||||
@@ -41,9 +41,11 @@ func _ready() -> void:
|
||||
if main.level_screen.visible:
|
||||
var ro = main.level_screen
|
||||
var cands: Array = main.run_scope.runner.next_candidate_ids()
|
||||
# ---- ⑱ 信息迷雾呈现接线(回归闸):真机 display_probe 读绘制面(雾下节点类型不绘制、
|
||||
# Boss 描边在、候选类型在)+点击雾下非候选节点零提交(雾不扩大可点域——候选集即合法集)----
|
||||
# ---- ⑱ 信息迷雾呈现接线(回归闸):真机 display_probe 读实际绘制记录(雾下节点类型未画、
|
||||
# Boss 描边画了、候选类型画了)+点击雾下非候选节点零提交(雾不扩大可点域——候选集即合法集)----
|
||||
var disp: Dictionary = ro.display_probe()
|
||||
var vis: Array = main.run_scope.runner.type_visible_ids()
|
||||
var cur_id: int = main.run_scope.runner.current_node_id()
|
||||
var fog_id := -1
|
||||
var boss_id := -1
|
||||
var nds_vis: Array = main.run_scope.runner.nodes()
|
||||
@@ -51,10 +53,13 @@ func _ready() -> void:
|
||||
var vnid: int = main.run_scope.runner.node_id_of(n)
|
||||
if String(n.get("type", "")) == "boss":
|
||||
boss_id = vnid
|
||||
elif fog_id < 0 and disp.has(vnid) and not bool(disp[vnid]["draw_icon"]):
|
||||
elif fog_id < 0 and vnid != cur_id and not cands.has(vnid) and not vis.has(vnid):
|
||||
# 选区只按核心可见集判(不读绘制记录——选区与断言解耦,防「按记录选、再断言记录」自指)
|
||||
fog_id = vnid
|
||||
if boss_id < 0 or fog_id < 0:
|
||||
_pre_fail("case⑱ 雾面节点选取失败(boss=%d fog=%d)" % [boss_id, fog_id])
|
||||
if boss_id < 0 or fog_id < 0 or not disp.has(fog_id) or not disp.has(boss_id) \
|
||||
or not disp.has(int(cands[0])):
|
||||
_pre_fail("case⑱ 雾面节点选取失败或绘制记录缺位(boss=%d fog=%d 记录数=%d)"
|
||||
% [boss_id, fog_id, disp.size()])
|
||||
return
|
||||
if bool(disp[fog_id]["draw_icon"]) or bool(disp[fog_id]["draw_label"]):
|
||||
_pre_fail("case⑱ 雾下节点类型仍出示(图标=%s 文字=%s——范围外只见结构)〔fv2〕"
|
||||
@@ -641,7 +646,7 @@ func _ready() -> void:
|
||||
if not bool(bv.type_glow_probe().get("enabled", false)):
|
||||
_problems.append("case⑰ 微光开关未恢复开态")
|
||||
if _problems.is_empty():
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/seal_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标/视野迷雾/状态面板输入锁/未开格类型微光 十八断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增,④b 封印纹理槽回归 2026-10-02 增,⑮视野迷雾 2026-10-03 增〔+提灯接线断言 2026-10-05 迭代14⑤〕,⑯状态面板输入锁 2026-10-06 迭代17卡③增,⑰未开格类型微光 2026-10-17 迭代30卡①增)")
|
||||
print("[ui_input_probe] PASS — 悬停金框/禁入信号/路径预览/seal_place/chord/dig/英雄落位/影子构成/朝向/缩格重排/缺位回退/变异角标/视野迷雾/状态面板输入锁/未开格类型微光 十八断言全绿(真实 push_input 路径——⑫图上命中⑬画布拟合 2026-09-28 增,⑭变异角标 2026-09-29 增,④b 封印纹理槽回归 2026-10-02 增,⑮视野迷雾 2026-10-03 增〔+提灯接线断言 2026-10-05 迭代14⑤〕,⑯状态面板输入锁 2026-10-06 迭代17卡③增,⑰未开格类型微光 2026-10-17 迭代30卡①增,⑱信息迷雾绘制接线(display_probe 读实际绘制记录)增)")
|
||||
get_tree().quit(0)
|
||||
else:
|
||||
for p in _problems:
|
||||
|
||||
Reference in new issue
Block a user