CreatureLib/src/Library/GrowthRates/ExternGrowthRate.hpp

26 lines
888 B
C++

#ifndef CREATURELIB_EXTERNGROWTHRATE_HPP
#define CREATURELIB_EXTERNGROWTHRATE_HPP
#include <Arbutils/Ensure.hpp>
#include "../../Defines.hpp"
#include "GrowthRate.hpp"
namespace CreatureLib::Library {
class ExternGrowthRate : public GrowthRate {
level_int_t (*_calcLevel)(u32 experience);
u32 (*_calcExperience)(level_int_t level);
public:
inline ExternGrowthRate(level_int_t (*calcLevel)(u32), u32 (*calcExperience)(level_int_t level))
: _calcLevel(calcLevel), _calcExperience(calcExperience) {
EnsureNotNull(calcLevel)
EnsureNotNull(calcExperience)
}
level_int_t CalculateLevel(u32 experience) const override { return _calcLevel(experience); }
u32 CalculateExperience(level_int_t level) const override { return _calcExperience(level); }
};
}
#endif // CREATURELIB_EXTERNGROWTHRATE_HPP