Add ConstString to several other places where context isn't changed much during runtime.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -2,18 +2,14 @@
|
||||
|
||||
using namespace CreatureLib::Library;
|
||||
|
||||
CreatureSpecies::CreatureSpecies(uint16_t id, const Arbutils::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const Arbutils::CaseInsensitiveConstString& growthRate, uint8_t captureRate)
|
||||
: _id(id), _genderRate(genderRatio), _growthRate(growthRate), _captureRate(captureRate),
|
||||
_variants({{"default"_cnc, defaultVariant}}), _name(name) {}
|
||||
CreatureSpecies::CreatureSpecies(uint16_t id, const ConstString& name, const SpeciesVariant* defaultVariant,
|
||||
float genderRatio, const ConstString& growthRate, uint8_t captureRate)
|
||||
: _name(name), _id(id), _genderRate(genderRatio), _growthRate(growthRate), _captureRate(captureRate),
|
||||
_variants({{"default"_cnc, defaultVariant}}) {}
|
||||
|
||||
bool CreatureSpecies::HasVariant(const Arbutils::CaseInsensitiveConstString& name) const {
|
||||
return _variants.find(name) != _variants.end();
|
||||
}
|
||||
bool CreatureSpecies::HasVariant(const ConstString& name) const { return _variants.find(name) != _variants.end(); }
|
||||
|
||||
bool CreatureSpecies::TryGetVariant(const Arbutils::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant*& out) const {
|
||||
bool CreatureSpecies::TryGetVariant(const ConstString& name, const SpeciesVariant*& out) const {
|
||||
auto find = _variants.find(name);
|
||||
if (find != _variants.end()) {
|
||||
out = find->second;
|
||||
@@ -22,12 +18,12 @@ bool CreatureSpecies::TryGetVariant(const Arbutils::CaseInsensitiveConstString&
|
||||
return false;
|
||||
}
|
||||
|
||||
const SpeciesVariant* CreatureSpecies::GetVariant(const Arbutils::CaseInsensitiveConstString& name) const {
|
||||
const SpeciesVariant* CreatureSpecies::GetVariant(const ConstString& name) const {
|
||||
auto key = name;
|
||||
return _variants.at(key);
|
||||
}
|
||||
|
||||
void CreatureSpecies::SetVariant(const Arbutils::CaseInsensitiveConstString& name, const SpeciesVariant* variant) {
|
||||
void CreatureSpecies::SetVariant(const ConstString& name, const SpeciesVariant* variant) {
|
||||
auto find = _variants.find(name);
|
||||
if (find != _variants.end()) {
|
||||
delete find->second;
|
||||
|
||||
@@ -7,25 +7,24 @@
|
||||
#include "../Gender.hpp"
|
||||
#include "SpeciesVariant.hpp"
|
||||
|
||||
using ConstString = Arbutils::CaseInsensitiveConstString;
|
||||
|
||||
namespace CreatureLib::Library {
|
||||
/*!
|
||||
\brief This holds the data required for a species of a creature, so the general data we can describe different
|
||||
creatures with.
|
||||
*/
|
||||
class CreatureSpecies {
|
||||
const ConstString _name;
|
||||
uint16_t _id;
|
||||
float _genderRate;
|
||||
const Arbutils::CaseInsensitiveConstString _growthRate;
|
||||
const ConstString _growthRate;
|
||||
uint8_t _captureRate;
|
||||
|
||||
private:
|
||||
std::unordered_map<Arbutils::CaseInsensitiveConstString, const SpeciesVariant*> _variants;
|
||||
Arbutils::CaseInsensitiveConstString _name;
|
||||
std::unordered_map<ConstString, const SpeciesVariant*> _variants;
|
||||
|
||||
public:
|
||||
CreatureSpecies(uint16_t id, const Arbutils::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const Arbutils::CaseInsensitiveConstString& growthRate, uint8_t captureRate);
|
||||
CreatureSpecies(uint16_t id, const ConstString& name, const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const ConstString& growthRate, uint8_t captureRate);
|
||||
|
||||
virtual ~CreatureSpecies() {
|
||||
for (auto v : _variants)
|
||||
@@ -35,22 +34,18 @@ namespace CreatureLib::Library {
|
||||
|
||||
inline uint16_t GetId() const { return _id; }
|
||||
inline float GetGenderRate() const { return _genderRate; }
|
||||
inline const Arbutils::CaseInsensitiveConstString& GetGrowthRate() const { return _growthRate; }
|
||||
inline const ConstString& GetGrowthRate() const { return _growthRate; }
|
||||
inline uint8_t GetCaptureRate() const { return _captureRate; }
|
||||
|
||||
[[nodiscard]] bool HasVariant(const Arbutils::CaseInsensitiveConstString& key) const;
|
||||
[[nodiscard]] bool TryGetVariant(const Arbutils::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant*& out) const;
|
||||
[[nodiscard]] const SpeciesVariant* GetVariant(const Arbutils::CaseInsensitiveConstString& key) const;
|
||||
[[nodiscard]] bool HasVariant(const ConstString& key) const;
|
||||
[[nodiscard]] bool TryGetVariant(const ConstString& name, const SpeciesVariant*& out) const;
|
||||
[[nodiscard]] const SpeciesVariant* GetVariant(const ConstString& key) const;
|
||||
[[nodiscard]] Gender GetRandomGender(Arbutils::Random& rand) const;
|
||||
[[nodiscard]] const Arbutils::CaseInsensitiveConstString& GetName() const { return _name; }
|
||||
[[nodiscard]] const ConstString& GetName() const { return _name; }
|
||||
|
||||
void SetVariant(const Arbutils::CaseInsensitiveConstString& name, const SpeciesVariant* variant);
|
||||
void SetVariant(const ConstString& name, const SpeciesVariant* variant);
|
||||
|
||||
const std::unordered_map<Arbutils::CaseInsensitiveConstString, const SpeciesVariant*>&
|
||||
GetVariantsIterator() const {
|
||||
return _variants;
|
||||
}
|
||||
const std::unordered_map<ConstString, const SpeciesVariant*>& GetVariantsIterator() const { return _variants; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ uint32_t CreatureLib::Library::SpeciesVariant::GetStatistic(CreatureLib::Core::S
|
||||
return _baseStatistics.GetStat(stat);
|
||||
}
|
||||
|
||||
const std::string& CreatureLib::Library::SpeciesVariant::GetTalent(int32_t index) const {
|
||||
const ConstString& CreatureLib::Library::SpeciesVariant::GetTalent(int32_t index) const {
|
||||
if (index < 0) {
|
||||
index = -index - 1;
|
||||
return _secretTalents[index];
|
||||
@@ -20,10 +20,6 @@ const std::string& CreatureLib::Library::SpeciesVariant::GetTalent(int32_t 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()) {
|
||||
@@ -44,11 +40,11 @@ const CreatureLib::Library::LearnableAttacks* CreatureLib::Library::SpeciesVaria
|
||||
return _attacks;
|
||||
}
|
||||
|
||||
CreatureLib::Library::SpeciesVariant::SpeciesVariant(std::string name, float height, float weight,
|
||||
CreatureLib::Library::SpeciesVariant::SpeciesVariant(ConstString 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,
|
||||
std::vector<ConstString> talents,
|
||||
std::vector<ConstString> secretTalents,
|
||||
const LearnableAttacks* attacks)
|
||||
: _name(std::move(name)), _height(height), _weight(weight), _baseExperience(baseExperience),
|
||||
_types(std::move(types)), _baseStatistics(baseStats), _talents(std::move(talents)),
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "../../Core/StatisticSet.hpp"
|
||||
#include "CreatureMoves.hpp"
|
||||
#include "LearnableAttacks.hpp"
|
||||
using ConstString = Arbutils::CaseInsensitiveConstString;
|
||||
|
||||
namespace CreatureLib::Library {
|
||||
/*!
|
||||
@@ -14,7 +15,7 @@ namespace CreatureLib::Library {
|
||||
*/
|
||||
class SpeciesVariant {
|
||||
protected:
|
||||
std::string _name;
|
||||
ConstString _name;
|
||||
float _height;
|
||||
float _weight;
|
||||
uint32_t _baseExperience;
|
||||
@@ -22,19 +23,19 @@ namespace CreatureLib::Library {
|
||||
private:
|
||||
std::vector<uint8_t> _types;
|
||||
const Core::StatisticSet<uint16_t> _baseStatistics;
|
||||
std::vector<std::string> _talents;
|
||||
std::vector<std::string> _secretTalents;
|
||||
std::vector<ConstString> _talents;
|
||||
std::vector<ConstString> _secretTalents;
|
||||
const LearnableAttacks* _attacks;
|
||||
|
||||
public:
|
||||
SpeciesVariant(std::string name, float height, float weight, uint32_t baseExperience,
|
||||
SpeciesVariant(ConstString name, float height, float weight, uint32_t baseExperience,
|
||||
std::vector<uint8_t> types, Core::StatisticSet<uint16_t> baseStats,
|
||||
std::vector<std::string> talents, std::vector<std::string> secretTalents,
|
||||
std::vector<ConstString> talents, std::vector<ConstString> secretTalents,
|
||||
const LearnableAttacks* attacks);
|
||||
|
||||
virtual ~SpeciesVariant();
|
||||
|
||||
inline const std::string& GetName() const { return _name; }
|
||||
inline const ConstString& GetName() const { return _name; }
|
||||
inline float GetHeight() const { return _height; }
|
||||
inline float GetWeight() const { return _weight; }
|
||||
inline uint32_t GetBaseExperience() const { return _baseExperience; }
|
||||
@@ -43,12 +44,12 @@ namespace CreatureLib::Library {
|
||||
[[nodiscard]] uint8_t GetType(size_t index) const;
|
||||
[[nodiscard]] const std::vector<uint8_t>& GetTypes() const;
|
||||
[[nodiscard]] uint32_t GetStatistic(Core::Statistic stat) const;
|
||||
[[nodiscard]] const std::string& GetTalent(int32_t index) const;
|
||||
[[nodiscard]] const ConstString& GetTalent(int32_t index) const;
|
||||
[[nodiscard]] const LearnableAttacks* GetLearnableAttacks() const;
|
||||
[[nodiscard]] int8_t GetTalentIndex(const std::string& talent) const;
|
||||
[[nodiscard]] int8_t GetRandomTalent(Arbutils::Random* rand) const;
|
||||
[[nodiscard]] inline const std::vector<std::string>& GetTalents() const { return _talents; }
|
||||
[[nodiscard]] inline const std::vector<std::string>& GetSecretTalents() const { return _secretTalents; }
|
||||
[[nodiscard]] inline const std::vector<ConstString>& GetTalents() const { return _talents; }
|
||||
[[nodiscard]] inline const std::vector<ConstString>& GetSecretTalents() const { return _secretTalents; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user