#ifndef PKMNLIB_POKEMONSPECIES_HPP #define PKMNLIB_POKEMONSPECIES_HPP #include #include "../Evolutions/EvolutionData.hpp" #include "PokemonForme.hpp" namespace PkmnLib::Library { class PokemonSpecies : public CreatureLib::Library::CreatureSpecies { private: uint8_t _baseHappiness; std::vector _evolutions; public: PokemonSpecies(uint16_t id, const std::string& name, const PokemonForme* defaultVariant, float genderRatio, const std::string& growthRate, uint8_t captureRate, uint8_t baseHappiness) : CreatureSpecies(id, name, defaultVariant, genderRatio, growthRate, captureRate), _baseHappiness(baseHappiness) {} inline uint8_t GetBaseHappiness() const { return _baseHappiness; } inline const PokemonForme* GetDefaultForme() const { return reinterpret_cast(CreatureSpecies::GetVariant("default")); } inline const PokemonForme* GetForme(const std::string& key) const { return reinterpret_cast(CreatureSpecies::GetVariant(key)); } inline void AddEvolution(EvolutionData data) { _evolutions.push_back(data); } const std::vector& GetEvolutions() const { return _evolutions; } }; } #endif // PKMNLIB_POKEMONSPECIES_HPP