extends Control @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. func peer_connected(id): print("Peer connected: " + str(id)) if multiplayer.is_server(): for p in GameManager.players: SendPlayerInformation(p["name"], p["id"]).rpc_id(id) func peer_disconnected(id): print("Peer disconnected: " + str(id)) func connected_to_server(): print("Connected to server :)") SendPlayerInformation(nick, multiplayer.get_unique_id()) func connection_failed(): print("Disconnected from server :(") # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): pass @rpc("any_peer") func SendPlayerInformation(name, id): print("got info on " + str(id)) var sender_id = multiplayer.get_remote_sender_id() #TODO: clients to only accept data from server print(" from " + str(sender_id)) if !GameManager.players.has(id): GameManager.players[id] ={ "name" : name, "id" : id, "score": 0 } if multiplayer.is_server(): for i in GameManager.Players: SendPlayerInformation.rpc(GameManager.Players[i].name, i) @rpc("any_peer","call_local") func StartGame(): var scene = load("res://test_map.tscn").instantiate() get_tree().root.add_child(scene) self.hide() func _on_host_button_down(): peer = ENetMultiplayerPeer.new() var err = peer.create_server(port, 32) if err != OK: print("Error Starting Server :(") return multiplayer.set_multiplayer_peer(peer) print("Waiting for players...") func _on_join_button_down(): peer = ENetMultiplayerPeer.new() peer.create_client(address, port) multiplayer.set_multiplayer_peer(peer) func _on_start_button_down(): StartGame.rpc() func _on_apply_button_down(): get_node("Apply").disabled = true nick = $Nickname.text if peer.is_connected(): SendPlayerInformation(nick, multiplayer.get_unique_id()) pass # Replace with function body. func _on_nickname_text_changed(): if $Apply.disabled && $Nickname.text != nick: $Apply.disabled = false