feat: update SceneManager — lobby/tavern/dm_view keys, game_started routing
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user