CreatureLib/src/Library/CreatureData/SpeciesVariant.cpp

59 lines
2.4 KiB
C++

#include "SpeciesVariant.hpp"
#include <algorithm>
size_t CreatureLib::Library::SpeciesVariant::GetTypeCount() const {
return _types.size();
}
std::string 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);
}
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(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);
}
//TODO: implement better exception.
throw;
}
int8_t CreatureLib::Library::SpeciesVariant::GetRandomTalent(CreatureLib::Core::Random *rand) const {
return rand->Get(_talents.size());
}
CreatureLib::Library::SpeciesVariant::SpeciesVariant(std::string name, float height, float weight,
uint32_t baseExperience, std::vector<std::string> types,
CreatureLib::Core::StatisticSet baseStats,
std::vector<std::string> talents,
std::vector<std::string> secretTalents)
: __Name(name),
__Height(height),
__Weight(weight),
__BaseExperience(baseExperience),
_types(types),
_baseStatistics(baseStats),
_talents(talents),
_secretTalents(secretTalents)
{}