## 模态层域句柄册:十三个模态覆盖层句柄+模态栈编排(ModalFlow——登记/开合/输入锁谓词)的注册面域容器。 ## RefCounted 不挂树;模态登记唯一口=register_layer(anchors 撑满宿主+排入 ModalStack)。 ## flow 随容器构造即建(装配早期注入点经 root.ui.modals.flow.* 取 Callable——晚于 flow 建立时点)。 class_name UiModals extends RefCounted var flow: ModalFlow var legend_overlay: LegendOverlay var node_overlay: NodeOverlay var level_screen: LevelMapScreen var curio_overlay: CurioPickOverlay var end_overlay: BattleEndOverlay var shop_overlay: ShopOverlay var camp_overlay: CampOverlay var settings_overlay: SettingsOverlay var status_panel: StatusPanel var career_overlay: CareerOverlay var save_select_overlay: SaveSelectOverlay var confirm_dialog: ConfirmDialog var debug_overlay: DebugOverlay func _init() -> void: flow = ModalFlow.new() # 查询/钩子 Callable 由 _build_modal_flow 注入(注入时点不变——注入值面向已在座实例) func register_layer(m: Control, tags: Array = []) -> void: # 撑满宿主(Control 默认锚 = 0×0——全屏变暗层与居中布局整体失效;route 选路层预览截图实证后 # 统一收口:六个模态同病,探针经信号直发绕过真实点击从未暴露。anchors_and_offsets 而非 anchors # ——后者会把控件重置回最小内容尺寸,ui_assembler 头注同款纪律) m.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) flow.register(m, tags) # 排除组随层登记(non_locking=调试浮窗/screen_state=关卡地图屏)