Files
Decked-Out-Defense/UI/Menus/MainMenu/level_selecter_main_menu.gd
2026-02-08 09:16:17 +11:00

53 lines
1.5 KiB
GDScript

class_name MainMenuLevelSelector extends PanelContainer
signal level_selected(specs: LevelConfig, side_chosen: int)
var side: int = 0
@export var levels: Array[LevelConfig] = []
func _on_button_pressed() -> void:
side = 0
$VBoxContainer/Label.text = tr("LABEL_CAMPAIGN_DESC")
func _on_button_2_pressed() -> void:
side = 1
$VBoxContainer/Label.text = tr("LABEL_ENDLESS_DESC")
func _ready() -> void:
var i: int = 0
for level: LevelConfig in levels:
i += 1
var button: Button = Button.new()
button.text = "Level " + str(i)
$VBoxContainer.add_child(button)
button.pressed.connect(start_level.bind(i - 1))
button.mouse_entered.connect(hover_config.bind(i - 1))
func hover_config(level: int) -> void:
if !side:
var high_score: int = 0
if Data.save_data.level_high_scores.has(levels[level].display_title):
high_score = Data.save_data.level_high_scores[levels[level].display_title]
if high_score > 0:
$VBoxContainer/HighScoreLabel.text = "Highest Wave: " + str(high_score)
else:
$VBoxContainer/HighScoreLabel.text = "Never attempted!"
else:
var high_score: int = 0
if Data.save_data.endless_high_scores.has(levels[level].display_title):
high_score = Data.save_data.endless_high_scores[levels[level].display_title]
if high_score > 0:
$VBoxContainer/HighScoreLabel.text = "Highest B-SIDE Wave: " + str(high_score)
else:
$VBoxContainer/HighScoreLabel.text = "Never attempted!"
func start_level(level: int) -> void:
level_selected.emit(levels[level], side)