WIP: Handle player disconnected

This commit is contained in:
Nikolai Rodionov 2025-01-30 13:36:53 +01:00
parent c877e81562
commit f61b961d42
Signed by: allanger
GPG Key ID: 09F8B434D0FDD99B
3 changed files with 19 additions and 12 deletions

View File

@ -26,9 +26,7 @@ func _ready() -> void:
if err != OK: if err != OK:
push_error("Couldn't load object spawner") push_error("Couldn't load object spawner")
# add objects spawner # add objects spawner
if multiplayer.is_server(): if not OS.has_feature("dedicated_server"):
_spawn_player(1)
else:
_request_spawn.rpc_id(1, multiplayer.get_unique_id()) _request_spawn.rpc_id(1, multiplayer.get_unique_id())
pass # Replace with function body. pass # Replace with function body.

View File

@ -12,7 +12,8 @@ func _ready() -> void:
var err := GameServerManager.create_server(player_manager) var err := GameServerManager.create_server(player_manager)
if err != OK: if err != OK:
push_error("couldn't create a server") push_error("couldn't create a server")
change_level.call_deferred(load(path)) change_level.call_deferred(path)
print(get_tree().get_root())
else: else:
var map_dir := DirAccess.open("res://scenes/maps/maps/") var map_dir := DirAccess.open("res://scenes/maps/maps/")
if map_dir: if map_dir:
@ -45,18 +46,26 @@ func _on_create_button_pressed() -> void:
if err != OK: if err != OK:
push_error("couldn't create a server") push_error("couldn't create a server")
$UI.hide() $UI.hide()
change_level.call_deferred(load(path)) change_level.call_deferred(path)
# Call this function deferred and only on the main authority (server). # Call this function deferred and only on the main authority (server).
func change_level(scene: PackedScene): func change_level(path: String):
# Remove old level if any. # Remove old level if any.
var level = $LevelLoader/CurrentLevel var level = $LevelLoader/CurrentLevel
print("cleaning up the mount node")
for c in level.get_children(): for c in level.get_children():
level.remove_child(c) level.remove_child(c)
c.queue_free() c.queue_free()
# Add new level. # Add new level.
level.add_child(scene.instantiate()) if not ResourceLoader.exists(path):
print(ERR_DOES_NOT_EXIST)
var scene: PackedScene = ResourceLoader.load(path)
if scene.can_instantiate():
var node: Node3D = scene.instantiate()
print("loading map: " + node.name)
level.add_child(node)
else:
print("Can't initialize")
func _on_text_edit_text_changed() -> void: func _on_text_edit_text_changed() -> void:

View File

@ -34,9 +34,8 @@ func _on_player_disconnected(id):
remove_player.rpc_id(1, id) remove_player.rpc_id(1, id)
func _on_player_connected(id): func _on_player_connected(id):
pass if multiplayer.is_server():
#if multiplayer.is_server(): print("Player is connected with id: " + str(id))
#GameServerManager.load_map.rpc_id(id, GameServerManager.current_map)
func _ready() -> void: func _ready() -> void:
multiplayer.peer_connected.connect(_on_player_connected) multiplayer.peer_connected.connect(_on_player_connected)
@ -66,7 +65,8 @@ func create_server(player_data: PlayerManager) -> Error:
func join_server(player_data: PlayerManager, ip: String, port: int) -> Error: func join_server(player_data: PlayerManager, ip: String, port: int) -> Error:
var peer = ENetMultiplayerPeer.new() var peer = ENetMultiplayerPeer.new()
var err = peer.create_client("127.0.0.1", 27015) print("trying to connect to: " + ip + ":" + str(port))
var err = peer.create_client(ip, port)
if err != OK: if err != OK:
return err return err
player_state_global.id = multiplayer.get_remote_sender_id() player_state_global.id = multiplayer.get_remote_sender_id()