40 lines
1.6 KiB
C++
40 lines
1.6 KiB
C++
#ifndef PKMNLIB_NATURE_HPP
|
|
#define PKMNLIB_NATURE_HPP
|
|
|
|
#include <CreatureLib/Core/Statistic.hpp>
|
|
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
|