extends CanvasLayer @export var address = "127.0.0.1" @export var port = 8910 var peer #var nick = "NO_NICKNAME" # Called when the node enters the scene tree for the first time. func _ready(): multiplayer.peer_connected.connect(peer_connected) multiplayer.peer_disconnected.connect(peer_disconnected) multiplayer.connected_to_server.connect(connected_to_server) multiplayer.connection_failed.connect(connection_failed) pass # Replace with function body. ### Server and Client func peer_connected(id): print("Peer connected: ", id) ### Server and Client func peer_disconnected(id): print("Peer disconnected: ", id) GameManager.players.erase(id) if id == 1: print("Server Disconnected !!!!!") var tree = get_children() print("Children: ", tree) for child in $Map.get_children(): child.queue_free() self.show() var players = get_tree().get_nodes_in_group("Player") for i in players: if i.name == str(id): i.queue_free() break ### Client func connected_to_server(): print("Connected to server :)") SendPlayerInformation.rpc_id(1, $Nickname.text, multiplayer.get_unique_id()) #SendPlayerInformation(nick, multiplayer.get_unique_id()) ### Client func connection_failed(): print("Disconnected from server :(") @rpc("any_peer") func SendPlayerInformation(nickname, id): var me = multiplayer.get_unique_id() var sender_id = multiplayer.get_remote_sender_id() print(me, ": got info on ", id, " from ", sender_id) if !GameManager.players.has(id): GameManager.players[id] ={ "name" : nickname, "id" : id, "score": 0 } if multiplayer.is_server(): print(me, ": Is Server!") for i in GameManager.players: print(me, ": Sending(?) player ", i) SendPlayerInformation.rpc(GameManager.players[i].name, i) @rpc("any_peer","call_local") func StartGame(): var me = multiplayer.get_unique_id() print(me, ": Starting Game\n", me, ": Players: ", GameManager.players) var scene = load("res://test_map.tscn").instantiate() #get_tree().root.add_child(scene) $Map.add_child(scene) self.hide() func hostGame(): peer = ENetMultiplayerPeer.new() var error = peer.create_server(port, 2) if error != OK: print("cannot host: " + error) return peer.get_host().compress(ENetConnection.COMPRESS_RANGE_CODER) multiplayer.set_multiplayer_peer(peer) print("Waiting For Players!") func _on_host_button_down(): hostGame() SendPlayerInformation($Nickname.text, multiplayer.get_unique_id()) #SendPlayerInformation(nick, multiplayer.get_unique_id()) func _on_join_button_down(): peer = ENetMultiplayerPeer.new() peer.create_client(address, port) peer.get_host().compress(ENetConnection.COMPRESS_RANGE_CODER) multiplayer.set_multiplayer_peer(peer) func _on_start_button_down(): StartGame.rpc()