using System.Collections.Generic;
using PkmnLibSharp.Battling;
using PkmnLibSharp.Library;
using PkmnLibSharp.Library.Items;
using PkmnLibSharp.Library.Moves;

namespace PkmnLibSharpTests.Battling
{
    public class PokemonBuilder : BasePokemonBuilder<Pokemon, LearnedMove>
    {
        public PokemonBuilder(BattleLibrary library, string species, byte level) : base(library, species, level)
        {
        }


        protected override Pokemon Finalize(Species species, Forme forme, Item? heldItem, IReadOnlyCollection<LearnedMove> moves, Nature nature)
        {
            var pkmn = new Pokemon(Library, species, forme!, Level, Experience, Uid, Gender, Coloring,
                heldItem, Nickname, HiddenAbility, (byte) AbilityIndex, moves, IVs, EVs, nature);
            return pkmn;
        }

        protected override LearnedMove CreateLearnedMove(MoveData move, byte maxUses, MoveLearnMethod learnMethod)
        {
            return new LearnedMove(move, maxUses, learnMethod);
        }
    }
}