68 lines
3.1 KiB
GDScript
68 lines
3.1 KiB
GDScript
## 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.combat.hero.atk), _debug_overlay.atk_pct()),
|
|
"max_hp": UiKit.scaled(int(_db.combat.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.combat.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.combat.variation.row_by_id(String(vid))
|
|
if String(vrow.get("effect", "")) == "flat_damage":
|
|
return "flat_damage"
|
|
return ""
|