summaryrefslogtreecommitdiff
path: root/src/nodemetadata.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-28 17:11:14 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 19:13:57 +0200
commit705f142b8d53c22aac4f023d12db6fef010d4d9e (patch)
tree5b1a6be56702248c24f7c55fe03220a82e6c942d /src/nodemetadata.h
parente880cc40e98e7eedd7e8b51810cbc0348fff4a6f (diff)
downloadminetest-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.h45
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);