71 lines
3.0 KiB
C++
71 lines
3.0 KiB
C++
#include "SpeciesVariant.hpp"
|
|
#include <algorithm>
|
|
#include <utility>
|
|
|
|
const std::vector<uint8_t>& CreatureLib::Library::SpeciesVariant::GetTypes() const {
|
|
return _types;
|
|
}
|
|
|
|
size_t CreatureLib::Library::SpeciesVariant::GetTypeCount() const {
|
|
return _types.size();
|
|
}
|
|
|
|
uint8_t CreatureLib::Library::SpeciesVariant::GetType(size_t index) const {
|
|
return _types[index];
|
|
}
|
|
|
|
uint32_t CreatureLib::Library::SpeciesVariant::GetStatistic(CreatureLib::Core::Statistic stat) const {
|
|
return _baseStatistics.GetStat(stat);
|
|
}
|
|
|
|
const std::string& CreatureLib::Library::SpeciesVariant::GetTalent(int32_t index) const {
|
|
if (index < 0){
|
|
index = -index - 1;
|
|
return _secretTalents[index];
|
|
}
|
|
return _talents[index];
|
|
}
|
|
|
|
/*const CreatureLib::Library::CreatureMoves *CreatureLib::Library::SpeciesVariant::GetCreatureMoves() const {
|
|
return &_moves;
|
|
}*/
|
|
|
|
int8_t CreatureLib::Library::SpeciesVariant::GetTalentIndex(const std::string& talent) const{
|
|
auto i = std::find(_talents.begin(), _talents.end(), talent);
|
|
if (i != _talents.end()){
|
|
return std::distance(_talents.begin(), i);
|
|
}
|
|
i = std::find(_secretTalents.begin(), _secretTalents.end(), talent);
|
|
if (i != _secretTalents.end()){
|
|
return std::distance(_secretTalents.begin(), i);
|
|
}
|
|
throw CreatureException("The given talent is not a valid talent for this creature.");
|
|
}
|
|
|
|
int8_t CreatureLib::Library::SpeciesVariant::GetRandomTalent(CreatureLib::Core::Random *rand) const {
|
|
return rand->Get(_talents.size());
|
|
}
|
|
|
|
const CreatureLib::Library::LearnableAttacks *CreatureLib::Library::SpeciesVariant::GetLearnableAttacks() const {
|
|
return _attacks;
|
|
}
|
|
|
|
CreatureLib::Library::SpeciesVariant::SpeciesVariant(std::string name, float height, float weight,
|
|
uint32_t baseExperience, std::vector<uint8_t> types,
|
|
CreatureLib::Core::StatisticSet<uint16_t > baseStats,
|
|
std::vector<std::string> talents,
|
|
std::vector<std::string> secretTalents, const LearnableAttacks* attacks)
|
|
: __Name(std::move(name)),
|
|
__Height(height),
|
|
__Weight(weight),
|
|
__BaseExperience(baseExperience),
|
|
_types(std::move(types)),
|
|
_baseStatistics(baseStats),
|
|
_talents(std::move(talents)),
|
|
_secretTalents(std::move(secretTalents)),
|
|
_attacks(attacks)
|
|
{}
|
|
|
|
CreatureLib::Library::SpeciesVariant::~SpeciesVariant() {
|
|
delete _attacks;
|
|
} |