global_input.gd 1.5 KB

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