diff options
author | raymoo <uguu@installgentoo.com> | 2017-04-18 16:30:27 -0700 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2017-10-29 11:57:38 +0000 |
commit | a637107a4e81be88938d68df4deae50e68cf2cd8 (patch) | |
tree | 2d35b9bf380af88bb7618a6b4efbca6f55c338d3 /src/itemstackmetadata.h | |
parent | 610ea6f21629933be3b38c2b5fce53a35c5aac3a (diff) | |
download | minetest-a637107a4e81be88938d68df4deae50e68cf2cd8.tar.gz minetest-a637107a4e81be88938d68df4deae50e68cf2cd8.tar.bz2 minetest-a637107a4e81be88938d68df4deae50e68cf2cd8.zip |
Allow overriding tool capabilities through itemstack metadata
This makes it possible to modify the tool capabilities of individual
itemstacks by calling a method on itemstack metadata references.
Diffstat (limited to 'src/itemstackmetadata.h')
-rw-r--r-- | src/itemstackmetadata.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/itemstackmetadata.h b/src/itemstackmetadata.h index 843ef4832..0e1977c8c 100644 --- a/src/itemstackmetadata.h +++ b/src/itemstackmetadata.h @@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once #include "metadata.h" +#include "tool.h" class Inventory; class IItemDefManager; @@ -27,6 +28,27 @@ class IItemDefManager; class ItemStackMetadata : public Metadata { public: + ItemStackMetadata() : toolcaps_overridden(false) {} + + // Overrides + void clear() override; + bool setString(const std::string &name, const std::string &var) override; + void serialize(std::ostream &os) const; void deSerialize(std::istream &is); + + const ToolCapabilities &getToolCapabilities( + const ToolCapabilities &default_caps) const + { + return toolcaps_overridden ? toolcaps_override : default_caps; + } + + void setToolCapabilities(const ToolCapabilities &caps); + void clearToolCapabilities(); + +private: + void updateToolCapabilities(); + + bool toolcaps_overridden; + ToolCapabilities toolcaps_override; }; |