DiscoResults.gd 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. extends Control
  2. const RANK_MESSAGES = ["F_RANK_MESSAGE", "D_RANK_MESSAGE", "C_RANK_MESSAGE", "B_RANK_MESSAGE", "A_RANK_MESSAGE", "S_RANK_MESSAGE", "P_RANK_MESSAGE"]
  3. var selected_index := 0
  4. func _ready() -> void:
  5. pass
  6. func open() -> void:
  7. setup_visuals()
  8. show()
  9. set_focus(true)
  10. await get_tree().physics_frame
  11. [%Continue, %Retry, %LevelSelect, %ReturnMenu][selected_index].grab_focus()
  12. func setup_visuals() -> void:
  13. %Score.text = str(Global.score)
  14. var rank_idx = DiscoLevel.RANK_IDs.find(DiscoLevel.current_rank)
  15. %Medal.region_rect.position.x = 16 * (rank_idx + 1)
  16. %RankMessage.text = RANK_MESSAGES[rank_idx]
  17. %RankMessage.modulate = GameHUD.RANK_COLOURS[DiscoLevel.current_rank]
  18. func close() -> void:
  19. hide()
  20. func set_focus(enabled := false) -> void:
  21. for i in [%Continue, %Retry, %LevelSelect, %ReturnMenu]:
  22. i.focus_mode = 0 if enabled == false else 2
  23. func continue_to_next_level() -> void:
  24. Global.current_level.transition_to_next_level()
  25. Global.disco_level_continued.emit()
  26. close()
  27. func set_index(idx := 0) -> void:
  28. selected_index = idx
  29. func restart_level() -> void:
  30. LevelTransition.level_to_transition_to = Level.get_scene_string(Global.world_num, Global.level_num)
  31. Global.reset_values()
  32. DiscoLevel.reset_values()
  33. Global.transition_to_scene("res://Scenes/Levels/LevelTransition.tscn")
  34. close()
  35. func go_to_menu() -> void:
  36. Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
  37. close()