GhostSelect.gd 888 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. extends Control
  2. var selected_index := 0
  3. var active := false
  4. signal selected
  5. signal cancelled
  6. func _ready() -> void:
  7. pass
  8. func open() -> void:
  9. show()
  10. await get_tree().physics_frame
  11. active = true
  12. func _process(_delta: float) -> void:
  13. if active == false: return
  14. if Input.is_action_just_pressed("ui_down"):
  15. selected_index += 1
  16. elif Input.is_action_just_pressed("ui_up"):
  17. selected_index -= 1
  18. selected_index = clamp(selected_index, 0, 1)
  19. if Input.is_action_just_pressed("ui_accept"):
  20. selected.emit()
  21. SpeedrunHandler.ghost_enabled = bool(selected_index)
  22. close()
  23. elif Input.is_action_just_pressed("ui_back"):
  24. close()
  25. cancelled.emit()
  26. var idx := 0
  27. for i in [%NoGhost, %Ghost]:
  28. i.get_node("Cursor").modulate.a = int(selected_index == idx)
  29. idx += 1
  30. func load_ghost() -> void:
  31. SpeedrunHandler.load_best_marathon()
  32. func close() -> void :
  33. hide()
  34. active = false