diff --git a/ruf-der-pilze/scripts/tavern.gd b/ruf-der-pilze/scripts/tavern.gd index d3810a7..23583a2 100644 --- a/ruf-der-pilze/scripts/tavern.gd +++ b/ruf-der-pilze/scripts/tavern.gd @@ -1,5 +1,29 @@ extends Node3D +const ROOM_COUNT := 8 + func _ready() -> void: - print("[Tavern] Scene loaded. Room index: %d" % SceneManager.pending_room_index) + var args := OS.get_cmdline_args() + OS.get_cmdline_user_args() + if OS.has_feature("dedicated_server") or "--server" in args: + return + var room_index := SceneManager.pending_room_index + _spawn_player(room_index) + + +func _spawn_player(room_index: int) -> void: + var room_num := (room_index % ROOM_COUNT) + 1 # Zimmer heißen Room1..Room8 + var spawn_path := "UpperFloor/Room%d/SpawnPoint" % room_num + var spawn := get_node_or_null(spawn_path) as Marker3D + if spawn == null: + push_error("[Tavern] SpawnPoint nicht gefunden: %s" % spawn_path) + return + var controller := Node3D.new() + controller.name = "PlayerController" + var camera := Camera3D.new() + camera.name = "Camera3D" + camera.current = true + controller.add_child(camera) + add_child(controller) + controller.global_transform = spawn.global_transform + print("[Tavern] Spieler gespawnt in %s" % spawn_path)