## VERTICAL SLICE - NOT FOR PRODUCTION ## 棋盘每格渲染数据的只读解析回调族:奖励徽章身份(挖掘期 Active 相位内)、地形变异数字遮蔽与角标、 ## 调试加成生效值。有态绑定件——构造注入 db、调试浮窗与结算活态取值,产出绑定 Callable 供组合根接线; ## 与无态静态投影族(HudPresenter)职责互斥。 extends RefCounted var _db: ConfigDb var _debug_overlay: DebugOverlay var _settlement_getter: Callable func _init(db_ref: ConfigDb, debug_overlay_ref: DebugOverlay, settlement_getter: Callable) -> void: _db = db_ref _debug_overlay = debug_overlay_ref _settlement_getter = settlement_getter # 加成生效值供给(debug_session 注入 Callable——每次从浮窗百分比现算,经 encounter 传参零表写; # 禁表写路径(双写叠加隐患源头); # 合成式单点在 UiKit.scaled——与调试浮窗生效值预览共用,本类不持有同式私有实现) func debug_hero_override() -> Dictionary: return {"atk": UiKit.scaled(int(_db.hero.atk), _debug_overlay.atk_pct()), "max_hp": UiKit.scaled(int(_db.hero.max_hp), _debug_overlay.hp_pct())} # 奖励徽章身份解析(组合根守卫:仅挖掘期 Active 相位内查询——地图战斗资源 Ready 域外零读、零诊断噪音; # 相位取数经 presentation_snapshot 成文面——禁 settlement.action_economy 链式穿透) func identity_lookup(c: Vector2i) -> Variant: var st: BattleOrchestrator = _settlement_getter.call() if st == null or st.minesweeper.current_board() == null: return null if String(st.presentation_snapshot().get("phase", "")) != ActionEconomy.PHASE_ACTIVE: return null return st.query_reward_identity(c) # 地形变异 数字遮蔽解析(信息型 hide_number——格带该效果变异即遮蔽;读取方按格子变异数据行动。 # 变异表直读注入 db——settlement.db 即组合根注入的同一 ConfigDB 实例(AdventureRunner/DebugSession # 构造传参),免 settlement 内部链式穿透) func variant_mask_lookup(c: Vector2i) -> bool: var st: BattleOrchestrator = _settlement_getter.call() if st == null: return false var b = st.minesweeper.current_board() if b == null: return false for vid in b.variant_ids(c): var vrow: Dictionary[Variant, Variant] = _db.variation.row_by_id(String(vid)) if String(vrow.get("effect", "")) == "hide_number": return true return false # 地形变异 角标解析(伤害型变异未开格视觉标记;读取方按格子变异数据行动,规则本体零特判。 # 策略纹理非数值墙:标记=玩家绕行/承担的决策输入,难度本体仍住数值包络。变异表直读注入 db) func variant_mark_lookup(c: Vector2i) -> String: var st: BattleOrchestrator = _settlement_getter.call() if st == null: return "" var b = st.minesweeper.current_board() if b == null: return "" for vid in b.variant_ids(c): var vrow: Dictionary[Variant, Variant] = _db.variation.row_by_id(String(vid)) if String(vrow.get("effect", "")) == "flat_damage": return "flat_damage" return ""