#ifndef PKMNLIB_NATURE_HPP #define PKMNLIB_NATURE_HPP #include namespace PkmnLib::Library { class Nature { private: CreatureLib::Library::Statistic _increaseStat; CreatureLib::Library::Statistic _decreaseStat; float _increaseModifier; float _decreaseModifier; public: Nature() noexcept : _increaseStat(CreatureLib::Library::Statistic::Health), _decreaseStat(CreatureLib::Library::Statistic::Health), _increaseModifier(1.0f), _decreaseModifier(1.0f) { } Nature(CreatureLib::Library::Statistic increasedStat, CreatureLib::Library::Statistic decreasedStat, float increasedModifier = 1.1f, float decreasedModifier = 0.9f) noexcept : _increaseStat(increasedStat), _decreaseStat(decreasedStat), _increaseModifier(increasedModifier), _decreaseModifier(decreasedModifier) {} [[nodiscard]] inline float GetIncreaseModifier() const noexcept { return _increaseModifier; } [[nodiscard]] inline float GetDecreaseModifier() const noexcept { return _decreaseModifier; } [[nodiscard]] inline CreatureLib::Library::Statistic GetIncreasedStat() const noexcept { return _increaseStat; } [[nodiscard]] inline CreatureLib::Library::Statistic GetDecreasedStat() const noexcept { return _decreaseStat; } [[nodiscard]] inline float GetStatModifier(CreatureLib::Library::Statistic stat) const noexcept { if (stat == _increaseStat) return _increaseModifier; else if (stat == _decreaseStat) return _decreaseModifier; return 1; } }; } #endif // PKMNLIB_NATURE_HPP