#include "../../src/Library/GrowthRates/GrowthRate.hpp" #include "../../src/Library/GrowthRates/ExternGrowthRate.hpp" #include "../../src/Library/GrowthRates/LookupGrowthRate.hpp" #define export extern "C" using namespace CreatureLib::Library; export GrowthRate* CreatureLib_LookupGrowthRate_Construct(uint32_t experiencePerLevel[], size_t count) { std::vector exp(experiencePerLevel, experiencePerLevel + count); 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 uint8_t CreatureLib_GrowthRate_CalculateLevel(const GrowthRate* p, uint32_t experience) { return p->CalculateLevel(experience); } export uint32_t CreatureLib_GrowthRate_CalculateExperience(const GrowthRate* p, uint8_t level) { return p->CalculateExperience(level); }