Add nullability to large parts of the codebase
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:
@@ -1 +0,0 @@
|
||||
#include "AttackLibrary.hpp"
|
||||
@@ -3,6 +3,6 @@
|
||||
CreatureLib::Library::AttackData::AttackData(const ArbUt::StringView& name, u8 type,
|
||||
CreatureLib::Library::AttackCategory category, u8 power, u8 accuracy,
|
||||
u8 baseUsage, CreatureLib::Library::AttackTarget target, i8 priority,
|
||||
const SecondaryEffect* effect, std::unordered_set<u32> flags)
|
||||
const SecondaryEffect* nullable effect, std::unordered_set<u32> flags)
|
||||
: _name(name), _type(type), _category(category), _basePower(power), _accuracy(accuracy), _baseUsages(baseUsage),
|
||||
_target(target), _priority(priority), _effect(effect), _flags(std::move(flags)) {}
|
||||
|
||||
@@ -22,7 +22,8 @@ namespace CreatureLib::Library {
|
||||
|
||||
public:
|
||||
AttackData(const ArbUt::StringView& name, u8 type, AttackCategory category, u8 power, u8 accuracy, u8 baseUsage,
|
||||
AttackTarget target, i8 priority, const SecondaryEffect* effect, std::unordered_set<u32> flags);
|
||||
AttackTarget target, i8 priority, const SecondaryEffect* nullable effect,
|
||||
std::unordered_set<u32> flags);
|
||||
virtual ~AttackData() = default;
|
||||
|
||||
inline const ArbUt::StringView& GetName() const noexcept { return _name; }
|
||||
|
||||
@@ -10,12 +10,12 @@ namespace CreatureLib::Library {
|
||||
private:
|
||||
float _chance;
|
||||
ArbUt::StringView _effectName;
|
||||
ArbUt::List<EffectParameter*> _parameters;
|
||||
ArbUt::List<EffectParameter * non_null> _parameters;
|
||||
|
||||
public:
|
||||
SecondaryEffect() noexcept : _chance(0), _effectName() {}
|
||||
SecondaryEffect(float chance, const ArbUt::StringView& effectName,
|
||||
const ArbUt::List<EffectParameter*>& parameters) noexcept
|
||||
const ArbUt::List<EffectParameter * non_null>& parameters) noexcept
|
||||
: _chance(chance), _effectName(effectName), _parameters(parameters) {}
|
||||
|
||||
~SecondaryEffect() noexcept {
|
||||
@@ -26,7 +26,7 @@ namespace CreatureLib::Library {
|
||||
|
||||
constexpr inline float GetChance() const noexcept { return _chance; }
|
||||
constexpr inline const ArbUt::StringView& GetEffectName() const noexcept { return _effectName; }
|
||||
const inline ArbUt::List<EffectParameter*>& GetParameters() const noexcept { return _parameters; }
|
||||
const inline ArbUt::List<EffectParameter * non_null>& GetParameters() const noexcept { return _parameters; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "BaseLibrary.hpp"
|
||||
@@ -18,12 +18,12 @@ namespace CreatureLib::Library {
|
||||
|
||||
virtual ~BaseLibrary() noexcept { _values.Clear(); }
|
||||
|
||||
inline virtual void Insert(const ArbUt::StringView& key, const T* value) {
|
||||
inline virtual void Insert(const ArbUt::StringView& key, const T* non_null value) {
|
||||
EnsureNotNull(value)
|
||||
_values.GetStdMap().insert({key.GetHash(), std::unique_ptr<const T>(value)});
|
||||
_listValues.Append(key);
|
||||
}
|
||||
inline virtual void Insert(u32 hashedKey, const T* value) {
|
||||
inline virtual void Insert(u32 hashedKey, const T* non_null value) {
|
||||
EnsureNotNull(value)
|
||||
_values.GetStdMap().insert({hashedKey, std::unique_ptr<const T>(value)});
|
||||
_listValues.Append(hashedKey);
|
||||
|
||||
@@ -14,7 +14,7 @@ struct CreatureSpecies::impl {
|
||||
ArbUt::List<ArbUt::BorrowedPtr<const SpeciesVariant>> _variantsList;
|
||||
std::unordered_set<u32> _flags;
|
||||
|
||||
impl(u16 id, const ArbUt::StringView& name, const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
impl(u16 id, const ArbUt::StringView& name, const SpeciesVariant* non_null defaultVariant, float genderRatio,
|
||||
const ArbUt::StringView& growthRate, u8 captureRate, std::unordered_set<u32> flags)
|
||||
: _name(name), _id(id), _genderRate(genderRatio), _growthRate(growthRate), _captureRate(captureRate),
|
||||
_variantsLookup(1), _variantsList(1), _flags(std::move(flags)) {
|
||||
@@ -60,7 +60,7 @@ struct CreatureSpecies::impl {
|
||||
}
|
||||
[[nodiscard]] inline const ArbUt::StringView& GetName() const noexcept { return _name; }
|
||||
|
||||
void SetVariant(const ArbUt::StringView& name, const SpeciesVariant* variant) {
|
||||
void SetVariant(const ArbUt::StringView& name, const SpeciesVariant* non_null variant) {
|
||||
Ensure(!name.IsEmpty())
|
||||
_variantsList.CreateBack(variant);
|
||||
_variantsLookup.GetStdMap().emplace(name, variant);
|
||||
@@ -106,7 +106,7 @@ ArbUt::BorrowedPtr<const SpeciesVariant> CreatureSpecies::GetVariant(const ArbUt
|
||||
}
|
||||
ArbUt::BorrowedPtr<const SpeciesVariant> CreatureSpecies::GetVariant(u32 key) const { return _impl->GetVariant(key); }
|
||||
Gender CreatureSpecies::GetRandomGender(ArbUt::Random& rand) const noexcept { return _impl->GetRandomGender(rand); }
|
||||
void CreatureSpecies::SetVariant(const ArbUt::StringView& name, const SpeciesVariant* variant) {
|
||||
void CreatureSpecies::SetVariant(const ArbUt::StringView& name, const SpeciesVariant* non_null variant) {
|
||||
_impl->SetVariant(name, variant);
|
||||
}
|
||||
const ArbUt::List<ArbUt::BorrowedPtr<const SpeciesVariant>>& CreatureSpecies::GetVariantsIterator() const {
|
||||
|
||||
@@ -23,8 +23,9 @@ namespace CreatureLib::Library {
|
||||
/// @param captureRate The chance to capture the creature species, between 0 and 255. 255 means instant capture,
|
||||
/// 0 means impossible to capture.
|
||||
/// @param flags A set of flags for use by the developer. These can be used for easy grouping.
|
||||
CreatureSpecies(u16 id, const ArbUt::StringView& name, const SpeciesVariant* defaultVariant, float genderRatio,
|
||||
const ArbUt::StringView& growthRate, u8 captureRate, std::unordered_set<u32> flags = {});
|
||||
CreatureSpecies(u16 id, const ArbUt::StringView& name, const SpeciesVariant* non_null defaultVariant,
|
||||
float genderRatio, const ArbUt::StringView& growthRate, u8 captureRate,
|
||||
std::unordered_set<u32> flags = {});
|
||||
|
||||
virtual ~CreatureSpecies();
|
||||
|
||||
@@ -84,7 +85,7 @@ namespace CreatureLib::Library {
|
||||
/// @brief Appends a variant to the species.
|
||||
/// @param name The unique name of the new variant.
|
||||
/// @param variant The new variant to add.
|
||||
void SetVariant(const ArbUt::StringView& name, const SpeciesVariant* variant);
|
||||
void SetVariant(const ArbUt::StringView& name, const SpeciesVariant* non_null variant);
|
||||
|
||||
/// @brief Returns a list of variants of the species.
|
||||
/// @return A list of variants of the species.
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace CreatureLib::Library {
|
||||
public:
|
||||
impl(const ArbUt::StringView& name, float height, float weight, u32 baseExperience, ArbUt::List<u8> types,
|
||||
Library::StatisticSet<u16> baseStats, ArbUt::List<ArbUt::BorrowedPtr<const Talent>> talents,
|
||||
ArbUt::List<ArbUt::BorrowedPtr<const Talent>> secretTalents, const LearnableAttacks* attacks,
|
||||
ArbUt::List<ArbUt::BorrowedPtr<const Talent>> secretTalents, const LearnableAttacks* non_null attacks,
|
||||
std::unordered_set<u32> flags)
|
||||
: _name(name), _height(height), _weight(weight), _baseExperience(baseExperience),
|
||||
_types(std::move((types))), _baseStatistics(baseStats), _talents(std::move(talents)),
|
||||
@@ -99,7 +99,7 @@ namespace CreatureLib::Library {
|
||||
const ArbUt::List<u8>& types, StatisticSet<u16> baseStats,
|
||||
const ArbUt::List<ArbUt::BorrowedPtr<const Talent>>& talents,
|
||||
const ArbUt::List<ArbUt::BorrowedPtr<const Talent>>& secretTalents,
|
||||
const LearnableAttacks* attacks, const std::unordered_set<u32>& flags)
|
||||
const LearnableAttacks* non_null attacks, const std::unordered_set<u32>& flags)
|
||||
: _impl(new impl(name, height, weight, baseExperience, types, baseStats, talents, secretTalents, attacks,
|
||||
flags)) {}
|
||||
SpeciesVariant::~SpeciesVariant() = default;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace CreatureLib::Library {
|
||||
const ArbUt::List<u8>& types, Library::StatisticSet<u16> baseStats,
|
||||
const ArbUt::List<ArbUt::BorrowedPtr<const Talent>>& talents,
|
||||
const ArbUt::List<ArbUt::BorrowedPtr<const Talent>>& secretTalents,
|
||||
const LearnableAttacks* attacks, const std::unordered_set<u32>& flags = {});
|
||||
const LearnableAttacks* non_null attacks, const std::unordered_set<u32>& flags = {});
|
||||
virtual ~SpeciesVariant();
|
||||
|
||||
/// @brief Returns the unique name of the variant.
|
||||
|
||||
@@ -8,12 +8,15 @@
|
||||
namespace CreatureLib::Library {
|
||||
class Talent {
|
||||
public:
|
||||
Talent(const ArbUt::StringView& name, const ArbUt::StringView& effect, ArbUt::List<EffectParameter*> parameters)
|
||||
Talent(const ArbUt::StringView& name, const ArbUt::StringView& effect,
|
||||
ArbUt::List<EffectParameter * non_null> parameters)
|
||||
: _name(name), _effect(effect), _parameters(std::move(parameters)) {}
|
||||
|
||||
[[nodiscard]] inline const ArbUt::StringView& GetName() const noexcept { return _name; }
|
||||
[[nodiscard]] inline const ArbUt::StringView& GetEffect() const noexcept { return _effect; }
|
||||
[[nodiscard]] inline const ArbUt::List<EffectParameter*>& GetParameters() const noexcept { return _parameters; }
|
||||
[[nodiscard]] inline const ArbUt::List<EffectParameter * non_null>& GetParameters() const noexcept {
|
||||
return _parameters;
|
||||
}
|
||||
|
||||
~Talent() noexcept {
|
||||
for (auto p : _parameters) {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#include "DataLibrary.hpp"
|
||||
|
||||
CreatureLib::Library::DataLibrary::DataLibrary(LibrarySettings* settings, CreatureLib::Library::SpeciesLibrary* species,
|
||||
CreatureLib::Library::AttackLibrary* attacks,
|
||||
CreatureLib::Library::ItemLibrary* items,
|
||||
CreatureLib::Library::GrowthRateLibrary* growthRates,
|
||||
TypeLibrary* typeLibrary, TalentLibrary* talentLibrary)
|
||||
CreatureLib::Library::DataLibrary::DataLibrary(LibrarySettings* non_null settings,
|
||||
CreatureLib::Library::SpeciesLibrary* non_null species,
|
||||
CreatureLib::Library::AttackLibrary* non_null attacks,
|
||||
CreatureLib::Library::ItemLibrary* non_null items,
|
||||
CreatureLib::Library::GrowthRateLibrary* non_null growthRates,
|
||||
TypeLibrary* typeLibrary, TalentLibrary* non_null talentLibrary)
|
||||
: _settings(settings), _species(species), _attacks(attacks), _items(items), _growthRates(growthRates),
|
||||
_typeLibrary(typeLibrary), _talentLibrary(talentLibrary) {
|
||||
EnsureNotNull(_settings)
|
||||
|
||||
@@ -24,10 +24,11 @@ namespace CreatureLib::Library {
|
||||
std::unique_ptr<const TalentLibrary> _talentLibrary;
|
||||
|
||||
public:
|
||||
DataLibrary(LibrarySettings* settings, CreatureLib::Library::SpeciesLibrary* species,
|
||||
CreatureLib::Library::AttackLibrary* attacks, CreatureLib::Library::ItemLibrary* items,
|
||||
CreatureLib::Library::GrowthRateLibrary* growthRates, TypeLibrary* typeLibrary,
|
||||
TalentLibrary* talentLibrary);
|
||||
DataLibrary(LibrarySettings* non_null settings, CreatureLib::Library::SpeciesLibrary* non_null species,
|
||||
CreatureLib::Library::AttackLibrary* non_null attacks,
|
||||
CreatureLib::Library::ItemLibrary* non_null items,
|
||||
CreatureLib::Library::GrowthRateLibrary* non_null growthRates, TypeLibrary* non_null typeLibrary,
|
||||
TalentLibrary* non_null talentLibrary);
|
||||
|
||||
virtual ~DataLibrary() {}
|
||||
|
||||
|
||||
@@ -7,11 +7,12 @@
|
||||
|
||||
namespace CreatureLib::Library {
|
||||
class ExternGrowthRate : public GrowthRate {
|
||||
level_int_t (*_calcLevel)(u32 experience);
|
||||
u32 (*_calcExperience)(level_int_t level);
|
||||
level_int_t (*_calcLevel)(u32 experience) non_null;
|
||||
u32 (*_calcExperience)(level_int_t level) non_null;
|
||||
|
||||
public:
|
||||
inline ExternGrowthRate(level_int_t (*calcLevel)(u32), u32 (*calcExperience)(level_int_t level))
|
||||
inline ExternGrowthRate(level_int_t (*calcLevel)(u32) non_null,
|
||||
u32 (*calcExperience)(level_int_t level) non_null)
|
||||
: _calcLevel(calcLevel), _calcExperience(calcExperience) {
|
||||
EnsureNotNull(calcLevel)
|
||||
EnsureNotNull(calcExperience)
|
||||
|
||||
@@ -37,10 +37,12 @@ u32 CreatureLib::Library::GrowthRateLibrary::CalculateExperience(u32 hash, level
|
||||
}
|
||||
|
||||
void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(const ArbUt::StringView& name,
|
||||
CreatureLib::Library::GrowthRate* rate) {
|
||||
CreatureLib::Library::GrowthRate* non_null rate) {
|
||||
EnsureNotNull(rate);
|
||||
_growthRates.insert({name, std::unique_ptr<const GrowthRate>(rate)});
|
||||
}
|
||||
|
||||
void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(u32 hash, CreatureLib::Library::GrowthRate* rate) {
|
||||
void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(u32 hash, CreatureLib::Library::GrowthRate* non_null rate) {
|
||||
EnsureNotNull(rate);
|
||||
_growthRates.insert({hash, std::unique_ptr<const GrowthRate>(rate)});
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ namespace CreatureLib::Library {
|
||||
[[nodiscard]] u32 CalculateExperience(const ArbUt::BasicStringView& growthRate, level_int_t level) const;
|
||||
[[nodiscard]] u32 CalculateExperience(u32 hash, level_int_t level) const;
|
||||
|
||||
void AddGrowthRate(u32 hash, GrowthRate* rate);
|
||||
void AddGrowthRate(const ArbUt::StringView& name, GrowthRate* rate);
|
||||
void AddGrowthRate(u32 hash, GrowthRate* non_null rate);
|
||||
void AddGrowthRate(const ArbUt::StringView& name, GrowthRate* non_null rate);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "ItemLibrary.hpp"
|
||||
@@ -13,7 +13,7 @@ namespace CreatureLib::Library {
|
||||
|
||||
public:
|
||||
inline impl(const ArbUt::StringView& name, ItemCategory category, BattleItemCategory battleCategory, i32 price,
|
||||
const SecondaryEffect* effect, const SecondaryEffect* battleTriggerEffect,
|
||||
const SecondaryEffect* nullable effect, const SecondaryEffect* nullable battleTriggerEffect,
|
||||
const std::unordered_set<u32>& flags) noexcept
|
||||
: _name(name), _category(category), _battleCategory(battleCategory), _price(price), _effect(effect),
|
||||
_battleTriggerEffect(battleTriggerEffect), _flags(flags) {}
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace CreatureLib::Library {
|
||||
|
||||
public:
|
||||
Item(const ArbUt::StringView& name, ItemCategory category, BattleItemCategory battleCategory, i32 price,
|
||||
const SecondaryEffect* effect, const SecondaryEffect* battleTriggerEffect,
|
||||
const SecondaryEffect* nullable effect, const SecondaryEffect* nullable battleTriggerEffect,
|
||||
const std::unordered_set<u32>& flags) noexcept;
|
||||
NO_COPY_OR_MOVE(Item)
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "SpeciesLibrary.hpp"
|
||||
@@ -12,11 +12,11 @@ namespace CreatureLib::Library {
|
||||
public:
|
||||
SpeciesLibrary(size_t initialCapacity = 32) : BaseLibrary(initialCapacity){};
|
||||
|
||||
void Insert(const ArbUt::StringView& key, const CreatureSpecies* value) override {
|
||||
void Insert(const ArbUt::StringView& key, const CreatureSpecies* non_null value) override {
|
||||
BaseLibrary::Insert(key, value);
|
||||
_valuesById.Insert(value->GetId(), value);
|
||||
}
|
||||
void Insert(u32 hashedKey, const CreatureSpecies* value) override {
|
||||
void Insert(u32 hashedKey, const CreatureSpecies* non_null value) override {
|
||||
BaseLibrary::Insert(hashedKey, value);
|
||||
_valuesById.Insert(value->GetId(), value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user