#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 ConstString& key) const { return _types.at(key); } uint8_t TypeLibrary::GetTypeId(uint32_t s) const { return _types.at(s); } uint8_t TypeLibrary::RegisterType(const ConstString& key) { _types.insert({key, _types.size()}); _effectiveness.resize(_types.size()); for (auto& eff : _effectiveness) { eff.resize(_types.size(), 1); } return _types.size() - 1; } uint8_t TypeLibrary::RegisterType(uint32_t key) { _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; }