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