Added first setup of level-based system
This commit is contained in:
99
level_select.gd
Normal file
99
level_select.gd
Normal file
@@ -0,0 +1,99 @@
|
||||
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
|
||||
Reference in New Issue
Block a user