2020-03-04 14:00:57 +00:00
|
|
|
#ifndef CREATURELIB_EXTERNGROWTHRATE_HPP
|
|
|
|
#define CREATURELIB_EXTERNGROWTHRATE_HPP
|
|
|
|
|
2020-08-19 18:11:00 +00:00
|
|
|
#include "../../Defines.hpp"
|
2020-03-04 14:00:57 +00:00
|
|
|
#include "GrowthRate.hpp"
|
|
|
|
namespace CreatureLib::Library {
|
|
|
|
class ExternGrowthRate : public GrowthRate {
|
2020-08-19 18:11:00 +00:00
|
|
|
level_int_t (*_calcLevel)(uint32_t experience);
|
|
|
|
uint32_t (*_calcExperience)(level_int_t level);
|
2020-03-04 14:00:57 +00:00
|
|
|
|
|
|
|
public:
|
2020-08-19 18:11:00 +00:00
|
|
|
inline ExternGrowthRate(level_int_t (*calcLevel)(uint32_t), uint32_t (*calcExperience)(level_int_t level))
|
2020-03-22 12:42:26 +00:00
|
|
|
: _calcLevel(calcLevel), _calcExperience(calcExperience) {
|
2020-12-13 11:15:40 +00:00
|
|
|
EnsureNotNull(calcLevel)
|
|
|
|
EnsureNotNull(calcExperience)
|
2020-03-22 12:42:26 +00:00
|
|
|
}
|
2020-03-04 14:00:57 +00:00
|
|
|
|
2020-08-19 18:11:00 +00:00
|
|
|
level_int_t CalculateLevel(uint32_t experience) const override { return _calcLevel(experience); }
|
|
|
|
uint32_t CalculateExperience(level_int_t level) const override { return _calcExperience(level); }
|
2020-03-04 14:00:57 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // CREATURELIB_EXTERNGROWTHRATE_HPP
|