TeleportPipeArea.gd 930 B

1234567891011121314151617181920212223242526272829303132
  1. @tool
  2. class_name TeleportPipeArea
  3. extends PipeArea
  4. @export var connecting_pipe: PipeArea = null
  5. func _ready() -> void:
  6. update_visuals()
  7. func update_visuals() -> void:
  8. if Engine.is_editor_hint():
  9. $ArrowJoint.show()
  10. $ArrowJoint.rotation = get_vector(enter_direction).angle() - deg_to_rad(90)
  11. $ArrowJoint/Arrow.flip_v = exit_only
  12. if connecting_pipe != null:
  13. $Node2D/CenterContainer/Label.text = str(connecting_pipe.pipe_id)
  14. else:
  15. hide()
  16. func run_player_check(player: Player) -> void:
  17. if Global.player_action_pressed(get_input_direction(enter_direction), player.player_id) and can_enter:
  18. can_enter = false
  19. Checkpoint.passed = false
  20. player.enter_pipe(self, false)
  21. await get_tree().create_timer(1, false).timeout
  22. $CanvasLayer.show()
  23. await get_tree().create_timer(0.25, false).timeout
  24. connecting_pipe.exit_pipe()
  25. can_enter = true
  26. for i in 2:
  27. await get_tree().physics_frame
  28. $CanvasLayer.hide()