1 /* 2 Minetest 3 Copyright (C) 2017-8 rubenwardy <rw@rubenwardy.com> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation; either version 2.1 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License along 16 with this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #pragma once 21 22 #include "metadata.h" 23 #include "tool.h" 24 25 class Inventory; 26 class IItemDefManager; 27 28 class ItemStackMetadata : public Metadata 29 { 30 public: ItemStackMetadata()31 ItemStackMetadata() : toolcaps_overridden(false) {} 32 33 // Overrides 34 void clear() override; 35 bool setString(const std::string &name, const std::string &var) override; 36 37 void serialize(std::ostream &os) const; 38 void deSerialize(std::istream &is); 39 getToolCapabilities(const ToolCapabilities & default_caps)40 const ToolCapabilities &getToolCapabilities( 41 const ToolCapabilities &default_caps) const 42 { 43 return toolcaps_overridden ? toolcaps_override : default_caps; 44 } 45 46 void setToolCapabilities(const ToolCapabilities &caps); 47 void clearToolCapabilities(); 48 49 private: 50 void updateToolCapabilities(); 51 52 bool toolcaps_overridden; 53 ToolCapabilities toolcaps_override; 54 }; 55