From 8f641ab36e3356ceb1df124779e26f2b81d195aa Mon Sep 17 00:00:00 2001 From: Olof Pettersson Date: Wed, 19 Nov 2025 18:58:23 +0100 Subject: [PATCH] Fix error overflowing --- src/scenes/character/player_controller_3d.gd | 2 +- src/scripts/network/network_handler.gd | 2 ++ src/scripts/singletons/game_manager.gd | 18 +++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/scenes/character/player_controller_3d.gd b/src/scenes/character/player_controller_3d.gd index 75a2347..494271b 100644 --- a/src/scenes/character/player_controller_3d.gd +++ b/src/scenes/character/player_controller_3d.gd @@ -106,7 +106,7 @@ func _notification(what): NOTIFICATION_WM_WINDOW_FOCUS_IN: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) NOTIFICATION_EXIT_TREE: - print("PlayerController %s exited tree" % multiplayer.get_unique_id()) + print("PlayerController exited tree") NOTIFICATION_ENTER_TREE: print("PlayerController %s entered tree" % multiplayer.get_unique_id()) diff --git a/src/scripts/network/network_handler.gd b/src/scripts/network/network_handler.gd index 14daf08..306c7b1 100644 --- a/src/scripts/network/network_handler.gd +++ b/src/scripts/network/network_handler.gd @@ -41,6 +41,7 @@ func close_connection(): multiplayer.multiplayer_peer = null print("Connection closed.") _disconnect_signals() + GameManager.reset_game_state() func setup_connections(): if not multiplayer.peer_connected.is_connected(on_peer_connected): @@ -85,3 +86,4 @@ func on_connected_to_server() -> void: func on_server_disconnected() -> void: print("Disconnected from server.") get_tree().change_scene_to_file("res://main.tscn") + GameManager.reset_game_state() diff --git a/src/scripts/singletons/game_manager.gd b/src/scripts/singletons/game_manager.gd index 86dde06..2d57541 100644 --- a/src/scripts/singletons/game_manager.gd +++ b/src/scripts/singletons/game_manager.gd @@ -27,7 +27,13 @@ func _ready(): return func _process(_delta): - if find_available_spawner(): + if not multiplayer.multiplayer_peer: return + if not multiplayer.is_server(): return + + # Safety check: don't try to spawn if the system isn't ready or is deleted + if not is_instance_valid(current_star_system): return + + if not waiting_players.is_empty() and find_available_spawner(): _try_spawn_waiting_player() @@ -150,3 +156,13 @@ func _get_orbital_body_ancestor(node: Node) -> OrbitalBody3D: return current current = current.get_parent() return null + +func reset_game_state(): + current_star_system = null + registered_spawners.clear() + waiting_players.clear() + player_pawns.clear() + player_controllers.clear() + + # Reset any other state variables + print("GameManager state cleared.")