59 lines
2.4 KiB
C++
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)
|
|
{}
|