169 lines
4.8 KiB
GDScript
169 lines
4.8 KiB
GDScript
class_name LobbyMenu
|
|
extends Node
|
|
|
|
|
|
#region Onready Variables
|
|
|
|
@onready var lobby_container : Container = $LobbyContainer
|
|
@onready var username : LineEdit = $VBoxContainer/Name
|
|
@onready var lobby_label : Label = $VBoxContainer/HBoxContainer/LobbyLabel
|
|
@onready var steam_lobby_id_button : Button = $VBoxContainer/HBoxContainer/SteamLobbyIdButton
|
|
@onready var disconnect_button : Button = $VBoxContainer/HBoxContainer/Disconnect
|
|
@onready var tab_container : TabContainer = $VBoxContainer/TabContainer
|
|
|
|
@onready var steam_tab : Control = $VBoxContainer/TabContainer/Steam
|
|
@onready var steam_address_entry : LineEdit = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Address
|
|
@onready var steam_host_button : Button = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Host
|
|
@onready var steam_join_button : Button = $VBoxContainer/TabContainer/Steam/PanelContainer/MarginContainer/VBoxContainer/Join
|
|
|
|
@onready var enet_address_entry : LineEdit = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/Address
|
|
@onready var enet_host_toggle : CheckButton = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/HostToggleContainer/Host
|
|
@onready var enet_join_button : Button = $VBoxContainer/TabContainer/ENet/PanelContainer/MarginContainer/VBoxContainer/Join
|
|
|
|
#endregion
|
|
|
|
|
|
#region Variables
|
|
|
|
var steam_lobby_id : String = ""
|
|
|
|
#endregion
|
|
|
|
|
|
#region Signals
|
|
|
|
signal disconnect_button_pressed()
|
|
|
|
signal steam_host_pressed(new_username : String)
|
|
signal steam_join_pressed(new_username : String)
|
|
|
|
signal enet_host_toggled_on(new_username : String)
|
|
signal enet_host_toggled_off()
|
|
signal enet_join_pressed(new_username : String)
|
|
|
|
#endregion
|
|
|
|
|
|
#region Godot Functions
|
|
|
|
func _ready() -> void:
|
|
#set username to steam username
|
|
username.text = "username"
|
|
|
|
disconnect_button.pressed.connect(_on_disconnet_button_pressed)
|
|
|
|
#steam
|
|
if Global.steam_connected == true:
|
|
username.text = Steam.getPersonaName()
|
|
|
|
steam_lobby_id_button.pressed.connect(_on_steam_lobby_id_button_pressed)
|
|
steam_host_button.pressed.connect(_on_steam_host_pressed)
|
|
steam_join_button.pressed.connect(_on_steam_join_pressed)
|
|
|
|
#enet
|
|
enet_host_toggle.toggled.connect(_on_enet_host_toggled)
|
|
enet_join_button.pressed.connect(_on_enet_join_pressed)
|
|
|
|
if Global.steam_connected == false:
|
|
tab_container.remove_child(steam_tab)
|
|
|
|
#endregion
|
|
|
|
|
|
#region Public Functions
|
|
|
|
func reset_visible() -> void:
|
|
steam_lobby_id_button.hide()
|
|
disconnect_button.hide()
|
|
clear_lobby_text()
|
|
username.show()
|
|
|
|
#steam
|
|
steam_join_button.show()
|
|
steam_address_entry.show()
|
|
steam_host_button.show()
|
|
|
|
#enet
|
|
tab_container.tabs_visible = true
|
|
tab_container.show()
|
|
enet_address_entry.show()
|
|
enet_join_button.show()
|
|
|
|
func request_lobby_list() -> void:
|
|
for child in lobby_container.get_children():
|
|
child.queue_free()
|
|
|
|
Steam.requestLobbyList()
|
|
|
|
func set_lobby_text(new_names : Array[String]) -> void:
|
|
clear_lobby_text()
|
|
|
|
for new_name in new_names:
|
|
var name_label : Label = Label.new()
|
|
name_label.text = new_name
|
|
lobby_container.add_child(name_label)
|
|
|
|
func clear_lobby_text() -> void:
|
|
var lobby_container_children = lobby_container.get_children()
|
|
for child in lobby_container_children:
|
|
child.free()
|
|
|
|
func update_steam_lobby_id_button():
|
|
steam_lobby_id_button.show()
|
|
steam_lobby_id = Global.steam_lobby_id
|
|
|
|
#endregion
|
|
|
|
|
|
#region Signal Functions
|
|
func _on_disconnet_button_pressed() -> void:
|
|
disconnect_button_pressed.emit()
|
|
|
|
func _on_steam_host_pressed() -> void:
|
|
steam_host_pressed.emit(username.text)
|
|
steam_join_button.hide()
|
|
tab_container.tabs_visible = false
|
|
steam_address_entry.hide()
|
|
steam_host_button.hide()
|
|
username.hide()
|
|
|
|
func _on_steam_join_pressed() -> void:
|
|
Global.steam_lobby_id = steam_address_entry.text
|
|
steam_join_pressed.emit(username.text)
|
|
steam_join_button.hide()
|
|
tab_container.tabs_visible = false
|
|
steam_address_entry.hide()
|
|
steam_host_button.hide()
|
|
username.hide()
|
|
disconnect_button.show()
|
|
|
|
func _on_enet_host_toggled(toggled_on : bool) -> void:
|
|
if toggled_on:
|
|
enet_address_entry.hide()
|
|
enet_join_button.hide()
|
|
username.hide()
|
|
enet_host_toggled_on.emit(username.text)
|
|
tab_container.tabs_visible = false
|
|
return
|
|
|
|
tab_container.tabs_visible = true
|
|
enet_host_toggled_off.emit()
|
|
enet_address_entry.show()
|
|
enet_join_button.show()
|
|
username.show()
|
|
|
|
func _on_enet_join_pressed() -> void:
|
|
if enet_address_entry.text.is_empty() == false:
|
|
Global.enet_address = enet_address_entry.text
|
|
|
|
tab_container.tabs_visible = false
|
|
enet_join_pressed.emit(username.text)
|
|
enet_join_button.hide()
|
|
tab_container.hide()
|
|
username.hide()
|
|
disconnect_button.show()
|
|
|
|
func _on_steam_lobby_id_button_pressed():
|
|
DisplayServer.clipboard_set(steam_lobby_id)
|
|
|
|
#endregion
|