Update to new Arbutils
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:
@@ -3,18 +3,13 @@
|
||||
|
||||
using namespace CreatureLib::Library;
|
||||
|
||||
CreatureSpecies::CreatureSpecies(uint16_t id, const ArbUt::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const ArbUt::CaseInsensitiveConstString& growthRate, uint8_t captureRate)
|
||||
CreatureSpecies::CreatureSpecies(uint16_t id, const ArbUt::StringView& name, const SpeciesVariant* defaultVariant,
|
||||
float genderRatio, const ArbUt::StringView& growthRate, uint8_t captureRate)
|
||||
: _name(name), _id(id), _genderRate(genderRatio), _growthRate(growthRate), _captureRate(captureRate), _variants(1) {
|
||||
AssertNotNull(defaultVariant)
|
||||
SetVariant("default"_cnc, defaultVariant);
|
||||
}
|
||||
|
||||
bool CreatureSpecies::TryGetVariant(const ArbUt::CaseInsensitiveConstString& name,
|
||||
ArbUt::BorrowedPtr<const SpeciesVariant>& out) const noexcept {
|
||||
return TryGetVariant(name.GetHash(), out);
|
||||
}
|
||||
bool CreatureSpecies::TryGetVariant(uint32_t hash, ArbUt::BorrowedPtr<const SpeciesVariant>& out) const noexcept {
|
||||
auto find = _variants.GetStdMap().find(hash);
|
||||
if (find == _variants.end())
|
||||
@@ -23,7 +18,7 @@ bool CreatureSpecies::TryGetVariant(uint32_t hash, ArbUt::BorrowedPtr<const Spec
|
||||
return true;
|
||||
}
|
||||
|
||||
void CreatureSpecies::SetVariant(const ArbUt::CaseInsensitiveConstString& name, const SpeciesVariant* variant) {
|
||||
void CreatureSpecies::SetVariant(const ArbUt::StringView& name, const SpeciesVariant* variant) {
|
||||
_variants.GetStdMap().insert({name, std::unique_ptr<const SpeciesVariant>(variant)});
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#define CREATURELIB_CREATURESPECIES_HPP
|
||||
|
||||
#include <Arbutils/Collections/Dictionary.hpp>
|
||||
#include <Arbutils/ConstString.hpp>
|
||||
#include <Arbutils/Memory/BorrowedPtr.hpp>
|
||||
#include <Arbutils/StringView.hpp>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
@@ -16,43 +16,44 @@ namespace CreatureLib::Library {
|
||||
creatures with.
|
||||
*/
|
||||
class CreatureSpecies {
|
||||
const ArbUt::CaseInsensitiveConstString _name;
|
||||
const ArbUt::StringView _name;
|
||||
uint16_t _id;
|
||||
float _genderRate;
|
||||
const ArbUt::CaseInsensitiveConstString _growthRate;
|
||||
const ArbUt::StringView _growthRate;
|
||||
uint8_t _captureRate;
|
||||
ArbUt::Dictionary<uint32_t, std::unique_ptr<const SpeciesVariant>> _variants;
|
||||
|
||||
public:
|
||||
CreatureSpecies(uint16_t id, const ArbUt::CaseInsensitiveConstString& name,
|
||||
const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const ArbUt::CaseInsensitiveConstString& growthRate, uint8_t captureRate);
|
||||
CreatureSpecies(uint16_t id, const ArbUt::StringView& name, const SpeciesVariant* defaultVariant,
|
||||
float genderRatio, const ArbUt::StringView& growthRate, uint8_t captureRate);
|
||||
|
||||
virtual ~CreatureSpecies() noexcept { _variants.Clear(); }
|
||||
|
||||
inline uint16_t GetId() const noexcept { return _id; }
|
||||
inline float GetGenderRate() const noexcept { return _genderRate; }
|
||||
inline const ArbUt::CaseInsensitiveConstString& GetGrowthRate() const noexcept { return _growthRate; }
|
||||
inline const ArbUt::StringView& GetGrowthRate() const noexcept { return _growthRate; }
|
||||
inline uint8_t GetCaptureRate() const noexcept { return _captureRate; }
|
||||
|
||||
[[nodiscard]] inline bool HasVariant(const ArbUt::CaseInsensitiveConstString& key) const noexcept {
|
||||
[[nodiscard]] inline bool HasVariant(const ArbUt::BasicStringView& key) const noexcept {
|
||||
return _variants.Has(key);
|
||||
}
|
||||
[[nodiscard]] inline bool HasVariant(uint32_t hash) const noexcept { return _variants.Has(hash); }
|
||||
[[nodiscard]] bool TryGetVariant(const ArbUt::CaseInsensitiveConstString& name,
|
||||
ArbUt::BorrowedPtr<const SpeciesVariant>& out) const noexcept;
|
||||
[[nodiscard]] inline bool TryGetVariant(const ArbUt::BasicStringView& name,
|
||||
ArbUt::BorrowedPtr<const SpeciesVariant>& out) const noexcept {
|
||||
return TryGetVariant(name.GetHash(), out);
|
||||
}
|
||||
[[nodiscard]] bool TryGetVariant(uint32_t hash, ArbUt::BorrowedPtr<const SpeciesVariant>& out) const noexcept;
|
||||
[[nodiscard]] inline ArbUt::BorrowedPtr<const SpeciesVariant>
|
||||
GetVariant(const ArbUt::CaseInsensitiveConstString& key) const {
|
||||
GetVariant(const ArbUt::BasicStringView& key) const {
|
||||
return _variants.Get(key);
|
||||
}
|
||||
[[nodiscard]] inline ArbUt::BorrowedPtr<const SpeciesVariant> GetVariant(uint32_t key) const {
|
||||
return _variants.Get(key);
|
||||
}
|
||||
[[nodiscard]] Gender GetRandomGender(ArbUt::Random& rand) const noexcept;
|
||||
[[nodiscard]] inline const ArbUt::CaseInsensitiveConstString& GetName() const { return _name; }
|
||||
[[nodiscard]] inline const ArbUt::StringView& GetName() const { return _name; }
|
||||
|
||||
void SetVariant(const ArbUt::CaseInsensitiveConstString& name, const SpeciesVariant* variant);
|
||||
void SetVariant(const ArbUt::StringView& name, const SpeciesVariant* variant);
|
||||
|
||||
inline const ArbUt::Dictionary<uint32_t, std::unique_ptr<const SpeciesVariant>>& GetVariantsIterator() const {
|
||||
return _variants;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <algorithm>
|
||||
|
||||
const CreatureLib::Library::TalentIndex
|
||||
CreatureLib::Library::SpeciesVariant::GetTalentIndex(const ArbUt::CaseInsensitiveConstString& talent) const {
|
||||
CreatureLib::Library::SpeciesVariant::GetTalentIndex(const ArbUt::StringView& talent) const {
|
||||
for (size_t i = 0; i < _talents.Count(); i++) {
|
||||
if (_talents.At(i) == talent) {
|
||||
return TalentIndex(false, i);
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace CreatureLib::Library {
|
||||
*/
|
||||
class SpeciesVariant {
|
||||
protected:
|
||||
ArbUt::CaseInsensitiveConstString _name;
|
||||
ArbUt::StringView _name;
|
||||
float _height;
|
||||
float _weight;
|
||||
uint32_t _baseExperience;
|
||||
@@ -24,22 +24,20 @@ namespace CreatureLib::Library {
|
||||
private:
|
||||
ArbUt::List<uint8_t> _types;
|
||||
Library::StatisticSet<uint16_t> _baseStatistics;
|
||||
ArbUt::List<ArbUt::CaseInsensitiveConstString> _talents;
|
||||
ArbUt::List<ArbUt::CaseInsensitiveConstString> _secretTalents;
|
||||
ArbUt::List<ArbUt::StringView> _talents;
|
||||
ArbUt::List<ArbUt::StringView> _secretTalents;
|
||||
std::unique_ptr<const LearnableAttacks> _attacks;
|
||||
|
||||
public:
|
||||
SpeciesVariant(const ArbUt::CaseInsensitiveConstString& name, float height, float weight,
|
||||
uint32_t baseExperience, const ArbUt::List<uint8_t>& types,
|
||||
Library::StatisticSet<uint16_t> baseStats,
|
||||
const ArbUt::List<ArbUt::CaseInsensitiveConstString>& talents,
|
||||
const ArbUt::List<ArbUt::CaseInsensitiveConstString>& secretTalents,
|
||||
const LearnableAttacks* attacks)
|
||||
SpeciesVariant(const ArbUt::StringView& name, float height, float weight, uint32_t baseExperience,
|
||||
const ArbUt::List<uint8_t>& types, Library::StatisticSet<uint16_t> baseStats,
|
||||
const ArbUt::List<ArbUt::StringView>& talents,
|
||||
const ArbUt::List<ArbUt::StringView>& secretTalents, const LearnableAttacks* attacks)
|
||||
: _name(name), _height(height), _weight(weight), _baseExperience(baseExperience), _types((types)),
|
||||
_baseStatistics(baseStats), _talents(talents), _secretTalents(secretTalents), _attacks(attacks){};
|
||||
virtual ~SpeciesVariant() = default;
|
||||
|
||||
inline const ArbUt::CaseInsensitiveConstString& GetName() const { return _name; }
|
||||
inline const ArbUt::StringView& GetName() const { return _name; }
|
||||
inline float GetHeight() const { return _height; }
|
||||
inline float GetWeight() const { return _weight; }
|
||||
inline uint32_t GetBaseExperience() const { return _baseExperience; }
|
||||
@@ -52,7 +50,7 @@ namespace CreatureLib::Library {
|
||||
}
|
||||
[[nodiscard]] inline const size_t GetTalentCount() const noexcept { return _talents.Count(); }
|
||||
[[nodiscard]] inline const size_t GetSecretTalentCount() const noexcept { return _secretTalents.Count(); }
|
||||
[[nodiscard]] const ArbUt::CaseInsensitiveConstString& GetTalent(const TalentIndex& index) const {
|
||||
[[nodiscard]] const ArbUt::StringView& GetTalent(const TalentIndex& index) const {
|
||||
if (index.IsSecret() && _secretTalents.Count() > 0) {
|
||||
auto i = index.GetIndex();
|
||||
if (i > _secretTalents.Count())
|
||||
@@ -64,7 +62,7 @@ namespace CreatureLib::Library {
|
||||
i = _talents.Count();
|
||||
return _talents.At(i);
|
||||
}
|
||||
[[nodiscard]] const TalentIndex GetTalentIndex(const ArbUt::CaseInsensitiveConstString& talent) const;
|
||||
[[nodiscard]] const TalentIndex GetTalentIndex(const ArbUt::StringView& talent) const;
|
||||
|
||||
[[nodiscard]] inline ArbUt::BorrowedPtr<const CreatureLib::Library::LearnableAttacks>
|
||||
GetLearnableAttacks() const {
|
||||
@@ -73,12 +71,8 @@ namespace CreatureLib::Library {
|
||||
[[nodiscard]] inline TalentIndex GetRandomTalent(ArbUt::Random* rand) const noexcept {
|
||||
return TalentIndex(false, rand->Get(_talents.Count()));
|
||||
}
|
||||
[[nodiscard]] inline const ArbUt::List<ArbUt::CaseInsensitiveConstString>& GetTalents() const {
|
||||
return _talents;
|
||||
}
|
||||
[[nodiscard]] inline const ArbUt::List<ArbUt::CaseInsensitiveConstString>& GetSecretTalents() const {
|
||||
return _secretTalents;
|
||||
}
|
||||
[[nodiscard]] inline const ArbUt::List<ArbUt::StringView>& GetTalents() const { return _talents; }
|
||||
[[nodiscard]] inline const ArbUt::List<ArbUt::StringView>& GetSecretTalents() const { return _secretTalents; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user