Implements extern growthrate that uses function pointers.
This commit is contained in:
parent
81e173ec1a
commit
6bffea953d
|
@ -1,4 +1,5 @@
|
||||||
#include "../../src/Library/GrowthRates/GrowthRate.hpp"
|
#include "../../src/Library/GrowthRates/GrowthRate.hpp"
|
||||||
|
#include "../../src/Library/GrowthRates/ExternGrowthRate.hpp"
|
||||||
#include "../../src/Library/GrowthRates/LookupGrowthRate.hpp"
|
#include "../../src/Library/GrowthRates/LookupGrowthRate.hpp"
|
||||||
#define export extern "C"
|
#define export extern "C"
|
||||||
using namespace CreatureLib::Library;
|
using namespace CreatureLib::Library;
|
||||||
|
@ -8,6 +9,11 @@ export GrowthRate* CreatureLib_LookupGrowthRate_Construct(uint32_t experiencePer
|
||||||
return new LookupGrowthRate(exp);
|
return new LookupGrowthRate(exp);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export GrowthRate* CreatureLib_ExternGrowthRate_Construct(uint8_t (*calcLevel)(uint32_t),
|
||||||
|
uint32_t (*calcExperience)(uint8_t)) {
|
||||||
|
return new ExternGrowthRate(calcLevel, calcExperience);
|
||||||
|
};
|
||||||
|
|
||||||
export void CreatureLib_GrowthRate_Destruct(const GrowthRate* p) { delete p; }
|
export void CreatureLib_GrowthRate_Destruct(const GrowthRate* p) { delete p; }
|
||||||
|
|
||||||
export uint8_t CreatureLib_GrowthRate_CalculateLevel(const GrowthRate* p, uint32_t experience) {
|
export uint8_t CreatureLib_GrowthRate_CalculateLevel(const GrowthRate* p, uint32_t experience) {
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef CREATURELIB_EXTERNGROWTHRATE_HPP
|
||||||
|
#define CREATURELIB_EXTERNGROWTHRATE_HPP
|
||||||
|
|
||||||
|
#include "GrowthRate.hpp"
|
||||||
|
namespace CreatureLib::Library {
|
||||||
|
class ExternGrowthRate : public GrowthRate {
|
||||||
|
uint8_t (*_calcLevel)(uint32_t experience);
|
||||||
|
uint32_t (*_calcExperience)(uint8_t level);
|
||||||
|
|
||||||
|
public:
|
||||||
|
ExternGrowthRate(uint8_t (*calcLevel)(uint32_t), uint32_t (*calcExperience)(uint8_t level))
|
||||||
|
: _calcLevel(calcLevel), _calcExperience(calcExperience) {}
|
||||||
|
|
||||||
|
uint8_t CalculateLevel(uint32_t experience) const override { return _calcLevel(experience); }
|
||||||
|
uint32_t CalculateExperience(uint8_t level) const override { return _calcExperience(level); }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CREATURELIB_EXTERNGROWTHRATE_HPP
|
|
@ -1 +0,0 @@
|
||||||
#include "GrowthRate.hpp"
|
|
Loading…
Reference in New Issue