CreatureLib/src/Library/GrowthRates/LookupGrowthRate.hpp

29 lines
861 B
C++

#ifndef CREATURELIB_LOOKUPGROWTHRATE_HPP
#define CREATURELIB_LOOKUPGROWTHRATE_HPP
#include <Arbutils/Collections/List.hpp>
#include "GrowthRate.hpp"
namespace CreatureLib::Library {
class LookupGrowthRate : public GrowthRate {
protected:
ArbUt::List<u32> _experience;
public:
LookupGrowthRate(const ArbUt::List<u32>& experience) : _experience(experience) {}
level_int_t CalculateLevel(u32 experience) const override {
for (level_int_t i = 0; i < (level_int_t)_experience.Count(); i++) {
if (_experience[i] > experience) {
return i;
}
}
return _experience.Count() - 1;
}
u32 CalculateExperience(level_int_t level) const override { return _experience[level - 1]; }
};
}
#endif // CREATURELIB_LOOKUPGROWTHRATE_HPP