CreatureLib/src/Library/GrowthRates/ExternGrowthRate.hpp

24 lines
886 B
C++

#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