#ifndef INVENTORY_HEADER
#define INVENTORY_HEADER
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <vector>
-#include "irrlichttypes_bloated.h"
#include "debug.h"
#include "itemdef.h"
+#include "irrlichttypes.h"
+#include <istream>
+#include <ostream>
+#include <string>
+#include <vector>
struct ToolCapabilities;
// Serialization
void serialize(std::ostream &os) const;
- void deSerialize(std::istream &is, IItemDefManager *itemdef);
- void deSerialize(const std::string &s, IItemDefManager *itemdef);
+ // Deserialization. Pass itemdef unless you don't want aliases resolved.
+ void deSerialize(std::istream &is, IItemDefManager *itemdef = NULL);
+ void deSerialize(const std::string &s, IItemDefManager *itemdef = NULL);
// Returns the string used for inventory
std::string getItemString() const;
InventoryList(const InventoryList &other);
InventoryList & operator = (const InventoryList &other);
+ bool operator == (const InventoryList &other) const;
+ bool operator != (const InventoryList &other) const
+ {
+ return !(*this == other);
+ }
const std::string &getName() const;
u32 getSize() const;
Inventory(IItemDefManager *itemdef);
Inventory(const Inventory &other);
Inventory & operator = (const Inventory &other);
-
+ bool operator == (const Inventory &other) const;
+ bool operator != (const Inventory &other) const
+ {
+ return !(*this == other);
+ }
+
void serialize(std::ostream &os) const;
void deSerialize(std::istream &is);
// A shorthand for adding items. Returns leftover item (possibly empty).
ItemStack addItem(const std::string &listname, const ItemStack &newitem)
{
+ m_dirty = true;
InventoryList *list = getList(listname);
if(list == NULL)
return newitem;
return list->addItem(newitem);
}
-
+
+ bool checkModified() const
+ {
+ return m_dirty;
+ }
+
+ void setModified(const bool x)
+ {
+ m_dirty = x;
+ }
+
private:
// -1 if not found
const s32 getListIndex(const std::string &name) const;
std::vector<InventoryList*> m_lists;
IItemDefManager *m_itemdef;
+ bool m_dirty;
};
#endif