using PkmnLib.Dynamic.BattleFlow;

namespace PkmnLib.Plugin.Gen7.Scripts.Side;

[Script(ScriptCategory.Side, "spotlight")]
public class SpotlightEffect : Script, IScriptChangeIncomingTargets, IScriptOnEndTurn
{
    private readonly byte _position;
    private readonly IBattleSide _side;

    public SpotlightEffect(IBattleSide side, byte position)
    {
        _side = side;
        _position = position;
    }

    /// <inheritdoc />
    public void ChangeIncomingTargets(IMoveChoice moveChoice, ref IReadOnlyList<IPokemon?> targets)
    {
        if (!TargetResolver.IsValidTarget(_side.Index, _position, moveChoice.ChosenMove.MoveData.Target,
                moveChoice.User))
            return;
        if (_side.Pokemon[_position] == null)
            return;
        targets = [_side.Pokemon[_position]!];
    }

    /// <inheritdoc />
    public void OnEndTurn(IScriptSource owner, IBattle battle)
    {
        RemoveSelf();
    }
}