#include "TypeLibrary.hpp" #include #include using namespace CreatureLib::Library; float TypeLibrary::GetEffectiveness(uint8_t attacking, const List& defensive) const { return std::accumulate(defensive.begin(), defensive.end(), (float)1, std::multiplies()); } float TypeLibrary::GetSingleEffectiveness(uint8_t attacking, uint8_t defensive) const { return _effectiveness[attacking][defensive]; } uint8_t TypeLibrary::GetTypeId(const ConstString& key) const { return _types.Get(key); } uint8_t TypeLibrary::GetTypeId(uint32_t s) const { return _types.Get(s); } uint8_t TypeLibrary::RegisterType(const ConstString& key) { _types.Insert(key, _types.Count()); _effectiveness.Resize(_types.Count()); for (auto& eff : _effectiveness) { eff.Resize(_types.Count(), 1); } return _types.Count() - 1; } uint8_t TypeLibrary::RegisterType(uint32_t key) { _types.Insert(key, _types.Count()); _effectiveness.Resize(_types.Count()); for (auto& eff : _effectiveness) { eff.Resize(_types.Count(), 1); } return _types.Count() - 1; } void TypeLibrary::SetEffectiveness(uint8_t attacking, uint8_t defensive, float effectiveness) { _effectiveness[attacking][defensive] = effectiveness; }