24 lines
886 B
C++
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
|