- typedef NodeMetadata* (*Factory)(std::istream&);
-
- NodeMetadata();
- virtual ~NodeMetadata();
-
- static NodeMetadata* deSerialize(std::istream &is);
- void serialize(std::ostream &os);
-
- // This usually is the CONTENT_ value
- 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 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;}
-
-protected:
- static void registerType(u16 id, Factory f);
-private:
- 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; }