27 lines
956 B
C++
27 lines
956 B
C++
#ifndef CREATURELIB_EXTERNGROWTHRATE_HPP
|
|
#define CREATURELIB_EXTERNGROWTHRATE_HPP
|
|
|
|
#include <Arbutils/Ensure.hpp>
|
|
#include "../../Defines.hpp"
|
|
#include "GrowthRate.hpp"
|
|
|
|
namespace CreatureLib::Library {
|
|
class ExternGrowthRate : public GrowthRate {
|
|
level_int_t (*_calcLevel)(u32 experience) non_null;
|
|
u32 (*_calcExperience)(level_int_t level) non_null;
|
|
|
|
public:
|
|
inline ExternGrowthRate(level_int_t (*calcLevel)(u32) non_null,
|
|
u32 (*calcExperience)(level_int_t level) non_null)
|
|
: _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
|