Add serialization for node aliases to let client show inventory images correctly
authorPerttu Ahola <celeron55@gmail.com>
Sat, 3 Dec 2011 22:07:02 +0000 (00:07 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Sat, 3 Dec 2011 22:07:02 +0000 (00:07 +0200)
src/nodedef.cpp

index e2e5616f174ecb29ea87c585a3af61c78a910b20..35ee291a03dc9e489ae3e3ae171b666ed1cbcfb6 100644 (file)
@@ -311,6 +311,9 @@ public:
        void clear()
        {
                m_name_id_mapping.clear();
+
+               m_aliases.clear();
+               
                for(u16 i=0; i<=MAX_CONTENT; i++)
                {
                        ContentFeatures &f = m_content_features[i];
@@ -645,6 +648,14 @@ public:
                }
                writeU16(os, count);
                os<<serializeLongString(tmp_os.str());
+
+               writeU16(os, m_aliases.size());
+               for(std::map<std::string, std::string>::const_iterator
+                               i = m_aliases.begin(); i != m_aliases.end(); i++)
+               {
+                       os<<serializeString(i->first);
+                       os<<serializeString(i->second);
+               }
        }
        void deSerialize(std::istream &is, IGameDef *gamedef)
        {
@@ -666,6 +677,15 @@ public:
                        if(f->name != "")
                                m_name_id_mapping.set(i, f->name);
                }
+
+               u16 num_aliases = readU16(is);
+               if(!is.eof()){
+                       for(u16 i=0; i<num_aliases; i++){
+                               std::string name = deSerializeString(is);
+                               std::string convert_to = deSerializeString(is);
+                               m_aliases[name] = convert_to;
+                       }
+               }
        }
 private:
        // Features indexed by id