86 lines
1.8 KiB
GDScript
86 lines
1.8 KiB
GDScript
class_name ServerForm extends PanelContainer
|
|
|
|
signal connect_button_pressed
|
|
signal host_button_pressed
|
|
|
|
@export var ip_entry: LineEdit
|
|
@export var port_entry: LineEdit
|
|
@export var host_button: Button
|
|
@export var join_button: Button
|
|
@export var ip_field: HBoxContainer
|
|
@export var port_field: HBoxContainer
|
|
@export var players_field: HBoxContainer
|
|
@export var start_button: Button
|
|
|
|
var menu: int = 0
|
|
var hosting: bool = false
|
|
|
|
var ip: String :
|
|
get:
|
|
return ip_entry.text if ip_entry.text != "" else "localhost"
|
|
set(_value):
|
|
return
|
|
|
|
var port: int :
|
|
get:
|
|
return int(port_entry.text) if port_entry.text != "" and port_entry.text.is_valid_int() else Data.DEFAULT_SERVER_PORT
|
|
set(_value):
|
|
return
|
|
|
|
var max_players: int :
|
|
get:
|
|
return int($VBoxContainer/PlayersField/HSlider.value)
|
|
set(_value):
|
|
return
|
|
|
|
|
|
func _on_button_mouse_entered() -> void:
|
|
$AudioStreamPlayer.play()
|
|
|
|
|
|
func _on_button_pressed() -> void:
|
|
if menu == 0:
|
|
Game.scene_switch_main_menu()
|
|
else:
|
|
menu -= 1
|
|
host_button.visible = true
|
|
join_button.visible = true
|
|
ip_field.visible = false
|
|
port_field.visible = false
|
|
players_field.visible = false
|
|
start_button.visible = false
|
|
ip_entry.clear()
|
|
port_entry.clear()
|
|
|
|
|
|
func _on_host_button_pressed() -> void:
|
|
menu += 1
|
|
hosting = true
|
|
host_button.visible = false
|
|
join_button.visible = false
|
|
port_field.visible = true
|
|
players_field.visible = true
|
|
start_button.visible = true
|
|
|
|
|
|
func _on_join_button_pressed() -> void:
|
|
menu += 1
|
|
hosting = false
|
|
host_button.visible = false
|
|
join_button.visible = false
|
|
ip_field.visible = true
|
|
port_field.visible = true
|
|
start_button.visible = true
|
|
|
|
|
|
func _on_start_button_pressed() -> void:
|
|
if hosting:
|
|
host_button_pressed.emit()
|
|
else:
|
|
connect_button_pressed.emit()
|
|
queue_free()
|
|
|
|
|
|
func _on_h_slider_value_changed(value: float) -> void:
|
|
$VBoxContainer/PlayersField/Label2.text = str(int(value))
|