#ifndef CREATURELIB_EXTERNGROWTHRATE_HPP #define CREATURELIB_EXTERNGROWTHRATE_HPP #include #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