extends Node
class_name SpawnManager2D

@export var scene: PackedScene
@export var minCount = 1
@export var maxCount = 2
@export var spawnRange: Rect2 = Rect2(0, 0, 0, 0)
var _currentCount = 0


# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	_spawn_minimum()

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	pass

func _spawn_minimum() -> void:
	while _currentCount < minCount and _currentCount < maxCount:
		_spawn_random()

func _random_pos() -> Vector2:
	return Vector2(randf_range(spawnRange.position[0], spawnRange.size[0]), randf_range(spawnRange.position[1], spawnRange.size[1]))

func _spawn_random() -> void:
	var pos = _random_pos()
	_spawn_creature(pos)
	_currentCount += 1

func _spawn_creature(position: Vector2) -> void:
	var instance = scene.instantiate()
	instance.set_position(position)
	add_child(instance)
	if instance.has_signal("died"):
		#instance.died.connect(GameManager.foodManager._spawn_food_on_position)
		instance.died.connect(_on_entity_died)
		
func _on_entity_died() -> void:
	_currentCount = max(0, _currentCount-1)
	call_deferred("_spawn_minimum")
