class_name Enemy extends "res://scenes/spaceShip/spaceShip.gd"

@onready var visionArea: VisionArea = $VisionAreas/VisionArea
@onready var visionAreaStop: VisionArea = $VisionAreas/VisionAreaStop
@onready var visionAreaEnemy: VisionArea = $VisionAreas/VisionAreaEnemy
@onready var raycast: RayCast2D = $RayCast2D

@onready var hit = $hit

@export var range: int = 800

func _ready() -> void:
	setVision()
	
func setVision():
	visionArea.changeViewSize(range)
	visionAreaStop.changeViewSize(range-50)
	visionAreaEnemy.changeViewSize(200)
	raycast.target_position.y = -range
	
func _physics_process(delta: float) -> void:
	#print(name, " velocity: ", velocity," velocityMedian: ", getVelocityMedian(), " radius: ", $VisionAreas/VisionAreaStop/CollisionShape2D.shape.radius)
	#if Globals.getPlayer() != null:
		#if getVelocityMedian()*8 > range:
			#visionAreaStop.changeViewSize(getVelocityMedian()*8)
		#global_position.distance_to(Globals.getPlayer().global_position)
	
	if Globals.getPlayer() != null:
		look_at(Globals.getPlayer().global_position)
	var direction = Vector2.RIGHT.rotated(rotation)
	if Globals.getPlayer() != null:
		rotation += PI / 2
	
	if visionArea.has_overlapping_bodies():
		if not raycast.is_colliding():
			attack()
	#if getEnemyList() != []:
		#for i in getEnemyList():
			##print(global_position.distance_to(i.global_position))
			#direction -= Vector2.UP.rotated(rad_to_deg(global_position.angle_to(i.global_position))) * -10
			#break
		#print(self)
		#print(visionAreaEnemy.get_overlapping_bodies())
		#print(getEnemyList())
	if not visionAreaStop.has_overlapping_bodies():
		velocity = velocity.lerp(direction * speed, acceleration * delta)
	else:
		velocity = velocity.lerp(Vector2.ZERO, acceleration * delta)

	move_and_slide()

func _on_hurt_area_hurt(amount: int) -> void:
	hit.play()
	damage(amount)

func getVelocityMedian() -> float:
	var _velocity = velocity
	if _velocity.x < 0:
		_velocity.x *= -1
	if _velocity.y < 0:
		_velocity.y *= -1
	return (_velocity.x + _velocity.y) / 2

func getEnemyList() -> Array:
	var enemies = visionAreaEnemy.get_overlapping_bodies()
	enemies.erase(self)
	return enemies
