#include "SpeciesVariant.hpp" #include #include const std::vector& 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::Library::Statistic stat) const { return _baseStatistics.GetStat(stat); } const CreatureLib::Library::TalentIndex CreatureLib::Library::SpeciesVariant::GetTalentIndex(const ConstString& talent) const { for (size_t i = 0; i < _talents.size(); i++) { if (_talents.at(i) == talent) { return TalentIndex(false, i); } } for (size_t i = 0; i < _secretTalents.size(); i++) { if (_secretTalents.at(i) == talent) { return TalentIndex(true, i); } } throw CreatureException("The given talent is not a valid talent for this creature."); } CreatureLib::Library::TalentIndex CreatureLib::Library::SpeciesVariant::GetRandomTalent(Arbutils::Random* rand) const { return TalentIndex(false, rand->Get(_talents.size())); } const CreatureLib::Library::LearnableAttacks* CreatureLib::Library::SpeciesVariant::GetLearnableAttacks() const { return _attacks; } CreatureLib::Library::SpeciesVariant::SpeciesVariant(ConstString name, float height, float weight, uint32_t baseExperience, std::vector types, CreatureLib::Library::StatisticSet baseStats, std::vector talents, std::vector 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; }