Blobby/src/UserInterface/Screens/LevelList.gd

41 lines
1.2 KiB
GDScript

extends ScrollContainer
onready var LEVELS_PATH = "res://src/Levels/"
onready var BUTTON_GROUP : ButtonGroup = load("res://src/UserInterface/Screens/LevelSelectButtonGroup.tres")
onready var vbox: VBoxContainer = $VBoxContainer
func _ready() -> void:
BUTTON_GROUP.connect("pressed", get_node('../Buttons/PlayButton'), "_level_selection_changed")
_fill_level_list()
func _fill_level_list():
var levels = []
var dir = Directory.new()
if dir.open(LEVELS_PATH) == OK:
dir.list_dir_begin()
while true:
var file_name = dir.get_next()
if file_name == "":
break
else:
if(file_name.ends_with(".tscn")):
levels.append(file_name)
if levels.size() != 0:
_spawn_level_options(levels)
func _spawn_level_options(levels: Array):
var first = true
for level in levels:
var check_box = CheckBox.new()
check_box.focus_mode = Control.FOCUS_ALL
check_box.focus_neighbour_left = $"%PlayButton".get_path()
check_box.text = level.trim_suffix(".tscn")
check_box.set_button_group(BUTTON_GROUP)
vbox.add_child(check_box)
if first:
$"%PlayButton".focus_neighbour_right = check_box.get_path()
$"%Controlls".focus_neighbour_right = check_box.get_path()
$"%QuitButton".focus_neighbour_right = check_box.get_path()
first = false
return