chocolate.gd 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. class_name Chocolate
  2. extends Node3D
  3. const COLLECT_ANIM := "collection"
  4. const COLLECT_DURATION := 2.0
  5. @onready var chocolateAnimation: AnimationPlayer = $ChocolateAnimation
  6. @onready var pickupSound: AudioStreamPlayer3D = $ChocolatePickupSound
  7. var _collected := false
  8. func _on_chocolate_tablet_body_entered(body: Node3D) -> void:
  9. if _collected:
  10. return
  11. if body is Walker:
  12. _give_chocolate_to(body)
  13. if body is SeatedVehicle:
  14. _give_chocolate_to_driver_of(body)
  15. func _give_chocolate_to(walker: Walker) -> void:
  16. walker.give_chocolate()
  17. _go_to_pocket.call_deferred(walker)
  18. chocolateAnimation.play(COLLECT_ANIM)
  19. pickupSound.play()
  20. _collected = true
  21. func _give_chocolate_to_driver_of(vehicle: SeatedVehicle) -> void:
  22. var driver = vehicle.get_current_driver()
  23. if driver == null:
  24. return
  25. _give_chocolate_to(driver)
  26. func _go_to_pocket(walker: Walker) -> void:
  27. reparent(walker)
  28. var center_tween = create_tween()
  29. center_tween.tween_property(self, "position", walker.get_pocket_position(), COLLECT_DURATION)
  30. center_tween.tween_callback(queue_free)