66 lines
1.7 KiB
GDScript
66 lines
1.7 KiB
GDScript
extends Control
|
|
class_name MainMenu
|
|
|
|
const MAP_DIR := "res://scenes/maps/maps/"
|
|
|
|
@onready var map_list: ItemList = $CreateServerMenu/MapList
|
|
@onready var create_server_panel: VBoxContainer = $CreateServerMenu
|
|
@onready var join_server_panel: VBoxContainer = $JoinServerMenu
|
|
|
|
func _get_game_root() -> GameRoot:
|
|
var game_root: GameRoot = find_parent("GameRoot")
|
|
return game_root
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
var map_dir := DirAccess.open(MAP_DIR)
|
|
if map_dir:
|
|
map_dir.list_dir_begin()
|
|
var file_name = map_dir.get_next()
|
|
while file_name != "":
|
|
map_list.add_item(file_name)
|
|
file_name = map_dir.get_next()
|
|
GameServerAutoload.current_map = map_list.get_item_text(0)
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta: float) -> void:
|
|
pass
|
|
|
|
|
|
func _on_join_pressed() -> void:
|
|
if create_server_panel.visible:
|
|
create_server_panel.visible = false
|
|
join_server_panel.visible = true
|
|
|
|
|
|
func _on_create_server_pressed() -> void:
|
|
if join_server_panel.visible:
|
|
join_server_panel.visible = false
|
|
create_server_panel.visible = true
|
|
|
|
|
|
func _on_close_join_pressed() -> void:
|
|
join_server_panel.visible = false
|
|
|
|
|
|
func _on_close_create_pressed() -> void:
|
|
create_server_panel.visible = false
|
|
|
|
func _on_map_list_item_selected(index: int) -> void:
|
|
GameServerAutoload.current_map = map_list.get_item_text(index)
|
|
|
|
|
|
func _on_create_pressed() -> void:
|
|
await GameServerAutoload.create_server(false)
|
|
visible = false
|
|
|
|
|
|
func _on_join_server_pressed() -> void:
|
|
var ip: String = $JoinServerMenu/Host/TextEdit.text
|
|
var port: int = $JoinServerMenu/Port/TextEdit.text.to_int()
|
|
|
|
GameServerAutoload.join_server(ip, port)
|
|
visible = false
|
|
|