WIP: Trying to add multiplayer

This commit is contained in:
2025-01-22 09:09:11 +01:00
parent fe08da9d4c
commit 37e4e42d51
5 changed files with 53 additions and 16 deletions

View File

@ -28,7 +28,7 @@ const MAX_CONNECTIONS = 20
var players_loaded = 0
var player_info = {"name": "Name"}
var players = {}
#var players = {}
func _on_host_pressed() -> void:
var peer = ENetMultiplayerPeer.new()
@ -36,8 +36,8 @@ func _on_host_pressed() -> void:
if error:
print(error)
multiplayer.multiplayer_peer = peer
players[1] = player_info
send_player_information.rpc("host", multiplayer.get_unique_id())
ServerManager.Players[1] = player_info
player_connected.emit(1, player_info)
@ -55,7 +55,7 @@ func load_game(game_scene_path):
func player_loaded():
if multiplayer.is_server():
players_loaded += 1
if players_loaded == players.size():
if players_loaded == ServerManager.players.size():
players_loaded = 0
@ -71,23 +71,25 @@ func _on_join_pressed() -> void:
func _on_player_connected(id: Variant, player_info: Variant) -> void:
print(player_info)
send_player_information.rpc_id(1, "test", multiplayer.get_unique_id())
_register_player.rpc_id(id, player_info)
@rpc("any_peer", "reliable")
func _register_player(new_player_info):
var new_player_id = multiplayer.get_remote_sender_id()
players[new_player_id] = new_player_info
player_connected.emit(new_player_id, new_player_info)
pass
#var new_player_id = multiplayer.get_remote_sender_id()
#players[new_player_id] = new_player_info
#player_connected.emit(new_player_id, new_player_info)
func _on_player_disconnected(id: Variant) -> void:
pass
players.erase(id)
ServerManager.Players.erase(id)
player_disconnected.emit(id)
func _on_connected_ok():
var peer_id = multiplayer.get_unique_id()
players[peer_id] = player_info
#ServerManager.players[peer_id] = player_info
player_connected.emit(peer_id, player_info)
@ -96,10 +98,20 @@ func _on_connected_fail():
func _on_server_disconnected() -> void:
multiplayer.multiplayer_peer = null
players.clear()
ServerManager.Players.clear()
server_disconnected.emit()
@rpc("call_local", "any_peer")
func send_player_information(name, id):
if !ServerManager.Players.has(id):
ServerManager.Players[id] = {
"name": name,
"id": id,
"score": 0
}
if multiplayer.is_server():
for i in ServerManager.Players:
send_player_information.rpc(ServerManager.Players[i], name, i)
@rpc("call_local", "reliable", "any_peer")
func start_game():