- Text
*/
+class Inventory;
+
class NodeMetadata
{
public:
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;}
+ // Used to make custom inventory menus.
+ // See format in guiInventoryMenu.cpp.
+ virtual std::string getInventoryDrawSpecString(){return "";}
+ // primarily used for locking chests, but others can play too
+ virtual std::string getOwner(){ return std::string(""); }
+ virtual void setOwner(std::string t){ }
protected:
static void registerType(u16 id, Factory f);
static core::map<u16, Factory> m_types;
};
-class SignNodeMetadata : public NodeMetadata
-{
-public:
- SignNodeMetadata(std::string text);
- //~SignNodeMetadata();
-
- virtual u16 typeId() const;
- static NodeMetadata* create(std::istream &is);
- virtual NodeMetadata* clone();
- virtual void serializeBody(std::ostream &os);
- virtual std::string infoText();
-
- std::string getText(){ return m_text; }
- void setText(std::string t){ m_text = t; }
-
-private:
- std::string m_text;
-};
-
-class ChestNodeMetadata : public NodeMetadata
-{
-public:
- ChestNodeMetadata();
-
- virtual u16 typeId() const;
- static NodeMetadata* create(std::istream &is);
- virtual NodeMetadata* clone();
- virtual void serializeBody(std::ostream &os);
- virtual std::string infoText();
-
-private:
-};
+/*
+ List of metadata of all the nodes of a block
+*/
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;
};