2025-02-06 08:56:39 +00:00
|
|
|
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
|
2025-02-12 12:07:21 +00:00
|
|
|
var game_root: GameRoot
|
|
|
|
var chosen_map: String
|
2025-02-06 08:56:39 +00:00
|
|
|
|
2025-02-18 12:30:48 +00:00
|
|
|
|
2025-02-06 08:56:39 +00:00
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
|
|
func _ready() -> void:
|
2025-02-12 12:07:21 +00:00
|
|
|
game_root = helpers.get_root_node()
|
2025-02-06 08:56:39 +00:00
|
|
|
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()
|
|
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2025-02-18 12:30:48 +00:00
|
|
|
|
2025-02-06 08:56:39 +00:00
|
|
|
func _on_map_list_item_selected(index: int) -> void:
|
2025-02-12 12:07:21 +00:00
|
|
|
chosen_map = map_list.get_item_text(index)
|
2025-02-06 08:56:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
func _on_create_pressed() -> void:
|
2025-02-12 12:07:21 +00:00
|
|
|
game_root.create_server(27015, 30, false, chosen_map)
|
|
|
|
var server_data := helpers.get_server_node()
|
|
|
|
game_root.load_map.emit(server_data.current_map)
|
2025-02-06 08:56:39 +00:00
|
|
|
visible = false
|
|
|
|
|
|
|
|
|
|
|
|
func _on_join_server_pressed() -> void:
|
|
|
|
var ip: String = $JoinServerMenu/Host/TextEdit.text
|
|
|
|
var port: int = $JoinServerMenu/Port/TextEdit.text.to_int()
|
2025-02-12 12:07:21 +00:00
|
|
|
var err := game_root.join_server(ip, port)
|
|
|
|
var server_data: ServerData = null
|
2025-02-06 08:56:39 +00:00
|
|
|
visible = false
|