38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#include "TypeLibrary.hpp"
|
|
#include <algorithm>
|
|
|
|
using namespace CreatureLib::Library;
|
|
|
|
float TypeLibrary::GetEffectiveness(uint8_t attacking, const std::vector<uint8_t>& defensive) const {
|
|
auto eff = 1;
|
|
for (auto def : defensive) {
|
|
eff *= GetSingleEffectiveness(attacking, def);
|
|
}
|
|
return eff;
|
|
}
|
|
|
|
float TypeLibrary::GetSingleEffectiveness(uint8_t attacking, uint8_t defensive) const {
|
|
return _effectiveness[attacking][defensive];
|
|
}
|
|
|
|
uint8_t TypeLibrary::GetTypeId(const std::string& s) const {
|
|
std::string key = s;
|
|
std::transform(key.begin(), key.end(), key.begin(), ::tolower);
|
|
return _types.at(key);
|
|
}
|
|
|
|
uint8_t TypeLibrary::RegisterType(const std::string& typeName) {
|
|
std::string key = typeName;
|
|
std::transform(key.begin(), key.end(), key.begin(), ::tolower);
|
|
_types.insert({key, _types.size()});
|
|
_effectiveness.resize(_types.size());
|
|
for (auto& eff : _effectiveness) {
|
|
eff.resize(_types.size(), 1);
|
|
}
|
|
return _types.size() - 1;
|
|
}
|
|
|
|
void TypeLibrary::SetEffectiveness(uint8_t attacking, uint8_t defensive, float effectiveness) {
|
|
_effectiveness[attacking][defensive] = effectiveness;
|
|
}
|