Files
Super-Mario-Bros.-Remastere…/Scripts/UI/AchievementMenu.gd
2025-09-13 16:30:32 +01:00

44 lines
1.5 KiB
GDScript

class_name AchievementMenu
extends Node
const ACHIEVEMENT_CONTAINER = ("uid://8wnmuhtwu8ib")
var total_unlocked := 0
static var unlocked_achievements := "0000000000000000000000000000"
func _ready() -> void:
unlocked_achievements = Global.achievements
spawn_achievement_containers()
$BG/Border/MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer.get_child(0).grab_focus()
Global.get_node("GameHUD").hide()
var percent = int((float(total_unlocked) / Global.achievements.length()) * 100)
%Progress.text = str(percent) + "% "
if percent == 100:
%Progress.modulate = Color("FFB259")
func _process(_delta: float) -> void:
if Input.is_action_just_pressed("ui_back"):
Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
func spawn_achievement_containers() -> void:
var idx := 0
for i in Global.achievements:
if Global.HIDDEN_ACHIEVEMENTS.has(idx) and Global.achievements[idx] == "0":
idx += 1
continue
var container = load(ACHIEVEMENT_CONTAINER).instantiate()
container.achievement_id = idx
container.unlocked = i == "1" or Global.debug_mode
if i == "1":
total_unlocked += 1
else:
if $ProgressCalculators.has_node(str(idx)):
container.total_needed = $ProgressCalculators.get_node(str(idx)).target_number
container.progress = $ProgressCalculators.get_node(str(idx)).get_progress()
$BG/Border/MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer.add_child(container)
idx += 1
func _exit_tree() -> void:
Global.get_node("GameHUD").show()