extends State class_name BeeTravelling @export var target : Drone = null @onready var bee : Bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works var return_to_hive : bool = false var moving_to : Vector2 = Vector2(0,0) func enter(_msg : Dictionary = {}) -> void: return_to_hive = false ## Get the next target location from the bee if bee.just_gathering: target = bee.get_current_director() # We want to go back the way we came if !target: Log.pr("No director around, returning to hive") ## If there is no other director, just go straight back home state_transition.emit(self, "Returning") bee.just_gathering = false else: target = bee.get_next_target() # If we have no target, we are returning to the hive if !target: return_to_hive = true else: moving_to = target.get_global_position() bee.bee_position_animation.play("Flying") func update(_delta : float) -> void: if return_to_hive: state_transition.emit(self, "Returning") return func physics_update(delta : float) -> void: if target: if bee.position.distance_to(target.position) > 3: bee.velocity = (moving_to - bee.position).normalized() * bee.speed * delta bee.move_and_collide(bee.velocity) bee.bee_body.look_at(target.position) else: # Bee has arrived at location, if its the hive or a collector drone do the things if(target.name == "CollectorDrone"): state_transition.emit(self, "Gathering") else: state_transition.emit(self, "Idle")