namespace PkmnLib.Plugin.Gen7.Scripts.Pokemon;

[Script(ScriptCategory.Pokemon, "requires_recharge")]
public class RequiresRechargeEffect : Script, IScriptForceTurnSelection, IScriptOnBeforeTurnStart
{
    private readonly IPokemon _owner;

    public RequiresRechargeEffect(IPokemon owner)
    {
        _owner = owner;
    }

    /// <inheritdoc />
    public void ForceTurnSelection(IBattle battle, byte sideIndex, byte position, ref ITurnChoice? choice)
    {
        choice = new PassChoice(_owner);
    }

    /// <inheritdoc />
    public void OnBeforeTurnStart(ITurnChoice choice)
    {
        RemoveSelf();
        _owner.BattleData?.Battle.EventHook.Invoke(new DialogEvent("pokemon_must_recharge",
            new Dictionary<string, object>
            {
                { "pokemon", _owner },
            }));
    }
}