global_input.gd 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 dragging_disabled = false
  7. var dragged_object: Node2D = null
  8. var drop_spot: Node2D = null
  9. var original_z: int = 0
  10. func is_dragging() -> bool:
  11. return dragged_object != null
  12. func start_dragging(object: Node2D):
  13. assert(object != null)
  14. stop_dragging()
  15. if dragging_disabled:
  16. return
  17. dragged_object = object
  18. original_z = dragged_object.z_index
  19. dragged_object.z_index = 1000
  20. func stop_dragging():
  21. if dragged_object != null:
  22. if drop_spot != null:
  23. drop_spot.drop(dragged_object)
  24. dragged_object.position = Vector2.ZERO
  25. dragged_object.rotation = 0.0
  26. dragged_object.z_index = original_z
  27. dragged_object = null
  28. func set_drop_spot(spot: Node2D):
  29. assert(spot == null || spot.has_method("drop"))
  30. drop_spot = spot
  31. func toggle_fullscreen():
  32. var current_mode = DisplayServer.window_get_mode()
  33. if current_mode in FULL_SCREEN_MODES:
  34. DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
  35. else:
  36. DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
  37. func _input(event: InputEvent):
  38. if event.is_action_pressed("toggle_fullscreen"):
  39. toggle_fullscreen()
  40. elif event is InputEventMouseMotion && is_dragging():
  41. dragged_object.global_position = event.global_position