Support ConstString in TypeLibrary.
This commit is contained in:
parent
4866edebab
commit
4341efb54c
|
@ -15,15 +15,9 @@ float TypeLibrary::GetSingleEffectiveness(uint8_t attacking, uint8_t defensive)
|
||||||
return _effectiveness[attacking][defensive];
|
return _effectiveness[attacking][defensive];
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t TypeLibrary::GetTypeId(const std::string& s) const {
|
uint8_t TypeLibrary::GetTypeId(const ConstString& key) const { return _types.at(key); }
|
||||||
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) {
|
uint8_t TypeLibrary::RegisterType(const ConstString& key) {
|
||||||
std::string key = typeName;
|
|
||||||
std::transform(key.begin(), key.end(), key.begin(), ::tolower);
|
|
||||||
_types.insert({key, _types.size()});
|
_types.insert({key, _types.size()});
|
||||||
_effectiveness.resize(_types.size());
|
_effectiveness.resize(_types.size());
|
||||||
for (auto& eff : _effectiveness) {
|
for (auto& eff : _effectiveness) {
|
||||||
|
|
|
@ -1,22 +1,24 @@
|
||||||
#ifndef CREATURELIB_TYPELIBRARY_HPP
|
#ifndef CREATURELIB_TYPELIBRARY_HPP
|
||||||
#define CREATURELIB_TYPELIBRARY_HPP
|
#define CREATURELIB_TYPELIBRARY_HPP
|
||||||
|
|
||||||
|
#include <Arbutils/ConstString.hpp>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
using ConstString = Arbutils::CaseInsensitiveConstString;
|
||||||
|
|
||||||
namespace CreatureLib::Library {
|
namespace CreatureLib::Library {
|
||||||
class TypeLibrary {
|
class TypeLibrary {
|
||||||
std::unordered_map<std::string, uint8_t> _types;
|
std::unordered_map<ConstString, uint8_t> _types;
|
||||||
std::vector<std::vector<float>> _effectiveness;
|
std::vector<std::vector<float>> _effectiveness;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TypeLibrary(size_t initialCapacity = 20) : _types(std::unordered_map<std::string, uint8_t>(initialCapacity)) {}
|
TypeLibrary(size_t initialCapacity = 20) : _types(std::unordered_map<ConstString, uint8_t>(initialCapacity)) {}
|
||||||
|
|
||||||
uint8_t GetTypeId(const std::string& s) const;
|
uint8_t GetTypeId(const ConstString& s) const;
|
||||||
float GetSingleEffectiveness(uint8_t attacking, uint8_t defensive) const;
|
float GetSingleEffectiveness(uint8_t attacking, uint8_t defensive) const;
|
||||||
float GetEffectiveness(uint8_t attacking, const std::vector<uint8_t>& defensive) const;
|
float GetEffectiveness(uint8_t attacking, const std::vector<uint8_t>& defensive) const;
|
||||||
|
|
||||||
uint8_t RegisterType(const std::string& typeName);
|
uint8_t RegisterType(const ConstString& typeName);
|
||||||
void SetEffectiveness(uint8_t attacking, uint8_t defensive, float effectiveness);
|
void SetEffectiveness(uint8_t attacking, uint8_t defensive, float effectiveness);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,9 +57,9 @@ GrowthRateLibrary* TestLibrary::BuildGrowthRateLibrary() {
|
||||||
|
|
||||||
TypeLibrary* TestLibrary::BuildTypeLibrary() {
|
TypeLibrary* TestLibrary::BuildTypeLibrary() {
|
||||||
auto l = new TypeLibrary();
|
auto l = new TypeLibrary();
|
||||||
l->RegisterType("testType1");
|
l->RegisterType("testType1"_cnc);
|
||||||
l->RegisterType("testType2");
|
l->RegisterType("testType2"_cnc);
|
||||||
l->RegisterType("testType3");
|
l->RegisterType("testType3"_cnc);
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue