AchievementMenu.gd 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class_name AchievementMenu
  2. extends Node
  3. const ACHIEVEMENT_CONTAINER = ("uid://8wnmuhtwu8ib")
  4. var total_unlocked := 0
  5. static var unlocked_achievements := "0000000000000000000000000000"
  6. func _ready() -> void:
  7. unlocked_achievements = Global.achievements
  8. spawn_achievement_containers()
  9. $BG/Border/MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer.get_child(0).grab_focus()
  10. Global.get_node("GameHUD").hide()
  11. var percent = int((float(total_unlocked) / Global.achievements.length()) * 100)
  12. %Progress.text = str(percent) + "% "
  13. if percent == 100:
  14. %Progress.modulate = Color("FFB259")
  15. func _process(_delta: float) -> void:
  16. if Input.is_action_just_pressed("ui_back"):
  17. Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
  18. func spawn_achievement_containers() -> void:
  19. var idx := 0
  20. for i in Global.achievements:
  21. if Global.HIDDEN_ACHIEVEMENTS.has(idx) and Global.achievements[idx] == "0":
  22. idx += 1
  23. continue
  24. var container = load(ACHIEVEMENT_CONTAINER).instantiate()
  25. container.achievement_id = idx
  26. container.unlocked = i == "1" or Global.debug_mode
  27. if i == "1":
  28. total_unlocked += 1
  29. else:
  30. if $ProgressCalculators.has_node(str(idx)):
  31. container.total_needed = $ProgressCalculators.get_node(str(idx)).target_number
  32. container.progress = $ProgressCalculators.get_node(str(idx)).get_progress()
  33. $BG/Border/MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer.add_child(container)
  34. idx += 1
  35. func _exit_tree() -> void:
  36. Global.get_node("GameHUD").show()