P1-5/P2-7 组合根可测化+模态协议内聚(场景拆分后重估结论=抽取面收敛为模态编排域): - modal_flow.gd 新纯逻辑类: 依赖仅 ModalStack+查询 Callable(审计处方)——开合编排 (挂起兜底/排播排空/遮挡记账/开合同步)/棋盘输入锁谓词(三例外注入)/双形制角标谓词; V6 modal_flow_test 19 断言直接 new() 进 run_all(26→27 套)——测试抓出并修正 挂起兜底 divergent return 一处(原 main 语义=先结挂起后继续开本层不短路) - ModalStack 互斥域随层登记: register(m, tags) + TAG_NON_LOCKING/TAG_SCREEN_STATE 封闭词表 + has_open_excluding_tags 组查询;原 has_open_excluding/_any 调用点拼装退役 (main 五处判据迁移);main._modals=flow.stack(ui_struct _list 登记序断言缝保留) - P1-5 控制器构造收拢 context: curio 16 参→CurioFlowContext/camp 13 参→CampFlowContext (字段逐一同名迁移,控制器可独立实例化) 验收: 对拍三变体全同;冒烟 1079/0+run_all 27 套+probe click+render golden 全绿
39 lines
1.7 KiB
GDScript
39 lines
1.7 KiB
GDScript
class_name CampFlowContext
|
|
extends RefCounted
|
|
# 营地/商店投影的构造上下文(迭代 27 T4——审计 P1-5:控制器构造参数收拢为 context 对象,
|
|
# 原 13 参长签名收一处命名面——单测可直接 new() 本 context + 控制器获得独立实例化缝)。
|
|
# 字段即原构造参数逐一同名迁移;依赖仅视图句柄 + 查询/编排 Callable(组合根注入)。
|
|
|
|
var db
|
|
var meta_get: Callable # () -> MetaProgressionCore(现值回调——组合根 lambda)
|
|
var save_get: Callable # () -> SaveManagerCore
|
|
var camp_overlay: CampOverlay
|
|
var shop_overlay: ShopOverlay
|
|
var toast: ToastStack
|
|
var start_overlay: Control
|
|
var logger # PlaytestLogger(试玩日志验收取数面)
|
|
var runner_get: Callable # () -> LevelRunner
|
|
var open_modal: Callable
|
|
var close_modal: Callable
|
|
var refresh_presentations: Callable
|
|
var refresh_resume_button: Callable
|
|
|
|
|
|
func _init(db_ref, meta_get_cb: Callable, save_get_cb: Callable, camp_overlay_ref: CampOverlay,
|
|
shop_overlay_ref: ShopOverlay, toast_ref: ToastStack, start_overlay_ref: Control,
|
|
logger_ref, runner_get_cb: Callable, open_modal_cb: Callable, close_modal_cb: Callable,
|
|
refresh_presentations_cb: Callable, refresh_resume_button_cb: Callable) -> void:
|
|
db = db_ref
|
|
meta_get = meta_get_cb
|
|
save_get = save_get_cb
|
|
camp_overlay = camp_overlay_ref
|
|
shop_overlay = shop_overlay_ref
|
|
toast = toast_ref
|
|
start_overlay = start_overlay_ref
|
|
logger = logger_ref
|
|
runner_get = runner_get_cb
|
|
open_modal = open_modal_cb
|
|
close_modal = close_modal_cb
|
|
refresh_presentations = refresh_presentations_cb
|
|
refresh_resume_button = refresh_resume_button_cb
|