#include "TypeLibrary.hpp" #include using namespace CreatureLib::Library; float TypeLibrary::GetEffectiveness(uint8_t attacking, const std::vector& 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; }