Slide.gd 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. @icon("res://common/graphics/icons/godot_icon_slide.svg")
  2. class_name Slide
  3. extends Node2D
  4. # Display slide content
  5. signal finished
  6. @export var always_visible: bool = false
  7. var action_finish := "ui_accept"
  8. var center_offset: Vector2
  9. func _ready() -> void:
  10. center_offset = _compute_center_offset()
  11. disable()
  12. func disable() -> void:
  13. set_process_unhandled_key_input(false)
  14. func enable() -> void:
  15. set_visible(true)
  16. set_process_unhandled_key_input(true)
  17. func get_center() -> Vector2:
  18. return get_position() + center_offset
  19. func gently_hide() -> void:
  20. if always_visible:
  21. return
  22. set_visible(false)
  23. func set_action_finish(action_name: String) -> void:
  24. action_finish = action_name
  25. func _unhandled_key_input(event: InputEvent) -> void:
  26. if event.is_action(action_finish) and event.is_pressed():
  27. finished.emit()
  28. get_viewport().set_input_as_handled()
  29. func _compute_center_offset() -> Vector2:
  30. var w: float = ProjectSettings.get("display/window/size/viewport_width")
  31. var h: float = ProjectSettings.get("display/window/size/viewport_height")
  32. return Vector2(w * scale.x / 2, h * scale.y / 2)