秘宝批T7组E-2:内部标识符全族换词(inventory/unlocked/replace/overlays/slot/settlement use_aux等60+token)+存档键零触碰专项核通过(37文件六键普查零差异,点号访问零存在)+行为探针四件全绿+任务书§1.2基线回填(755/0实测)
This commit is contained in:
1 parent
f8c6db49c6
commit
cd73e62346
21 files changed
+205
-203
No files matched your search
@@ -2,16 +2,16 @@
|
||||
# 秘宝两步交互控制器(迭代 7 T4;T3 拆件批 2026-10-02 自 main.gd 迁出——规范 1.1 单一职责):
|
||||
# C 区槽位选中/取消(toggle)→ 棋盘点格使用目标拾取的两步交互状态机 + 库存/叠加层只读投影装配。
|
||||
# 数据源 = runner 级库存只读面(query_inventory/query_overlays)+ 表行投影(display_name/target/effect_kinds);
|
||||
# 写调用唯一经 战斗结算.use_aux(core 侧四步编排——拒绝零消耗 toast 可辨认)。
|
||||
# 写调用唯一经 战斗结算.use_treasure(core 侧四步编排——拒绝零消耗 toast 可辨认)。
|
||||
# 装配纪律:settlement/runner 随关卡逐关更替——经组合根现值回调注入(仿 identity_resolver 只读回调
|
||||
# 先例);呈现句柄(信息面板/toast/棋盘叠加层)由组合根注入;ADR-0001——信号连接不在此发生,
|
||||
# info_panel.aux_slot_clicked 由组合根接至 on_slot_clicked。
|
||||
# info_panel.treasure_slot_clicked 由组合根接至 on_slot_clicked。
|
||||
# 无目标使用显式化(T3 收口):AP 类(target=none)本无坐标可给——原调用面伪造 Vector2i(-9,-9)
|
||||
# 哨兵坐标;现调用面一律 attempt_use(handle)(cell 缺省=null=显式「无目标」),core 契约的
|
||||
# Vector2i 形参收口于本类常量(aux_items.validate_use 对 ap 行忽略目标值,哨兵不出本类)。
|
||||
# Vector2i 形参收口于本类常量(treasure_items.validate_use 对 ap 行忽略目标值,哨兵不出本类)。
|
||||
extends RefCounted
|
||||
|
||||
const NO_TARGET := Vector2i(-9, -9) # core use_aux 形参占位(仅 target=none 行到达——validate_use 忽略该值)
|
||||
const NO_TARGET := Vector2i(-9, -9) # core use_treasure 形参占位(仅 target=none 行到达——validate_use 忽略该值)
|
||||
|
||||
var db
|
||||
var meta # 解锁门控数据源(工坊解锁×活行交集——冒险开始组装;组合根 _ready 建立后注入)
|
||||
@@ -56,7 +56,7 @@ func active_selection() -> int:
|
||||
func on_slot_clicked(slot_handle: int) -> void:
|
||||
var settlement = _settlement_get.call()
|
||||
var runner = _runner_get.call()
|
||||
if settlement == null or runner == null or runner.aux_inventory == null:
|
||||
if settlement == null or runner == null or runner.treasure_inventory == null:
|
||||
return
|
||||
if slot_handle == 0:
|
||||
_use_selection = 0
|
||||
@@ -82,13 +82,13 @@ func on_slot_clicked(slot_handle: int) -> void:
|
||||
toast.show_toast("%s:点击目标格使用(9 宫窗口),再点道具取消" % String(rec.get("name", "")), "info")
|
||||
|
||||
|
||||
# 使用受理(第二步;cell=空间类目标格,null=无目标;core 侧 use_aux 四步编排——拒绝零消耗 toast 可辨认)
|
||||
# 使用受理(第二步;cell=空间类目标格,null=无目标;core 侧 use_treasure 四步编排——拒绝零消耗 toast 可辨认)
|
||||
func attempt_use(handle: int, cell: Variant = null) -> void:
|
||||
var settlement = _settlement_get.call()
|
||||
if settlement == null:
|
||||
return
|
||||
var target: Vector2i = cell if cell != null else NO_TARGET
|
||||
var v: Dictionary = settlement.use_aux(handle, target)
|
||||
var v: Dictionary = settlement.use_treasure(handle, target)
|
||||
if not bool(v.ok):
|
||||
toast.show_toast(String(v.get("reason", "无法使用")), "warn")
|
||||
return
|
||||
@@ -103,7 +103,7 @@ func attempt_use(handle: int, cell: Variant = null) -> void:
|
||||
# 库存投影(C 区四槽取数面——字形=名首字;usable=板级零信息预判回调接排雷玩法只读面)
|
||||
func inventory_projection() -> Array:
|
||||
var runner = _runner_get.call()
|
||||
if runner == null or runner.aux_inventory == null:
|
||||
if runner == null or runner.treasure_inventory == null:
|
||||
return []
|
||||
var settlement = _settlement_get.call()
|
||||
var ms = settlement.minesweeper if settlement != null else null
|
||||
@@ -112,7 +112,7 @@ func inventory_projection() -> Array:
|
||||
cb = func(_c: Vector2i) -> bool:
|
||||
return ms.has_unrevealed() # 只读查询面(排雷玩法 has_unrevealed——手搓全板双循环收口)
|
||||
var out: Array = []
|
||||
for rec in runner.aux_inventory.query_inventory(cb):
|
||||
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", ""))
|
||||
out.append({
|
||||
@@ -127,13 +127,13 @@ func inventory_projection() -> Array:
|
||||
|
||||
|
||||
func refresh_slots() -> void:
|
||||
info_panel.set_aux_inventory(inventory_projection(), _use_selection)
|
||||
info_panel.set_treasure_inventory(inventory_projection(), _use_selection)
|
||||
|
||||
|
||||
# 叠加层投影注入(use 成功/三清后——棋盘标记与预读徽章重算)
|
||||
func refresh_overlays() -> void:
|
||||
var runner = _runner_get.call()
|
||||
if runner == null or runner.aux_inventory == null or board_view == null:
|
||||
if runner == null or runner.treasure_inventory == null or board_view == null:
|
||||
return
|
||||
var ov: Dictionary = runner.aux_inventory.query_overlays()
|
||||
board_view.set_aux_overlays(ov.get("mine_reveal", []), ov.get("reward_preview", []))
|
||||
var ov: Dictionary = runner.treasure_inventory.query_overlays()
|
||||
board_view.set_treasure_overlays(ov.get("mine_reveal", []), ov.get("reward_preview", []))
|
||||
Reference in new issue
Block a user