using Cirno.Scripts.Resources;
using Godot;

namespace Cirno.Scripts.Interactables;

public partial class ItemDrop : RigidBody2D
{
    [Export] public LootItem ItemToDrop { get; set; }

    [Export] public float StartingSpeed { get; set; } = 40f;
    
    private RandomNumberGenerator _rng = new();
    public override void _Ready()
    {
        var dropInstance = ItemToDrop.Spawn(this, true);
        
        //Node dropInstance = dropScene.Instantiate();
        //AddChild(dropInstance);
        CallDeferred(MethodName.DelayedAddOwner, dropInstance);
        
        float angle = _rng.RandfRange(0, Mathf.Tau); // 0 to 2π
        Vector2 direction = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)).Normalized();

        // Apply impulse in that direction
        ApplyImpulse(direction * StartingSpeed);
    }

    private void DelayedAddOwner(Node2D node)
    {
        node.Owner = this;
    }
}