global_input.gd 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. extends Node
  2. const FULL_SCREEN_MODES: Array[DisplayServer.WindowMode] = [
  3. DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN,
  4. DisplayServer.WINDOW_MODE_FULLSCREEN,
  5. ]
  6. var dragged_object: Node2D = null
  7. var drop_spot: Node2D = null
  8. func is_dragging() -> bool:
  9. return dragged_object != null
  10. func start_dragging(object: Node2D):
  11. assert(object != null)
  12. stop_dragging()
  13. dragged_object = object
  14. func stop_dragging():
  15. if dragged_object != null:
  16. if drop_spot != null:
  17. drop_spot.drop(dragged_object)
  18. dragged_object.position = Vector2.ZERO
  19. dragged_object = null
  20. func set_drop_spot(spot: Node2D):
  21. assert(spot == null || spot.has_method("drop"))
  22. drop_spot = spot
  23. func toggle_fullscreen():
  24. var current_mode = DisplayServer.window_get_mode()
  25. if current_mode in FULL_SCREEN_MODES:
  26. DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
  27. else:
  28. DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
  29. func _input(event: InputEvent):
  30. if event.is_action_pressed("toggle_fullscreen"):
  31. toggle_fullscreen()
  32. elif event is InputEventMouseMotion && is_dragging():
  33. dragged_object.global_position = event.global_position