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