diff --git a/weltenauge/systems/network/network_manager.gd b/weltenauge/systems/network/network_manager.gd index e835880..945b158 100644 --- a/weltenauge/systems/network/network_manager.gd +++ b/weltenauge/systems/network/network_manager.gd @@ -27,6 +27,7 @@ func host_game(): peer.create_server(PORT, MAX_CLIENTS) multiplayer.multiplayer_peer = peer multiplayer.peer_connected.connect(_on_player_connected) + multiplayer.peer_disconnected.connect(_on_player_disconnected) print("Server gestartet. id=" + str(multiplayer.get_unique_id())) func join_game(ip = "127.0.0.1"): @@ -39,6 +40,17 @@ func _on_player_connected(id): # Standardmäßig in Area 1 starten change_player_area(id, "keuwin_grasland") +func _on_player_disconnected(id): + if not multiplayer.is_server(): return + + print("Player disconnected with id: ", id) + + # Der MultiplayerSpawner entfernt den Node automatisch aus dem Szenenbaum. + # Unsere einzige Aufgabe ist es, unseren internen Zustand aufzuräumen. + if player_worlds.has(id): + print("Removing player ", id, " from internal tracking.") + player_worlds.erase(id) + func change_player_area(id: int, area_key: String): if not multiplayer.is_server(): return print("Server is loading ", area_key)