fix(迭代22反哺⑤补): 试炼镐C区展示行——charges=0件被_reseed_attune_charges注入循环跳过不入骑库存,而C区槽投影遍历骑库存→试炼镐C区不可见/悬停浮窗进度无处承载(追认批集成缺口,单测只测读数口未覆盖投影链)。修复=inventory_projection末段追加自动兑付件展示行(合成handle=-1非库存句柄+note积点N/8+槽点击走说明toast不进两步交互); use_attune_convert删除遗留孤儿函数头注释清一; 单测新增④b展示行断言两条(装配即入投影handle=-1+note=积点0/8/开格后1/8组合根重查链)+StubAutoInvRunner空骑库存桩。重闸全绿: 冒烟898/0+单测22套+probe_gate --full+render_gate golden 3屏0.00%+doc三闸对基线零新增(死链3/拔旗1/gdd_lint三文件表格占比FAIL均实证存量=79aac07版本对比表格行零变化)+熵增闸PASS; 06裁决小节与实现报告⑤条补集成补丁注记

This commit is contained in:
DKChan committed 2026-10-12 23:43:38 +08:00
1 parent 8455b4aeff
commit cff741ea2a
5 files changed
+52 -5

No files matched your search

@@ -52,7 +52,8 @@ func active_selection() -> int:
return _use_selection
# 槽点击(第一步):AP 类(target=none)点击即用(无目标);空间类进/出选中态(toggle 取消)。
# 槽点击(第一步):AP 类(target=none)点击即用(无目标);空间类进/出选中态(toggle 取消);
# 自动兑付件展示行(handle<0)无使用动作——点击给说明提示(反哺批⑤)。
func on_slot_clicked(slot_handle: int) -> void:
var settlement = _settlement_get.call()
var runner = _runner_get.call()
@@ -62,6 +63,9 @@ func on_slot_clicked(slot_handle: int) -> void:
_use_selection = 0
refresh_slots()
return
if slot_handle < 0:
toast.show_toast("自动兑付件:满足条件自动生效,无需手动使用", "info")
return
var rec: Dictionary = {}
for r in inventory_projection():
if int(r.get("handle", 0)) == slot_handle:
@@ -113,6 +117,7 @@ func inventory_projection() -> Array:
return ms.has_unrevealed() # 只读查询面(排雷玩法 has_unrevealed——手搓全板双循环收口)
var out: Array = []
var cs: Dictionary = settlement.attune_convert_state() if settlement != null else {}
var auto_seen := false # 自动兑付件是否已随骑库存出现(恒否——charges=0 不入骑库存;守合成行重复)
for rec in runner.treasure_inventory.query_inventory(cb):
var arow: Dictionary = db.treasure_item_row(String(rec.get("item_id", "")))
var dn := String(arow.get("display_name", ""))
@@ -120,6 +125,7 @@ func inventory_projection() -> Array:
var note := ""
if bool(cs.get("assembled", false)) and String(cs.get("item_id", "")) == String(rec.get("item_id", "")):
note = "积点 %d/%d" % [int(cs.get("points", 0)), int(cs.get("need", 0))]
auto_seen = true
out.append({
"handle": int(rec.get("handle", 0)),
"item_id": String(rec.get("item_id", "")),
@@ -129,6 +135,20 @@ func inventory_projection() -> Array:
"usable": bool(rec.get("usable", true)),
"note": note,
})
# 自动兑付件展示行(反哺批⑤补——charges=0 不入骑库存〔_reseed_attune_charges 跳过注入〕,
# C 区四槽末尾补合成行承载悬停进度;handle=-1 非库存句柄:槽点击走说明 toast 分支不进两步交互)
if bool(cs.get("assembled", false)) and not auto_seen:
var adn := String(cs.get("display_name", ""))
if adn != "":
out.append({
"handle": -1,
"item_id": String(cs.get("item_id", "")),
"glyph": adn.left(1),
"name": adn,
"used": false,
"usable": true,
"note": "积点 %d/%d" % [int(cs.get("points", 0)), int(cs.get("need", 0))],
})
return out