class_name ClientNetworking extends Node var peer: ENetMultiplayerPeer func start_client(address: String = "127.0.0.1", port: int = 8080) -> void: if peer: return push_warning("Client Starting... Address: ", address, " Port: ", port) peer = ENetMultiplayerPeer.new() peer.create_client(address, port) multiplayer.multiplayer_peer = peer multiplayer.connected_to_server.connect(client_connected_to_server) multiplayer.server_disconnected.connect(client_disconnected_from_server) multiplayer.connection_failed.connect(client_connection_failed_to_server) func _wait_for_connection() -> void: while not peer: await get_tree().process_frame while peer.get_connection_status() != 2: await get_tree().process_frame func _wait_close_connection(): close_connection() while peer: await get_tree().process_frame func client_connected_to_server() -> void: assert(false, "This method needs to be overridden...") func client_disconnected_from_server() -> void: assert(false, "This method needs to be overridden...") func client_connection_failed_to_server() -> void: assert(false, "This method needs to be overridden...") func close_connection() -> void: if not peer: return push_warning("Disconnected from, server...") unset_client() func unset_client() -> void: if not peer: return multiplayer.connected_to_server.disconnect(client_connected_to_server) multiplayer.connection_failed.disconnect(client_connection_failed_to_server) multiplayer.server_disconnected.disconnect(client_disconnected_from_server) peer.close() peer = null