/*
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
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef ITEMSTACKMETADATA_HEADER
-#define ITEMSTACKMETADATA_HEADER
+#pragma once
#include "metadata.h"
+#include "tool.h"
class Inventory;
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);
-};
-#endif
+ 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;
+};