Falling sand and gravel
[oweals/minetest.git] / src / content_nodemeta.h
index 84c3aed9d030ae76a9989d64c0706ccbc6b51bc7..86df882ea697e5b7460d0c11d8272c092abe4aa8 100644 (file)
@@ -27,17 +27,18 @@ class Inventory;
 class SignNodeMetadata : public NodeMetadata
 {
 public:
-       SignNodeMetadata(std::string text);
+       SignNodeMetadata(IGameDef *gamedef, std::string text);
        //~SignNodeMetadata();
        
        virtual u16 typeId() const;
-       static NodeMetadata* create(std::istream &is);
-       virtual NodeMetadata* clone();
+       static NodeMetadata* create(std::istream &is, IGameDef *gamedef);
+       virtual NodeMetadata* clone(IGameDef *gamedef);
        virtual void serializeBody(std::ostream &os);
        virtual std::string infoText();
 
-       std::string getText(){ return m_text; }
-       void setText(std::string t){ m_text = t; }
+       virtual bool allowsTextInput(){ return true; }
+       virtual std::string getText(){ return m_text; }
+       virtual void setText(const std::string &t){ m_text = t; }
 
 private:
        std::string m_text;
@@ -46,12 +47,12 @@ private:
 class ChestNodeMetadata : public NodeMetadata
 {
 public:
-       ChestNodeMetadata();
+       ChestNodeMetadata(IGameDef *gamedef);
        ~ChestNodeMetadata();
        
        virtual u16 typeId() const;
-       static NodeMetadata* create(std::istream &is);
-       virtual NodeMetadata* clone();
+       static NodeMetadata* create(std::istream &is, IGameDef *gamedef);
+       virtual NodeMetadata* clone(IGameDef *gamedef);
        virtual void serializeBody(std::ostream &os);
        virtual std::string infoText();
        virtual Inventory* getInventory() {return m_inventory;}
@@ -62,20 +63,44 @@ private:
        Inventory *m_inventory;
 };
 
+class LockingChestNodeMetadata : public NodeMetadata
+{
+public:
+       LockingChestNodeMetadata(IGameDef *gamedef);
+       ~LockingChestNodeMetadata();
+
+       virtual u16 typeId() const;
+       static NodeMetadata* create(std::istream &is, IGameDef *gamedef);
+       virtual NodeMetadata* clone(IGameDef *gamedef);
+       virtual void serializeBody(std::ostream &os);
+       virtual std::string infoText();
+       virtual Inventory* getInventory() {return m_inventory;}
+       virtual bool nodeRemovalDisabled();
+       virtual std::string getInventoryDrawSpecString();
+
+       virtual std::string getOwner(){ return m_text; }
+       virtual void setOwner(std::string t){ m_text = t; }
+
+private:
+       Inventory *m_inventory;
+       std::string m_text;
+};
+
 class FurnaceNodeMetadata : public NodeMetadata
 {
 public:
-       FurnaceNodeMetadata();
+       FurnaceNodeMetadata(IGameDef *gamedef);
        ~FurnaceNodeMetadata();
        
        virtual u16 typeId() const;
-       virtual NodeMetadata* clone();
-       static NodeMetadata* create(std::istream &is);
+       virtual NodeMetadata* clone(IGameDef *gamedef);
+       static NodeMetadata* create(std::istream &is, IGameDef *gamedef);
        virtual void serializeBody(std::ostream &os);
        virtual std::string infoText();
        virtual Inventory* getInventory() {return m_inventory;}
        virtual void inventoryModified();
        virtual bool step(float dtime);
+       virtual bool nodeRemovalDisabled();
        virtual std::string getInventoryDrawSpecString();
 
 private: