cadastery/scripts/ui/play_menu.gd

48 lines
1.3 KiB
GDScript

extends Panel
@onready var _name_edit: LineEdit = $MarginContainer/GridContainer/NameEdit
@onready var _ip_edit: LineEdit = $MarginContainer/GridContainer/IpEdit
@onready var _host_button: Button = $MarginContainer/GridContainer/HostButton
@onready var _join_button: Button = $MarginContainer/GridContainer/JoinButton
@onready var _error_label: Label = $ErrorLabel
func _ready() -> void:
if OS.has_feature("dedicated_server") or DisplayServer.get_name() == "headless":
Networker.host_game(true)
return
_host_button.pressed.connect(_on_host_button_pressed)
_join_button.pressed.connect(_on_join_button_pressed)
Networker.network_error.connect(_on_networker_network_error)
_error_label.text = ""
_name_edit.grab_focus()
func _display_error(message: String) -> void:
_error_label.text = message
func _on_host_button_pressed() -> void:
Networker.set_local_player_info(_name_edit.text)
Networker.host_game()
func _on_join_button_pressed() -> void:
var ip: String = _ip_edit.text
if not ip.is_valid_ip_address():
_display_error("Invalid IP address")
return
_join_button.disabled = true
_host_button.disabled = true
Networker.set_local_player_info(_name_edit.text)
Networker.join_game(_ip_edit.text)
func _on_networker_network_error(message: String) -> void:
_join_button.disabled = false
_host_button.disabled = false
_display_error(message)