summaryrefslogtreecommitdiff
path: root/src/itemstackmetadata.h
diff options
context:
space:
mode:
authorraymoo <uguu@installgentoo.com>2017-04-18 16:30:27 -0700
committerparamat <mat.gregory@virginmedia.com>2017-10-29 11:57:38 +0000
commita637107a4e81be88938d68df4deae50e68cf2cd8 (patch)
tree2d35b9bf380af88bb7618a6b4efbca6f55c338d3 /src/itemstackmetadata.h
parent610ea6f21629933be3b38c2b5fce53a35c5aac3a (diff)
downloadminetest-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.h22
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;
};