Handle natures as pointers instead of values.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2020-04-17 18:39:04 +02:00
parent 086438f547
commit 6b704224d0
8 changed files with 32 additions and 22 deletions

View File

@@ -12,17 +12,17 @@
namespace PkmnLib::Library {
class NatureLibrary {
private:
Arbutils::Collections::Dictionary<Arbutils::CaseInsensitiveConstString, Nature> _items;
Arbutils::Collections::Dictionary<Arbutils::CaseInsensitiveConstString, const Nature*> _items;
public:
explicit NatureLibrary(uint8_t size = 32)
: _items(Arbutils::Collections::Dictionary<Arbutils::CaseInsensitiveConstString, Nature>(size)) {}
: _items(Arbutils::Collections::Dictionary<Arbutils::CaseInsensitiveConstString, const Nature*>(size)) {}
inline void LoadNature(const Arbutils::CaseInsensitiveConstString& name, const Nature& nature) {
inline void LoadNature(const Arbutils::CaseInsensitiveConstString& name, const Nature* nature) {
_items.Insert(name, nature);
}
inline const Nature& GetNatureByName(const Arbutils::CaseInsensitiveConstString& name) const {
inline const Nature* GetNatureByName(const Arbutils::CaseInsensitiveConstString& name) const {
return _items[name];
}
@@ -32,6 +32,15 @@ namespace PkmnLib::Library {
auto& map = _items.GetStdMap();
return std::next(std::begin(map), i)->first;
}
inline Arbutils::CaseInsensitiveConstString GetNatureName(const Nature* nature){
for (const auto& v: _items){
if (v.second == nature){
return v.first;
}
}
throw CreatureException("Nature not found.");
}
};
}