From 91e04a00a76f483e737b6bb63df1f8a42bbd78d9 Mon Sep 17 00:00:00 2001 From: AleaJactaEst Date: Mon, 23 Oct 2023 23:09:33 +0200 Subject: [PATCH] adding on client input ip/port to connect to server --- client/scenes/Window.gd | 24 +++++++++--- client/scenes/main.gd | 86 +++++------------------------------------ client/scenes/main.tscn | 16 +++++++- 3 files changed, 43 insertions(+), 83 deletions(-) diff --git a/client/scenes/Window.gd b/client/scenes/Window.gd index 1b80c98..a45d415 100644 --- a/client/scenes/Window.gd +++ b/client/scenes/Window.gd @@ -3,6 +3,9 @@ extends Window var focus_ok:bool = false var last_event = null +@export var listen_ip:String = "" +@export var listen_port:int = 33333 + # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. @@ -17,14 +20,25 @@ func _on_button_pressed(): if $VBoxContainer/TextEdit.get_text() != "": self.hide() #get_parent().get_node("CharacterBody3D").set_enable_event(true) - get_parent().connect_enet($VBoxContainer/TextEdit.get_text()) + get_parent().connect_enet($VBoxContainer/TextEdit.get_text(), listen_ip, listen_port) +func check_testedit(): + if len($VBoxContainer/TextEdit.get_text()) == 0: + $VBoxContainer/Button.set_disabled(true) + return + if len($VBoxContainer/Address.get_text()) == 0: + $VBoxContainer/Button.set_disabled(true) + return + listen_ip = $VBoxContainer/Address.get_text() + listen_port = int($VBoxContainer/Port.get_text()) + if listen_port <= 0 || listen_port >= 65536 : + $VBoxContainer/Button.set_disabled(true) + return + $VBoxContainer/Button.set_disabled(false) + func _on_text_edit_text_changed(value:String): - if len(value) > 0: - $VBoxContainer/Button.disabled = false - else: - $VBoxContainer/Button.disabled = true + check_testedit() func _on_focus_entered(): diff --git a/client/scenes/main.gd b/client/scenes/main.gd index 31d868e..a153266 100644 --- a/client/scenes/main.gd +++ b/client/scenes/main.gd @@ -14,50 +14,26 @@ var account_confirmed:bool = false const PLAYER = preload("res://scenes/player.tscn") -const PORT = 33333 -const ADDR = "127.0.0.1" - var dtls := PacketPeerDTLS.new() var udp := PacketPeerUDP.new() -func test_cert(filename): - print("------", filename) - enet = ENetConnection.new() - print(enet) - #var cert: X509Certificate = X509Certificate.new() - #errorEnet = cert.load(filename) - #print("load cert:", errorEnet) - #print(cert) - #var client_tls_options = TLSOptions.client_unsafe(cert) - #print(client_tls_options) +func create_server_enet(address, port): + print("------ create_server_enet") errorEnet = enet.create_host(10) if errorEnet != OK: print("ERROR ENET.create_host: ", errorEnet) return - #enet.connect_to_host(ADDR, PORT) - #errorEnet = enet.dtls_client_setup(ADDR, client_tls_options) - #print("dtls_client_setup:", errorEnet) - #if errorEnet != OK: - # print("ERROR ENET: ", errorEnet) - # return - dataEnet = enet.connect_to_host(ADDR, PORT, 10) + print("Connect to : " + address + " : " + str(port)) + dataEnet = enet.connect_to_host(address, port, 10) print(dataEnet) if not dataEnet.is_active(): print("ERROR enet.connect_to_host: ", dataEnet.is_active()) return -func create_server_enet(): - print("------ create_server_enet") - test_cert("res://cert.crt") - - -# Called when the node enters the scene tree for the first time. func _ready(): - #test_cert("res://cert.crt") - create_server_enet() - pass # Replace with function body. + enet = ENetConnection.new() func decode_msg(data:PackedByteArray): @@ -197,6 +173,8 @@ func get_event_received(): # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): + if not dataEnet: + return #print("state:", dataEnet.get_state()) get_player_position() if dataEnet.get_state() == ENetPacketPeer.STATE_CONNECTED: @@ -246,54 +224,8 @@ func _process_ter(_delta): return -func _process_bis(_delta): - if not dataEnet.is_active(): - create_server_enet() - elif dataEnet.get_state() == ENetPacketPeer.STATE_CONNECTING: - var res = enet.service(1) - print(res) - elif dataEnet.get_state() == ENetPacketPeer.STATE_CONNECTED: - var res = enet.service(1) - print(res) - var data:PackedByteArray = PackedByteArray() - data.append(len(player_name)) - data.append(123) - errorEnet = dataEnet.send(1, data, 1) - if errorEnet != OK: - print("ERROR ENET: ", errorEnet) - return - #print("<> get_state: ", dataEnet.get_state()) - else: - print("get_state: ", dataEnet.get_state()) - return - - if not connected: - if player_name != "": - create_server_enet() - return - var res = enet.service(1) - print(res) - return - if not connected: - if player_name != "": - create_server_enet() - else: - var data:PackedByteArray = PackedByteArray() - data.append(len(player_name)) - data.append(123) - #print(len(data)) - print("active:", dataEnet.is_active()) - print("state:", dataEnet.get_state()) - print("address:", dataEnet.get_remote_address()) - print("port:", dataEnet.get_remote_port()) - errorEnet = dataEnet.send(1, data, 1) - if errorEnet != OK: - print("ERROR ENET: ", errorEnet) - return - #enet.socket_send(ADDR, PORT, data) - - -func connect_enet(_name:String): +func connect_enet(_name:String, listen_ip:String, listen_port:int): player_name = _name + create_server_enet(listen_ip, listen_port) print("My name:" + player_name) diff --git a/client/scenes/main.tscn b/client/scenes/main.tscn index 65db350..a42514b 100644 --- a/client/scenes/main.tscn +++ b/client/scenes/main.tscn @@ -56,7 +56,7 @@ environment = SubResource("Environment_12j7q") [node name="Window" type="Window" parent="."] title = "Connexion" initial_position = 1 -size = Vector2i(300, 100) +size = Vector2i(300, 200) script = ExtResource("3_uwnj8") [node name="VBoxContainer" type="VBoxContainer" parent="Window"] @@ -71,6 +71,18 @@ layout_mode = 2 text = "Login" horizontal_alignment = 1 +[node name="Address" type="LineEdit" parent="Window/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +text = "127.0.0.1" +placeholder_text = "Address" + +[node name="Port" type="LineEdit" parent="Window/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +text = "33333" +placeholder_text = "Address" + [node name="TextEdit" type="LineEdit" parent="Window/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 @@ -85,5 +97,7 @@ text = "OK" [connection signal="focus_exited" from="Window" to="Window" method="_on_focus_exited"] [connection signal="mouse_entered" from="Window" to="Window" method="_on_mouse_entered"] [connection signal="mouse_exited" from="Window" to="Window" method="_on_mouse_exited"] +[connection signal="text_changed" from="Window/VBoxContainer/Address" to="Window" method="_on_text_edit_text_changed"] +[connection signal="text_changed" from="Window/VBoxContainer/Port" to="Window" method="_on_text_edit_text_changed"] [connection signal="text_changed" from="Window/VBoxContainer/TextEdit" to="Window" method="_on_text_edit_text_changed"] [connection signal="pressed" from="Window/VBoxContainer/Button" to="Window" method="_on_button_pressed"]