class_name SceneManager extends Node ## ============================== ## References ## ============================== var _scene: ReedScene var _act_manager: ActManager var _props: Dictionary # prop_id -> PropComponent ## ============================== ## Lifecycle ## ============================== func _ready() -> void: await get_parent().ready _resolve_scene() if _scene == null: push_error("[SceneManager] Parent is not ReedScene.") return _resolve_references() _bind_signals() ## ============================== ## Resolve References ## ============================== func _resolve_scene() -> void: var p := get_parent() if p is ReedScene: _scene = p else: _scene = null func _resolve_references() -> void: # 从 ReedScene 拿“整理好的结果” _act_manager = _scene._act_manager _props = _scene._prop_map ## ============================== ## Signal Binding ## ============================== func _bind_signals() -> void: if _act_manager: _act_manager.act_changed.connect(_on_act_changed) #for prop_id in _props: #var prop : PropComponent = _props[prop_id] #_bind_prop_signals(prop) # #func _bind_prop_signals(prop: PropComponent) -> void: ## 示例:监听 prop 的自定义信号 #if prop.has_signal("activated"): #prop.activated.connect(func(): #_on_prop_activated(prop) #) ## ============================== ## Callbacks ## ============================== func _on_act_changed(from_act: int, to_act: int) -> void: print("[SceneManager] Act changed:", from_act, "->", to_act) func _on_prop_activated(prop: PropComponent) -> void: print("[SceneManager] Prop activated:", prop.prop_id)