X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fnodemetadata.cpp;h=d4da7a5ed4dc3d3620f58419fb8785928a5f4f9b;hb=0a0378fecef5c6b4be6d034d8bced2a1568dde81;hp=b8c7d3d9c11722cefec153c769bc2cb2df32985f;hpb=10e0cf8b2c27917a3fd45e73a5d835af4313db3b;p=minetest.git diff --git a/src/nodemetadata.cpp b/src/nodemetadata.cpp index b8c7d3d9c..d4da7a5ed 100644 --- a/src/nodemetadata.cpp +++ b/src/nodemetadata.cpp @@ -45,10 +45,11 @@ void NodeMetadata::serialize(std::ostream &os) const { int num_vars = m_stringvars.size(); writeU32(os, num_vars); - for(std::map::const_iterator - i = m_stringvars.begin(); i != m_stringvars.end(); i++){ - os<first); - os<second); + for (StringMap::const_iterator + it = m_stringvars.begin(); + it != m_stringvars.end(); ++it) { + os << serializeString(it->first); + os << serializeLongString(it->second); } m_inventory->serialize(os); @@ -109,10 +110,10 @@ void NodeMetadataList::serialize(std::ostream &os) const void NodeMetadataList::deSerialize(std::istream &is, IGameDef *gamedef) { - m_data.clear(); + clear(); u8 version = readU8(is); - + if(version == 0){ // Nothing return; @@ -157,10 +158,21 @@ NodeMetadataList::~NodeMetadataList() clear(); } -NodeMetadata* NodeMetadataList::get(v3s16 p) +std::vector NodeMetadataList::getAllKeys() +{ + std::vector keys; + + std::map::const_iterator it; + for (it = m_data.begin(); it != m_data.end(); ++it) + keys.push_back(it->first); + + return keys; +} + +NodeMetadata *NodeMetadataList::get(v3s16 p) { - std::map::const_iterator n = m_data.find(p); - if(n == m_data.end()) + std::map::const_iterator n = m_data.find(p); + if (n == m_data.end()) return NULL; return n->second; } @@ -168,8 +180,7 @@ NodeMetadata* NodeMetadataList::get(v3s16 p) void NodeMetadataList::remove(v3s16 p) { NodeMetadata *olddata = get(p); - if(olddata) - { + if (olddata) { delete olddata; m_data.erase(p); } @@ -183,22 +194,20 @@ void NodeMetadataList::set(v3s16 p, NodeMetadata *d) void NodeMetadataList::clear() { - for(std::map::iterator - i = m_data.begin(); - i != m_data.end(); i++) - { - delete i->second; + std::map::iterator it; + for (it = m_data.begin(); it != m_data.end(); ++it) { + delete it->second; } m_data.clear(); } -std::string NodeMetadata::getString(const std::string &name, unsigned short recursion) const +std::string NodeMetadata::getString(const std::string &name, + unsigned short recursion) const { - std::map::const_iterator it; - it = m_stringvars.find(name); - if (it == m_stringvars.end()) { + StringMap::const_iterator it = m_stringvars.find(name); + if (it == m_stringvars.end()) return ""; - } + return resolveString(it->second, recursion); } @@ -211,7 +220,8 @@ void NodeMetadata::setString(const std::string &name, const std::string &var) } } -std::string NodeMetadata::resolveString(const std::string &str, unsigned short recursion) const +std::string NodeMetadata::resolveString(const std::string &str, + unsigned short recursion) const { if (recursion > 1) { return str;