]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/nodemetadata.h
fix to the previous commit
[dragonfireclient.git] / src / nodemetadata.h
index e8aa57622d51a1706e9e278331134796e8abcafc..ae02cfc3c2cbd8f294f1d7187c806af51a5b8f4c 100644 (file)
@@ -54,11 +54,14 @@ class NodeMetadata
        virtual u16 typeId() const = 0;
        virtual NodeMetadata* clone() = 0;
        virtual void serializeBody(std::ostream &os) = 0;
-       virtual std::string infoText() {return "<todo: remove this text>";}
+       virtual std::string infoText() {return "";}
        virtual Inventory* getInventory() {return NULL;}
        // This is called always after the inventory is modified, before
        // the changes are copied elsewhere
        virtual void inventoryModified(){}
+       // A step in time. Returns true if metadata changed.
+       virtual bool step(float dtime) {return false;}
+       virtual bool nodeRemovalDisabled(){return false;}
 
 protected:
        static void registerType(u16 id, Factory f);
@@ -98,6 +101,8 @@ class ChestNodeMetadata : public NodeMetadata
        virtual std::string infoText();
        virtual Inventory* getInventory() {return m_inventory;}
 
+       virtual bool nodeRemovalDisabled();
+       
 private:
        Inventory *m_inventory;
 };
@@ -115,15 +120,23 @@ class FurnaceNodeMetadata : public NodeMetadata
        virtual std::string infoText();
        virtual Inventory* getInventory() {return m_inventory;}
        virtual void inventoryModified();
+       virtual bool step(float dtime);
 
 private:
        Inventory *m_inventory;
+       float m_step_accumulator;
+       float m_fuel_totaltime;
+       float m_fuel_time;
+       float m_src_totaltime;
+       float m_src_time;
 };
 
 /*
        List of metadata of all the nodes of a block
 */
 
+class InventoryManager;
+
 class NodeMetadataList
 {
 public:
@@ -138,6 +151,10 @@ class NodeMetadataList
        void remove(v3s16 p);
        // Deletes old data and sets a new one
        void set(v3s16 p, NodeMetadata *d);
+       
+       // A step in time. Returns true if something changed.
+       bool step(float dtime);
+
 private:
        core::map<v3s16, NodeMetadata*> m_data;
 };