diff --git a/ruf-der-pilze/scripts/scene_manager.gd b/ruf-der-pilze/scripts/scene_manager.gd index 9ebc426..d16d319 100644 --- a/ruf-der-pilze/scripts/scene_manager.gd +++ b/ruf-der-pilze/scripts/scene_manager.gd @@ -1,24 +1,23 @@ extends Node const SCENES := { - "tavern": "res://scenes/tavern.tscn", - "chamber": "res://scenes/chamber.tscn", + "lobby": "res://scenes/tavern_lobby.tscn", + "tavern": "res://scenes/tavern.tscn", + "dm_view": "res://scenes/dm_view.tscn", "entrance_hall": "res://scenes/entrance_hall.tscn", - "refectory": "res://scenes/refectory.tscn", - "library": "res://scenes/library.tscn", - "chapel": "res://scenes/chapel.tscn", - "cloister": "res://scenes/cloister.tscn", - "sanctum": "res://scenes/sanctum.tscn", + "refectory": "res://scenes/refectory.tscn", + "library": "res://scenes/library.tscn", + "chapel": "res://scenes/chapel.tscn", + "cloister": "res://scenes/cloister.tscn", + "sanctum": "res://scenes/sanctum.tscn", } +var pending_room_index: int = 0 var _current_scene_node: Node = null func _ready() -> void: NetworkManager.game_started.connect(_on_game_started) - # Defer until main.tscn and its CurrentScene node are in the tree. - # call_deferred is not sufficient here — autoloads init before the main - # scene. Connect to root.ready (fires once, after main scene is ready). get_tree().root.ready.connect(_on_root_ready, CONNECT_ONE_SHOT) @@ -26,7 +25,7 @@ func _on_root_ready() -> void: var args := OS.get_cmdline_args() + OS.get_cmdline_user_args() var is_server := OS.has_feature("dedicated_server") or "--server" in args if not is_server: - transition_to("tavern") + transition_to("lobby") func transition_to(scene_name: String) -> void: @@ -51,13 +50,8 @@ func _on_game_started() -> void: var args := OS.get_cmdline_args() + OS.get_cmdline_user_args() if OS.has_feature("dedicated_server") or "--server" in args: return - # TODO next feature: call _load_for_role("chamber") here once role routing is implemented - print("[SceneManager] Spiel gestartet — chamber transition kommt im nächsten Feature") - - -func _load_for_role(scene_name: String) -> void: - # my_id is only valid after NetworkManager._on_connected_to_server fires. - # Do not call before game_started — my_id will be 0 before that. var role: String = NetworkManager.players.get(NetworkManager.my_id, {}).get("role", "player") - # TODO next feature: load dm variant when role == "dm" - print("[SceneManager] Role %s → %s (stub, not switching yet)" % [role, scene_name]) + if role == "dm": + transition_to("dm_view") + else: + transition_to("tavern")