namespace PkmnLib.Plugin.Gen7.Scripts.Items;

[ItemScript("healing_item")]
public class HealingItem : ItemScript
{
    private uint _healAmount;

    /// <inheritdoc />
    public HealingItem(IItem item) : base(item)
    {
    }

    /// <inheritdoc />
    public override bool IsItemUsable => true;

    /// <inheritdoc />
    public override ItemTargetType TargetType => ItemTargetType.OwnPokemon;

    /// <inheritdoc />
    public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
    {
        if (parameters == null || !parameters.TryGetValue("heal_amount", out var healAmountObj) ||
            healAmountObj is not int healAmount)
        {
            healAmount = 20;
        }

        _healAmount = (uint)healAmount;
    }

    /// <inheritdoc />
    public override bool IsTargetValid(IPokemon target) => !target.IsFainted && target.CurrentHealth < target.MaxHealth;

    /// <inheritdoc />
    public override void OnUseWithTarget(IPokemon target, EventHook eventHook)
    {
        target.Heal(_healAmount, customEventHook: eventHook);
    }
}