]> git.lizzy.rs Git - minetest.git/blobdiff - src/itemstackmetadata.h
Add callback on_mapblocks_changed
[minetest.git] / src / itemstackmetadata.h
index 843ef48325c997065158036985d1439a4ced8086..48a029c51f9446d3a74fa03e60b4e6a4e15052a4 100644 (file)
@@ -1,6 +1,6 @@
 /*
 Minetest
-Copyright (C) 2010-2013 rubenwardy <rubenwardy@gmail.com>
+Copyright (C) 2017-8 rubenwardy <rw@rubenwardy.com>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -20,13 +20,35 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #pragma once
 
 #include "metadata.h"
+#include "tool.h"
 
 class Inventory;
 class IItemDefManager;
 
-class ItemStackMetadata : public Metadata
+class ItemStackMetadata : public SimpleMetadata
 {
 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;
 };