Files
Decked-Out-Defense/level_select.gd

100 lines
2.7 KiB
GDScript

class_name MenuLevelSelect extends Control
@export var icons: Array[Texture] = []
@export var cassette_image: Texture
var biomes: Dictionary[String, HBoxContainer] = {}
var selected_biome: String = ""
var levels: Array[FloatingElement] = []
@export var level_scene: PackedScene
func _ready() -> void:
#create_classes()
make_level_labels()
func make_level_labels() -> void:
for x: int in 10:
var margin: FloatingElement = level_scene.instantiate() as FloatingElement
add_child(margin)
levels.append(margin)
margin.set_text("Level " + str(x))
margin.dest = Vector2(x * 50.0, 0.0)
func move_right() -> void:
for x: FloatingElement in levels:
x.dest += (Vector2.LEFT * 50.0)
func move_left() -> void:
for x: FloatingElement in levels:
x.dest += (Vector2.RIGHT * 50.0)
func create_classes() -> void:
var centre: Vector2 = Vector2(get_viewport_rect().size.x / 2.0, get_viewport_rect().size.y / 2.0)
biomes["Engineer"] = create_sprite("Engineer", icons[0])
biomes["Engineer"].set_position(centre + Vector2(-32.0, 0.0 - 32.0))
biomes["Mage"] = create_sprite("Mage", icons[1])
biomes["Mage"].set_position(centre + Vector2(-32.0, 80.0 - 32.0))
biomes["ThirdClass"] = create_sprite("ThirdClass", icons[2])
biomes["ThirdClass"].set_position(centre + Vector2(-32.0, 160.0 - 32.0))
biomes["FourthClass"] = create_sprite("FourthClass", icons[3])
biomes["FourthClass"].set_position(centre + Vector2(-32.0, 240.0 - 32.0))
selected_biome = "Engineer"
$Label.text = selected_biome
func move_down() -> void:
for x: HBoxContainer in biomes.values():
var tween: Tween = create_tween()
tween.tween_property(x, "position", x.position + Vector2(0.0, -80.0), 0.3)
var y: int = biomes.keys().find(selected_biome)
if y + 1 >= biomes.keys().size():
y = -1
selected_biome = biomes.keys()[y + 1]
$Label.text = selected_biome
func move_up() -> void:
for x: HBoxContainer in biomes.values():
var tween: Tween = create_tween()
tween.tween_property(x, "position", x.position + Vector2(0.0, 80.0), 0.3)
var y: int = biomes.keys().find(selected_biome)
if y - 1 < 0:
y = biomes.keys().size()
selected_biome = biomes.keys()[y - 1]
$Label.text = selected_biome
func _process(delta: float) -> void:
if Input.is_action_just_pressed("Move Backward"):
move_down()
if Input.is_action_just_pressed("Move Forward"):
move_up()
if Input.is_action_just_pressed("Move Right"):
move_right()
if Input.is_action_just_pressed("Move Left"):
move_left()
func create_sprite(text: String, icon: Texture) -> HBoxContainer:
var hbox: HBoxContainer = HBoxContainer.new()
var sprite: TextureRect = TextureRect.new()
var label: Label = Label.new()
add_child(hbox)
hbox.add_child(sprite)
hbox.add_child(label)
label.text = text
sprite.texture = icon
return hbox