- r1-1 数据投影五函数 → HudPresenter 静态族(status_data/status_curios/career_data/save_select_data/camp_data,依赖面显式参数化) - r1-2 只读解析回调四函数 → 新件 board_resolvers(有态绑定:db+调试浮窗+结算活态取值三参注入,产出三解析 Callable+override 拼装;注入点改引) - r1-3 文案拼装三件 → HudPresenter(gp_summary_text/bonus_summary_text/phase_text) - r1-4 探针直引零改动:_camp_data/_status_data/_gp_summary_text 三件薄委托原签名转发(ui_click/ui_struct 直调面不动) - 范围扩展(用户令「全部改代码」下压 S13 文件长度线):_build_ui 拆八步 → main_ui_build;冒险/覆盖层/调试流程族 → main_adventure_flow / main_overlay_flow / main_debug_flow(逐字搬运,成员访问改 root 前缀);诊断转储接线留在组合根(source 扫描断言零改动) - main.gd 1506→946 行(S13 ≤999 达标);九条基线外漂移经代码压回后扫描 229/229、新违规 0,tools/gdstyle_baseline.txt 零改动 - 等价证据:hud_presenter_test / pacing_queue_test / theme_projection_test(162 项)/ modal_flow / standee_fx_sweep / player_copy_sweep / source_guard / meta_progression_forge / breakpoint_resume / level_shop_economy 全绿;probe_gate --click --full 全绿(click 问题=0);冒烟 17/17;S9 类型闸 PASS;撤销证明(删 gp_summary_text 承接体→Parse Error 红→还原复绿)在案
68 lines
3.0 KiB
GDScript
68 lines
3.0 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.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 ""
|