#ifndef PKMNLIB_CREATEPOKEMON_HPP #define PKMNLIB_CREATEPOKEMON_HPP #include "Pokemon.hpp" #include namespace PkmnLib::Battling { class CreatePokemon { private: const BattleLibrary* _library; std::string _species; std::string _variant = "default"; uint8_t _level; std::string _nickname = ""; std::string _ability = ""; CreatureLib::Library::Gender _gender = static_cast(-1); uint8_t _coloring = 0; std::string _heldItem = ""; uint32_t _identifier = 0; std::vector> _attacks = {}; uint8_t _ivHp = 0; uint8_t _ivAttack = 0; uint8_t _ivDefense = 0; uint8_t _ivSpAtt = 0; uint8_t _ivSpDef = 0; uint8_t _ivSpeed = 0; uint8_t _evHp = 0; uint8_t _evAttack = 0; uint8_t _evDefense = 0; uint8_t _evSpAtt = 0; uint8_t _evSpDef = 0; uint8_t _evSpeed = 0; public: CreatePokemon(const BattleLibrary* library, std::string species, uint8_t level) : _library(library), _species(std::move(species)), _level(level) {} CreatePokemon* RandomizeIndividualValues(CreatureLib::Core::Random rand = CreatureLib::Core::Random()); CreatePokemon* SetIndividualValue(CreatureLib::Core::Statistic stat, uint8_t value); CreatePokemon* SetEffortValue(CreatureLib::Core::Statistic stat, uint8_t value); Pokemon* Build(); }; } #endif // PKMNLIB_CREATEPOKEMON_HPP