multiplayer: added option for upnp

This commit is contained in:
Simon Ward 2026-01-27 20:16:53 +13:00
parent caaa09e517
commit cc4c593745
2 changed files with 16 additions and 6 deletions

View file

@ -113,7 +113,12 @@ text = "Menu
"
horizontal_alignment = 1
[node name="ServerButton2" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"]
[node name="DisableUPNPButton" type="CheckButton" parent="UI/Menu/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Disable UPNP
"
[node name="ServerButton" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Host
"
@ -131,5 +136,5 @@ text = "Enter Address"
_spawnable_scenes = PackedStringArray("uid://cfceg80unq0pe")
spawn_path = NodePath("..")
[connection signal="pressed" from="UI/Menu/MarginContainer/VBoxContainer/ServerButton2" to="." method="_on_server_button_pressed"]
[connection signal="pressed" from="UI/Menu/MarginContainer/VBoxContainer/ServerButton" to="." method="_on_server_button_pressed"]
[connection signal="pressed" from="UI/Menu/MarginContainer/VBoxContainer/ClientButton" to="." method="_on_client_button_pressed"]

View file

@ -2,6 +2,7 @@ extends Node3D
@onready var menu = $UI/Menu
@onready var address_entry = $UI/Menu/MarginContainer/VBoxContainer/LineEdit
@onready var disable_upnp = $UI/Menu/MarginContainer/VBoxContainer/DisableUPNPButton
const port = 9999
const player_scene = preload("res://player/player.tscn")
@ -12,15 +13,19 @@ func _on_server_button_pressed() -> void:
peer.create_server(port)
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(add_player)
multiplayer.peer_disconnected.connect(remove_player)
multiplayer.peer_disconnected.connect(remove_player)
add_player(multiplayer.get_unique_id())
upnp_setup()
if not disable_upnp.button_pressed:
upnp_setup()
func _on_client_button_pressed() -> void:
var address = "localhost"
if not disable_upnp.button_pressed:
address = address_entry.text
menu.hide()
peer.create_client(address_entry.text, port)
peer.create_client(address.text, port)
multiplayer.multiplayer_peer = peer
func add_player(peer_id):