/*
-Minetest-c55
-Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+GNU Lesser General Public License for more details.
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#define INVENTORY_HEADER
#include <iostream>
-#include <sstream>
#include <string>
#include <vector>
-#include "common_irrlicht.h"
+#include "irrlichttypes.h"
#include "debug.h"
#include "itemdef.h"
-struct ToolDiggingProperties;
+struct ToolCapabilities;
struct ItemStack
{
}
// Get tool digging properties, or those of the hand if not a tool
- const ToolDiggingProperties& getToolDiggingProperties(
+ const ToolCapabilities& getToolCapabilities(
IItemDefManager *itemdef) const
{
- ToolDiggingProperties *prop;
- prop = itemdef->get(name).tool_digging_properties;
- if(prop == NULL)
- prop = itemdef->get("").tool_digging_properties;
- assert(prop != NULL);
- return *prop;
+ ToolCapabilities *cap;
+ cap = itemdef->get(name).tool_capabilities;
+ if(cap == NULL)
+ cap = itemdef->get("").tool_capabilities;
+ assert(cap != NULL);
+ return *cap;
}
// Wear out (only tools)
~InventoryList();
void clearItems();
void setSize(u32 newsize);
+ void setWidth(u32 newWidth);
+ void setName(const std::string &name);
void serialize(std::ostream &os) const;
void deSerialize(std::istream &is);
InventoryList(const InventoryList &other);
InventoryList & operator = (const InventoryList &other);
+ bool operator == (const InventoryList &other);
const std::string &getName() const;
u32 getSize() const;
+ u32 getWidth() const;
// Count used slots
u32 getUsedSlots() const;
u32 getFreeSlots() const;
// Similar to takeItem, but keeps the slot intact.
ItemStack peekItem(u32 i, u32 peekcount) const;
+ // Move an item to a different list (or a different stack in the same list)
+ // count is the maximum number of items to move (0 for everything)
+ void moveItem(u32 i, InventoryList *dest, u32 dest_i, u32 count = 0);
+
private:
std::vector<ItemStack> m_items;
- u32 m_size;
+ u32 m_size, m_width;
std::string m_name;
IItemDefManager *m_itemdef;
};
~Inventory();
void clear();
+ void clearContents();
Inventory(IItemDefManager *itemdef);
Inventory(const Inventory &other);
Inventory & operator = (const Inventory &other);
+ bool operator == (const Inventory &other);
void serialize(std::ostream &os) const;
void deSerialize(std::istream &is);
InventoryList * addList(const std::string &name, u32 size);
InventoryList * getList(const std::string &name);
const InventoryList * getList(const std::string &name) const;
+ std::vector<const InventoryList*> getLists();
bool deleteList(const std::string &name);
// A shorthand for adding items. Returns leftover item (possibly empty).
ItemStack addItem(const std::string &listname, const ItemStack &newitem)