From b0e2e9935a83aa1d4b5f8a9d155ff5a01bee3346 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 28 May 2022 12:31:29 +0200 Subject: [PATCH] Adds more templated functions for getting stats --- src/Battling/Models/Creature.hpp | 3 +++ src/Library/CreatureData/SpeciesVariant.cpp | 2 ++ src/Library/CreatureData/SpeciesVariant.hpp | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index 03403b7..73d2a5c 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -240,6 +240,9 @@ namespace CreatureLib::Battling { return _boostedStats.GetStat(); } [[nodiscard]] inline u32 GetBaseStat(Library::Statistic stat) const { return _variant->GetStatistic(stat); } + template [[nodiscard]] inline u32 GetBaseStat() const { + return _variant->GetStatistics().GetStat(); + } [[nodiscard]] inline i8 GetStatBoost(Library::Statistic stat) const { return _statBoost.GetStat(stat); } template [[nodiscard]] inline u32 GetStatBoost() const { return _statBoost.GetStat(); diff --git a/src/Library/CreatureData/SpeciesVariant.cpp b/src/Library/CreatureData/SpeciesVariant.cpp index e3b5952..b52dd02 100644 --- a/src/Library/CreatureData/SpeciesVariant.cpp +++ b/src/Library/CreatureData/SpeciesVariant.cpp @@ -31,6 +31,7 @@ namespace CreatureLib::Library { [[nodiscard]] inline size_t GetTypeCount() const { return _types.Count(); } [[nodiscard]] inline u8 GetType(size_t index) const { return _types[index]; } [[nodiscard]] inline const ArbUt::List& GetTypes() const { return _types; } + [[nodiscard]] inline const Library::StatisticSet& GetStatistics() const { return _baseStatistics; } [[nodiscard]] inline u16 GetStatistic(Library::Statistic stat) const { return _baseStatistics.GetStat(stat); } [[nodiscard]] inline size_t GetTalentCount() const noexcept { return _talents.Count(); } [[nodiscard]] inline size_t GetSecretTalentCount() const noexcept { return _secretTalents.Count(); } @@ -114,6 +115,7 @@ namespace CreatureLib::Library { ImplGetter(size_t, GetTypeCount); u8 SpeciesVariant::GetType(size_t index) const { return _impl->GetType(index); } ImplGetter(const ArbUt::List&, GetTypes); + ImplGetter(const Library::StatisticSet&, GetStatistics); u16 SpeciesVariant::GetStatistic(Library::Statistic stat) const noexcept { return _impl->GetStatistic(stat); } ImplGetter(size_t, GetTalentCount); diff --git a/src/Library/CreatureData/SpeciesVariant.hpp b/src/Library/CreatureData/SpeciesVariant.hpp index 3c12681..5353a94 100644 --- a/src/Library/CreatureData/SpeciesVariant.hpp +++ b/src/Library/CreatureData/SpeciesVariant.hpp @@ -57,6 +57,11 @@ namespace CreatureLib::Library { /// @brief Returns a list of the types on this variant. /// @return A list of types on the variant, [[nodiscard]] const ArbUt::List& GetTypes() const noexcept; + + /// @brief Returns the base statistics. + /// @return The base statistics. + [[nodiscard]] const Library::StatisticSet& GetStatistics() const noexcept; + /// @brief Returns the value of a base statistic. /// @param stat The desired statistic. /// @return The base statistic value.