feat: update SceneManager — lobby/tavern/dm_view keys, game_started routing

This commit is contained in:
2026-04-14 03:03:47 +02:00
parent 8583c27586
commit bc5e64083b

View File

@@ -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")