using Godot;
using Godot.Collections;

namespace Cirno.Scripts.Actors;

public partial class ActorSpawner : Node2D, IActivable
{
    [Export]
    public PackedScene ActorPrefab { get; set; }

    [Export] public bool WaitForActorDeath { get; private set; } = true;
    
    public Node2D SpawnedActor { get; private set; }

    public virtual void Spawn()
    {
        SpawnedActor = this.CreateSibling<Node2D>(ActorPrefab);
    }

    public bool Activate(ActivationType activationType = ActivationType.Toggle)
    {
        if (!WaitForActorDeath)
        {
            Spawn();
        }
        else if (SpawnedActor == null)
        {
            Spawn();
        }

        return true;
    }
}