Falling sand and gravel
[oweals/minetest.git] / src / nodedef.h
index e0b7da4804620470f93b5d4db528b1b8f66a8dd8..54722f5af5ee08bf5b4a312882450ccd0ee7632b 100644 (file)
@@ -32,28 +32,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 class ITextureSource;
 class IGameDef;
 
-/*
-       TODO: Rename to nodedef.h
-*/
-
-#if 0
-
-/*
-       Content feature list
-       
-       Used for determining properties of MapNodes by content type without
-       storing such properties in the nodes itself.
-*/
-
-/*
-       Initialize content feature table.
-
-       Must be called before accessing the table.
-*/
-void init_contentfeatures(ITextureSource *tsrc);
-
-#endif
-
 enum ContentParamType
 {
        CPT_NONE,
@@ -160,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
@@ -209,6 +186,7 @@ struct ContentFeatures
        std::string dug_item;
        // Extra dug item and its rarity
        std::string extra_dug_item;
+       // Usual get interval for extra dug item
        s32 extra_dug_item_rarity;
        // Initial metadata is cloned from this
        NodeMetadata *initial_metadata;
@@ -227,6 +205,9 @@ struct ContentFeatures
        u32 damage_per_second;
        NodeBox selection_box;
        MaterialProperties material;
+       std::string cookresult_item;
+       float furnace_cooktime;
+       float furnace_burntime;
 
        /*
                Methods
@@ -272,6 +253,8 @@ public:
        // Get node definition
        virtual const ContentFeatures& get(content_t c) const=0;
        virtual const ContentFeatures& get(const MapNode &n) const=0;
+       virtual bool getId(const std::string &name, content_t &result) const=0;
+       virtual const ContentFeatures& get(const std::string &name) const=0;
        
        virtual void serialize(std::ostream &os)=0;
 };
@@ -285,10 +268,18 @@ public:
        // Get node definition
        virtual const ContentFeatures& get(content_t c) const=0;
        virtual const ContentFeatures& get(const MapNode &n) const=0;
+       virtual bool getId(const std::string &name, content_t &result) const=0;
+       // If not found, returns the features of CONTENT_IGNORE
+       virtual const ContentFeatures& get(const std::string &name) const=0;
                
        // Register node definition
        virtual void set(content_t c, const ContentFeatures &def)=0;
-       virtual ContentFeatures* getModifiable(content_t c)=0;
+       // Register node definition by name (allocate an id)
+       // If returns CONTENT_IGNORE, could not allocate id
+       virtual content_t set(const std::string &name,
+                       const ContentFeatures &def)=0;
+       // If returns CONTENT_IGNORE, could not allocate id
+       virtual content_t allocateDummy(const std::string &name)=0;
 
        /*
                Update tile textures to latest return values of TextueSource.