StoryPause.gd 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. extends Control
  2. var selected_index := 0
  3. @export var options: Array[Label]
  4. @onready var cursor: TextureRect = $Control/Cursor
  5. var active := false
  6. @export var is_pause := true
  7. signal option_1_selected
  8. signal option_2_selected
  9. signal option_3_selected
  10. signal option_4_selected
  11. func _process(_delta: float) -> void:
  12. if active:
  13. handle_inputs()
  14. cursor.global_position.y = options[selected_index].global_position.y + 4
  15. cursor.global_position.x = options[selected_index].global_position.x - 10
  16. func handle_inputs() -> void:
  17. if Input.is_action_just_pressed("ui_down"):
  18. selected_index += 1
  19. if Input.is_action_just_pressed("ui_up"):
  20. selected_index -= 1
  21. selected_index = clamp(selected_index, 0, options.size() - 1)
  22. if Input.is_action_just_pressed("ui_accept"):
  23. option_selected()
  24. if Input.is_action_just_pressed("pause"):
  25. close()
  26. func option_selected() -> void:
  27. emit_signal("option_" + str(selected_index + 1) + "_selected")
  28. func open_settings() -> void:
  29. active = false
  30. $SettingsMenu.open()
  31. await $SettingsMenu.closed
  32. active = true
  33. func open() -> void:
  34. if is_pause:
  35. Global.game_paused = true
  36. AudioManager.play_global_sfx("pause")
  37. get_tree().paused = true
  38. show()
  39. await get_tree().physics_frame
  40. active = true
  41. func close() -> void:
  42. active = false
  43. selected_index = 0
  44. hide()
  45. for i in 2:
  46. await get_tree().physics_frame
  47. Global.game_paused = false
  48. get_tree().paused = false