AchievementContainer.gd 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class_name AchievementContainer
  2. extends HBoxContainer
  3. var achievement_id := 0
  4. var selected := false
  5. var unlocked := false
  6. const ICON_RECTS := [
  7. Vector2i(0, 0), Vector2i(1, 0), Vector2i(2, 0), Vector2i(3, 0),
  8. Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1),
  9. Vector2i(0, 2), Vector2i(1, 2), Vector2i(2, 2),
  10. Vector2i(0, 3), Vector2i(1, 3), Vector2i(2, 3),
  11. Vector2i(0, 4), Vector2i(1, 4), Vector2i(2, 4),
  12. Vector2i(0, 5), Vector2i(1, 5), Vector2i(2, 5),
  13. Vector2i(0, 6), Vector2i(1, 6), Vector2i(2, 6),
  14. Vector2i(0, 7), Vector2i(1, 7), Vector2i(2, 7),
  15. Vector2i(3, 1), Vector2i(3, 2), Vector2i(3, 4)
  16. ]
  17. const ACHIEVEMENT_NAMES := [
  18. "TITLE_SMB1_CLEAR", "TITLE_SMBLL_CLEAR", "TITLE_SMBS_CLEAR", "TITLE_SMBANN_CLEAR",
  19. "TITLE_SMB1_CHALLENGE", "TITLE_SMBLL_CHALLENGE", "TITLE_SMBS_CHALLENGE",
  20. "TITLE_SMB1_BOO", "TITLE_SMBLL_BOO", "TITLE_SMBS_BOO",
  21. "TITLE_SMB1_GOLD_BOO", "TITLE_SMBLL_GOLD_BOO", "TITLE_SMBS_GOLD_BOO",
  22. "TITLE_SMB1_BRONZE", "TITLE_SMBLL_BRONZE", "TITLE_SMBS_BRONZE",
  23. "TITLE_SMB1_SILVER", "TITLE_SMBLL_SILVER", "TITLE_SMBS_SILVER",
  24. "TITLE_SMB1_GOLD", "TITLE_SMBLL_GOLD", "TITLE_SMBS_GOLD",
  25. "TITLE_SMB1_RUN", "TITLE_SMBLL_RUN", "TITLE_SMBS_RUN",
  26. "TITLE_ANN_PRANK", "TITLE_SMBLL_WORLD9", "TITLE_COMPLETION"
  27. ]
  28. const ACHIEVEMENT_DESCS := [
  29. "DESC_SMB1_CLEAR", "DESC_SMBLL_CLEAR", "DESC_SMBS_CLEAR", "DESC_SMBANN_CLEAR",
  30. "DESC_SMB1_CHALLENGE", "DESC_SMBLL_CHALLENGE", "DESC_SMBS_CHALLENGE",
  31. "DESC_SMB1_BOO", "DESC_SMBLL_BOO", "DESC_SMBS_BOO",
  32. "DESC_SMB1_GOLD_BOO", "DESC_SMBLL_GOLD_BOO", "DESC_SMBS_GOLD_BOO",
  33. "DESC_SMB1_BRONZE", "DESC_SMBLL_BRONZE", "DESC_SMBS_BRONZE",
  34. "DESC_SMB1_SILVER", "DESC_SMBLL_SILVER", "DESC_SMBS_SILVER",
  35. "DESC_SMB1_GOLD", "DESC_SMBLL_GOLD", "DESC_SMBS_GOLD",
  36. "DESC_SMB1_RUN", "DESC_SMBLL_RUN", "DESC_SMBS_RUN",
  37. "DESC_ANN_PRANK", "DESC_SMBLL_WORLD9", "DESC_COMPLETION"
  38. ]
  39. var progress := 0
  40. var total_needed := 0
  41. func _ready() -> void:
  42. setup_visuals()
  43. set_active(false)
  44. func setup_visuals() -> void:
  45. var achievement_name = "TITLE_LOCKED_ACHIEVEMENT"
  46. var rect = Vector2i(3, 3)
  47. if unlocked:
  48. achievement_name = ACHIEVEMENT_NAMES[achievement_id]
  49. rect = ICON_RECTS[achievement_id]
  50. $PanelContainer.modulate = Color.WHITE
  51. %Title.text = achievement_name
  52. %Description.text = ACHIEVEMENT_DESCS[achievement_id]
  53. %Icon.region_rect = Rect2(rect * 32, Vector2(32, 32))
  54. %Progress.visible = not unlocked and total_needed > 0
  55. %ProgressBar.max_value = total_needed
  56. %ProgressBar.value = progress
  57. %TotalGot.text = str(progress)
  58. %TotalNeeded.text = "/" + str(total_needed)
  59. func set_active(active := false) -> void:
  60. $Cursor.modulate.a = int(active)
  61. $PanelContainer/MarginContainer/HBoxContainer/VBoxContainer/AutoScrollContainer.is_active = active
  62. $PanelContainer/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/AutoScrollContainer2.is_active = active