QuestSelect.gd 728 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. extends Control
  2. signal selected
  3. signal cancelled
  4. var active := false
  5. var selected_index := 0
  6. func _process(_delta: float) -> void:
  7. if active:
  8. handle_input()
  9. func open() -> void:
  10. show()
  11. await get_tree().process_frame
  12. [%FirstQuest, %SecondQuest][int(Global.second_quest)].grab_focus()
  13. active = true
  14. func handle_input() -> void:
  15. if Input.is_action_just_pressed("ui_accept"):
  16. select()
  17. close()
  18. elif Input.is_action_just_pressed("ui_back"):
  19. Global.second_quest = false
  20. close()
  21. cancelled.emit()
  22. return
  23. func set_index(idx := false) -> void:
  24. selected_index = int(idx)
  25. func select() -> void:
  26. Global.second_quest = bool(selected_index)
  27. selected.emit()
  28. close()
  29. func close() -> void:
  30. active = false
  31. hide()