extends Area2D

const STATES: Array[CompressedTexture2D] = [
	preload("res://assets/textures/survivor_slot.png"),
	preload("res://assets/textures/survivor_slot_highlighted.png"),
]

@onready var sprite: Sprite2D = $Sprite2D

var highlighted: bool = false:
	set(new_value):
		highlighted = new_value
		if new_value:
			sprite.texture = STATES[1]
		else:
			sprite.texture = STATES[0]

func is_occupied():
	return get_children().any(func (child): return child.is_in_group("survivor"))

func drop(object: Node2D):
	object.reparent(self)

func _on_mouse_entered():
	var da = GlobalInput.dragged_object
	if da == null:
		return
	
	var object_is_survivor = da.is_in_group("survivor")
	var spot_is_free = not is_occupied()
	var spot_is_not_source = not is_ancestor_of(da)
	
	if object_is_survivor && spot_is_free && spot_is_not_source:
		highlighted = true
		GlobalInput.set_drop_spot(self)

func _on_mouse_exited():
	if GlobalInput.drop_spot == self:
		highlighted = false
		GlobalInput.set_drop_spot(null)