Implements experience gain on opponent faint.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2019-12-14 13:28:23 +01:00
parent 3baed93597
commit 649de39571
9 changed files with 119 additions and 21 deletions

View File

@@ -14,6 +14,8 @@ namespace CreatureLib::Library {
public:
[[nodiscard]] uint8_t CalculateLevel(const std::string& growthRate, uint32_t experience) const;
[[nodiscard]] uint32_t CalculateExperience(const std::string& growthRate, uint8_t level) const;
void AddGrowthRate(std::string name, GrowthRate* rate) { _growthRates.insert({name, rate}); }
};
}

View File

@@ -0,0 +1,33 @@
#ifndef CREATURELIB_LOOKUPGROWTHRATE_HPP
#define CREATURELIB_LOOKUPGROWTHRATE_HPP
#include <vector>
#include "GrowthRate.hpp"
namespace CreatureLib::Library {
class LookupGrowthRate : public GrowthRate {
protected:
std::vector<int32_t> _experience = {
0, 15, 52, 122, 237, 406, 637, 942, 1326, 1800, 2369, 3041, 3822,
4719, 5737, 6881, 8155, 9564, 11111, 12800, 14632, 16610, 18737, 21012, 23437, 26012,
28737, 31610, 34632, 37800, 41111, 44564, 48155, 51881, 55737, 59719, 63822, 68041, 72369,
76800, 81326, 85942, 90637, 95406, 100237, 105122, 110052, 115015, 120001, 125000, 131324, 137795,
144410, 151165, 158056, 165079, 172229, 179503, 186894, 194400, 202013, 209728, 217540, 225443, 233431,
241496, 249633, 257834, 267406, 276458, 286328, 296358, 305767, 316074, 326531, 336255, 346965, 357812,
367807, 378880, 390077, 400293, 411686, 423190, 433572, 445239, 457001, 467489, 479378, 491346, 501878,
513934, 526049, 536557, 548720, 560922, 571333, 583539, 591882, 600000};
public:
uint8_t CalculateLevel(uint32_t experience) const override {
for (uint8_t i = 0; i < _experience.size(); i++) {
if (_experience[i] > experience) {
return i;
}
}
return _experience[_experience.size() - 1];
}
uint32_t CalculateExperience(uint8_t level) const override { return _experience[level - 1]; }
};
}
#endif // CREATURELIB_LOOKUPGROWTHRATE_HPP