diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-28 17:11:14 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:57 +0200 |
commit | 705f142b8d53c22aac4f023d12db6fef010d4d9e (patch) | |
tree | 5b1a6be56702248c24f7c55fe03220a82e6c942d /src/nodemetadata.h | |
parent | e880cc40e98e7eedd7e8b51810cbc0348fff4a6f (diff) | |
download | minetest-705f142b8d53c22aac4f023d12db6fef010d4d9e.tar.gz minetest-705f142b8d53c22aac4f023d12db6fef010d4d9e.tar.bz2 minetest-705f142b8d53c22aac4f023d12db6fef010d4d9e.zip |
GenericNodeMetadata and an example furnace
Diffstat (limited to 'src/nodemetadata.h')
-rw-r--r-- | src/nodemetadata.h | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/nodemetadata.h b/src/nodemetadata.h index 37668268e..19ce80a42 100644 --- a/src/nodemetadata.h +++ b/src/nodemetadata.h @@ -53,23 +53,54 @@ public: virtual const char* typeName() const = 0; virtual NodeMetadata* clone(IGameDef *gamedef) = 0; virtual void serializeBody(std::ostream &os) = 0; + + // Called on client-side; shown on screen when pointed at 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 + // 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. + + // A step in time. Shall return true if metadata changed. virtual bool step(float dtime) {return false;} + + // Whether the related node and this metadata cannot be removed virtual bool nodeRemovalDisabled(){return false;} - // Used to make custom inventory menus. + // If non-empty, player can interact by using an inventory view // 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){} + + // If true, player can interact by writing text virtual bool allowsTextInput(){ return false; } + // Get old text for player interaction virtual std::string getText(){ return ""; } + // Set player-written text virtual void setText(const std::string &t){} + + // If returns non-empty, only given player can modify text/inventory + virtual std::string getOwner(){ return std::string(""); } + // The name of the player who placed the node + virtual void setOwner(std::string t){} + + /* Interface for GenericNodeMetadata */ + + virtual void setInfoText(const std::string &text){}; + virtual void setInventoryDrawSpec(const std::string &text){}; + virtual void setAllowTextInput(bool b){}; + + virtual void setRemovalDisabled(bool b){}; + virtual void setEnforceOwner(bool b){}; + + virtual bool isInventoryModified(){return false;}; + virtual void resetInventoryModified(){}; + virtual bool isTextModified(){return false;}; + virtual void resetTextModified(){}; + + virtual void setString(const std::string &name, const std::string &var){} + virtual std::string getString(const std::string &name){return "";} + protected: static void registerType(u16 id, const std::string &name, Factory f, Factory2 f2); |