Add name field to ContentFeatures
authorPerttu Ahola <celeron55@gmail.com>
Wed, 16 Nov 2011 07:36:19 +0000 (09:36 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 29 Nov 2011 17:13:46 +0000 (19:13 +0200)
src/content_mapnode.cpp
src/nodedef.cpp
src/nodedef.h

index c3e507e218702ccf9449978bec09d76223651cb5..b836cb493909562f2cf523b578b98febae7fcb0e 100644 (file)
@@ -162,6 +162,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_STONE;
        f = nodemgr->getModifiable(i);
+       f->name = "stone";
        f->setAllTextures("stone.png");
        f->setInventoryTextureCube("stone.png", "stone.png", "stone.png");
        f->param_type = CPT_MINERAL;
@@ -172,6 +173,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_GRASS;
        f = nodemgr->getModifiable(i);
+       f->name = "grass";
        f->setAllTextures("mud.png^grass_side.png");
        f->setTexture(0, "grass.png");
        f->setTexture(1, "mud.png");
@@ -182,6 +184,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_GRASS_FOOTSTEPS;
        f = nodemgr->getModifiable(i);
+       f->name = "grass_footsteps";
        f->setAllTextures("mud.png^grass_side.png");
        f->setTexture(0, "grass_footsteps.png");
        f->setTexture(1, "mud.png");
@@ -192,6 +195,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_MUD;
        f = nodemgr->getModifiable(i);
+       f->name = "dirt";
        f->setAllTextures("mud.png");
        f->setInventoryTextureCube("mud.png", "mud.png", "mud.png");
        f->param_type = CPT_MINERAL;
@@ -201,6 +205,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_SAND;
        f = nodemgr->getModifiable(i);
+       f->name = "sand";
        f->setAllTextures("sand.png");
        f->setInventoryTextureCube("sand.png", "sand.png", "sand.png");
        f->param_type = CPT_MINERAL;
@@ -211,6 +216,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_GRAVEL;
        f = nodemgr->getModifiable(i);
+       f->name = "gravel";
        f->setAllTextures("gravel.png");
        f->setInventoryTextureCube("gravel.png", "gravel.png", "gravel.png");
        f->param_type = CPT_MINERAL;
@@ -220,6 +226,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_SANDSTONE;
        f = nodemgr->getModifiable(i);
+       f->name = "sandstone";
        f->setAllTextures("sandstone.png");
        f->setInventoryTextureCube("sandstone.png", "sandstone.png", "sandstone.png");
        f->param_type = CPT_MINERAL;
@@ -229,6 +236,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_CLAY;
        f = nodemgr->getModifiable(i);
+       f->name = "clay";
        f->setAllTextures("clay.png");
        f->setInventoryTextureCube("clay.png", "clay.png", "clay.png");
        f->param_type = CPT_MINERAL;
@@ -238,6 +246,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_BRICK;
        f = nodemgr->getModifiable(i);
+       f->name = "brick";
        f->setAllTextures("brick.png");
        f->setInventoryTextureCube("brick.png", "brick.png", "brick.png");
        f->param_type = CPT_MINERAL;
@@ -247,6 +256,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_TREE;
        f = nodemgr->getModifiable(i);
+       f->name = "tree";
        f->setAllTextures("tree.png");
        f->setTexture(0, "tree_top.png");
        f->setTexture(1, "tree_top.png");
@@ -259,6 +269,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_JUNGLETREE;
        f = nodemgr->getModifiable(i);
+       f->name = "jungletree";
        f->setAllTextures("jungletree.png");
        f->setTexture(0, "jungletree_top.png");
        f->setTexture(1, "jungletree_top.png");
@@ -269,6 +280,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_JUNGLEGRASS;
        f = nodemgr->getModifiable(i);
+       f->name = "junglegrass";
        f->drawtype = NDT_PLANTLIKE;
        f->visual_scale = 1.3;
        f->setAllTextures("junglegrass.png");
@@ -283,6 +295,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_LEAVES;
        f = nodemgr->getModifiable(i);
+       f->name = "leaves";
        f->drawtype = NDT_ALLFACES_OPTIONAL;
        f->setAllTextures("leaves.png");
        //f->setAllTextures("[noalpha:leaves.png");
@@ -296,6 +309,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_CACTUS;
        f = nodemgr->getModifiable(i);
+       f->name = "cactus";
        f->setAllTextures("cactus_side.png");
        f->setTexture(0, "cactus_top.png");
        f->setTexture(1, "cactus_top.png");
@@ -308,6 +322,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_PAPYRUS;
        f = nodemgr->getModifiable(i);
+       f->name = "papyrus";
        f->drawtype = NDT_PLANTLIKE;
        f->setAllTextures("papyrus.png");
        f->setInventoryTexture("papyrus.png");
@@ -321,6 +336,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_BOOKSHELF;
        f = nodemgr->getModifiable(i);
+       f->name = "bookshelf";
        f->setAllTextures("bookshelf.png");
        f->setTexture(0, "wood.png");
        f->setTexture(1, "wood.png");
@@ -334,6 +350,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_GLASS;
        f = nodemgr->getModifiable(i);
+       f->name = "glass";
        f->drawtype = NDT_GLASSLIKE;
        f->setAllTextures("glass.png");
        f->light_propagates = true;
@@ -346,6 +363,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_FENCE;
        f = nodemgr->getModifiable(i);
+       f->name = "fence";
        f->drawtype = NDT_FENCELIKE;
        f->setInventoryTexture("fence.png");
        f->setTexture(0, "wood.png");
@@ -362,6 +380,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_RAIL;
        f = nodemgr->getModifiable(i);
+       f->name = "rail";
        f->drawtype = NDT_RAILLIKE;
        f->setInventoryTexture("rail.png");
        f->setTexture(0, "rail.png");
@@ -380,6 +399,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_LADDER;
        f = nodemgr->getModifiable(i);
+       f->name = "ladder";
        f->drawtype = NDT_SIGNLIKE;
        f->setAllTextures("ladder.png");
        f->setInventoryTexture("ladder.png");
@@ -398,12 +418,14 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        // Deprecated
        i = CONTENT_COALSTONE;
        f = nodemgr->getModifiable(i);
+       f->name = "coalstone";
        f->setAllTextures("stone.png^mineral_coal.png");
        f->is_ground_content = true;
        setStoneLikeMaterialProperties(f->material, 1.5);
        
        i = CONTENT_WOOD;
        f = nodemgr->getModifiable(i);
+       f->name = "wood";
        f->setAllTextures("wood.png");
        f->setInventoryTextureCube("wood.png", "wood.png", "wood.png");
        f->is_ground_content = true;
@@ -413,6 +435,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_MESE;
        f = nodemgr->getModifiable(i);
+       f->name = "mese";
        f->setAllTextures("mese.png");
        f->setInventoryTextureCube("mese.png", "mese.png", "mese.png");
        f->is_ground_content = true;
@@ -422,6 +445,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_CLOUD;
        f = nodemgr->getModifiable(i);
+       f->name = "cloud";
        f->setAllTextures("cloud.png");
        f->setInventoryTextureCube("cloud.png", "cloud.png", "cloud.png");
        f->is_ground_content = true;
@@ -429,6 +453,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_AIR;
        f = nodemgr->getModifiable(i);
+       f->name = "air";
        f->param_type = CPT_LIGHT;
        f->light_propagates = true;
        f->sunlight_propagates = true;
@@ -440,6 +465,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_WATER;
        f = nodemgr->getModifiable(i);
+       f->name = "water_flowing";
        f->drawtype = NDT_FLOWINGLIQUID;
        f->setAllTextures("water.png");
        f->alpha = WATER_ALPHA;
@@ -460,6 +486,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_WATERSOURCE;
        f = nodemgr->getModifiable(i);
+       f->name = "water_source";
        f->drawtype = NDT_LIQUID;
        f->setAllTextures("water.png");
        f->alpha = WATER_ALPHA;
@@ -481,6 +508,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_LAVA;
        f = nodemgr->getModifiable(i);
+       f->name = "lava_flowing";
        f->drawtype = NDT_FLOWINGLIQUID;
        f->setAllTextures("lava.png");
        f->setInventoryTextureCube("lava.png", "lava.png", "lava.png");
@@ -502,6 +530,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_LAVASOURCE;
        f = nodemgr->getModifiable(i);
+       f->name = "lava_source";
        f->drawtype = NDT_LIQUID;
        f->setAllTextures("lava.png");
        f->setInventoryTextureCube("lava.png", "lava.png", "lava.png");
@@ -525,6 +554,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_TORCH;
        f = nodemgr->getModifiable(i);
+       f->name = "torch";
        f->drawtype = NDT_TORCHLIKE;
        f->setTexture(0, "torch_on_floor.png");
        f->setTexture(1, "torch_on_ceiling.png");
@@ -550,6 +580,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_SIGN_WALL;
        f = nodemgr->getModifiable(i);
+       f->name = "sign_wall";
        f->drawtype = NDT_SIGNLIKE;
        f->setAllTextures("sign_wall.png");
        f->setInventoryTexture("sign_wall.png");
@@ -568,6 +599,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_CHEST;
        f = nodemgr->getModifiable(i);
+       f->name = "chest";
        f->param_type = CPT_FACEDIR_SIMPLE;
        f->setAllTextures("chest_side.png");
        f->setTexture(0, "chest_top.png");
@@ -583,6 +615,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_LOCKABLE_CHEST;
        f = nodemgr->getModifiable(i);
+       f->name = "locked_chest";
        f->param_type = CPT_FACEDIR_SIMPLE;
        f->setAllTextures("chest_side.png");
        f->setTexture(0, "chest_top.png");
@@ -598,6 +631,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_FURNACE;
        f = nodemgr->getModifiable(i);
+       f->name = "furnace";
        f->param_type = CPT_FACEDIR_SIMPLE;
        f->setAllTextures("furnace_side.png");
        f->setTexture(5, "furnace_front.png"); // Z-
@@ -610,6 +644,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_COBBLE;
        f = nodemgr->getModifiable(i);
+       f->name = "cobble";
        f->setAllTextures("cobble.png");
        f->setInventoryTextureCube("cobble.png", "cobble.png", "cobble.png");
        f->param_type = CPT_NONE;
@@ -620,6 +655,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_MOSSYCOBBLE;
        f = nodemgr->getModifiable(i);
+       f->name = "mossycobble";
        f->setAllTextures("mossycobble.png");
        f->setInventoryTextureCube("mossycobble.png", "mossycobble.png", "mossycobble.png");
        f->param_type = CPT_NONE;
@@ -629,6 +665,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_STEEL;
        f = nodemgr->getModifiable(i);
+       f->name = "steelblock";
        f->setAllTextures("steel_block.png");
        f->setInventoryTextureCube("steel_block.png", "steel_block.png",
                        "steel_block.png");
@@ -639,6 +676,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_NC;
        f = nodemgr->getModifiable(i);
+       f->name = "nyancat";
        f->param_type = CPT_FACEDIR_SIMPLE;
        f->setAllTextures("nc_side.png");
        f->setTexture(5, "nc_front.png"); // Z-
@@ -650,6 +688,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_NC_RB;
        f = nodemgr->getModifiable(i);
+       f->name = "nyancat_rainbow";
        f->setAllTextures("nc_rb.png");
        f->setInventoryTexture("nc_rb.png");
        f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@@ -658,6 +697,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
 
        i = CONTENT_SAPLING;
        f = nodemgr->getModifiable(i);
+       f->name = "sapling";
        f->drawtype = NDT_PLANTLIKE;
        f->visual_scale = 1.0;
        f->setAllTextures("sapling.png");
@@ -672,6 +712,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
        
        i = CONTENT_APPLE;
        f = nodemgr->getModifiable(i);
+       f->name = "apple";
        f->drawtype = NDT_PLANTLIKE;
        f->visual_scale = 1.0;
        f->setAllTextures("apple.png");
index 210e466d2dfadbc2f14e654443c2fe48734f2fb8..166d9cba007000dd8065e8c5d672492decc0affc 100644 (file)
@@ -114,10 +114,10 @@ void ContentFeatures::reset()
        backface_culling = true;
 #endif
        used_texturenames.clear();
-       modified = true; // NodeDefManager explicitly sets to false
        /*
                Actual data
        */
+       name = "";
        drawtype = NDT_NORMAL;
        visual_scale = 1.0;
        for(u32 i=0; i<6; i++)
@@ -159,6 +159,7 @@ void ContentFeatures::reset()
 void ContentFeatures::serialize(std::ostream &os)
 {
        writeU8(os, 0); // version
+       os<<serializeString(name);
        writeU8(os, drawtype);
        writeF1000(os, visual_scale);
        writeU8(os, 6);
@@ -213,6 +214,7 @@ void ContentFeatures::deSerialize(std::istream &is, IGameDef *gamedef)
        int version = readU8(is);
        if(version != 0)
                throw SerializationError("unsupported ContentFeatures version");
+       name = deSerializeString(is);
        drawtype = (enum NodeDrawType)readU8(is);
        visual_scale = readF1000(is);
        if(readU8(is) != 6)
@@ -320,13 +322,11 @@ public:
                {
                        ContentFeatures *f = &m_content_features[i];
                        f->reset(); // Reset to defaults
-                       f->modified = false; // Not changed from default
                        if(i == CONTENT_IGNORE || i == CONTENT_AIR){
                                f->drawtype = NDT_AIRLIKE;
                                continue;
                        }
                        f->setAllTextures("unknown_block.png");
-                       //f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
                }
 #ifndef SERVER
                // Make CONTENT_IGNORE to not block the view when occlusion culling
@@ -361,14 +361,14 @@ public:
        // Writable
        virtual void set(content_t c, const ContentFeatures &def)
        {
-               infostream<<"registerNode: registering content \""<<c<<"\""<<std::endl;
+               infostream<<"registerNode: registering content id \""<<c
+                               <<"\": name=\""<<def.name<<"\""<<std::endl;
                assert(c <= MAX_CONTENT);
                m_content_features[c] = def;
        }
        virtual ContentFeatures* getModifiable(content_t c)
        {
                assert(c <= MAX_CONTENT);
-               m_content_features[c].modified = true; // Assume it is modified
                return &m_content_features[c];
        }
        virtual void updateTextures(ITextureSource *tsrc)
@@ -500,7 +500,7 @@ public:
                for(u16 i=0; i<=MAX_CONTENT; i++)
                {
                        ContentFeatures *f = &m_content_features[i];
-                       if(!f->modified)
+                       if(f->name == "")
                                continue;
                        writeU16(tmp_os, i);
                        f->serialize(tmp_os);
@@ -523,7 +523,6 @@ public:
                        }
                        ContentFeatures *f = &m_content_features[i];
                        f->deSerialize(tmp_is, gamedef);
-                       f->modified = true;
                }
        }
 private:
index b29f2173411765264afcb91af7e7af8660334c00..a29626b10fff7ed1aaea3327231c811c3d1bde97 100644 (file)
@@ -138,13 +138,12 @@ struct ContentFeatures
        // the texture atlas
        std::set<std::string> used_texturenames;
        
-       // True if this actually contains non-default data
-       bool modified;
-
        /*
                Actual data
        */
 
+       std::string name; // "" = undefined node
+
        // Visual definition
        enum NodeDrawType drawtype;
        float visual_scale; // Misc. scale parameter