48 lines
1.3 KiB
GDScript
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)
|