50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
|
#ifndef PKMNLIB_CREATEPOKEMON_HPP
|
||
|
#define PKMNLIB_CREATEPOKEMON_HPP
|
||
|
|
||
|
#include "Pokemon.hpp"
|
||
|
|
||
|
#include <utility>
|
||
|
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<CreatureLib::Library::Gender>(-1);
|
||
|
uint8_t _coloring = 0;
|
||
|
std::string _heldItem = "";
|
||
|
uint32_t _identifier = 0;
|
||
|
std::vector<std::tuple<const Library::MoveData*, CreatureLib::Battling::AttackLearnMethod>> _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
|