extends State
class_name BeeTravelling

@export var target : Drone = null

@onready var 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 := {}):
	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")
	
