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)