+#include "extern.h"
#include "pouch.h"
#include "item.h"
+#include <list>
+#include <algorithm>
pouch::pouch()
{
+ count = 0;
}
pouch::~pouch()
clear();
}
-void pouch::sort()
+pouch::pouch(const pouch &p)
{
- items.sort();
+ count = p.count;
+ items = p.items;
+}
+
+pouch::pouch(pouch *p)
+{
+ count = p->count;
+ items = p->items;
}
void pouch::clear()
{
items.clear();
+ count = 0;
}
bool pouch::isEmpty()
return items.empty();
}
-item *pouch::Find(char *n)
+void pouch::sort()
+{
+ items.sort();
+}
+
+itemContainer *pouch::Find(int id)
+{
+ list<itemContainer>::iterator item_iter;
+ item_iter = items.begin();
+
+ while (item_iter != items.end())
+ {
+ if ((*item_iter).getItem()->getID() == id)
+ {
+ return &(*item_iter);
+ }
+ ++item_iter;
+ }
+ return NULL;
+}
+
+itemContainer *pouch::Find(char *n)
{
- list<item *>::iterator item_iter;
+ list<itemContainer>::iterator item_iter;
item_iter = items.begin();
while (item_iter != items.end())
{
- if ((*item_iter)->getName() == n)
+ if ((*item_iter).getItem()->getName() == n)
{
- return (*item_iter);
+ return &(*item_iter);
}
- item_iter++;
+ ++item_iter;
}
return NULL;
}
-item *pouch::Find(string &n)
+itemContainer *pouch::Find(string &n)
{
- list<item *>::iterator item_iter;
+ list<itemContainer>::iterator item_iter;
item_iter = items.begin();
while (item_iter != items.end())
{
- if ((*item_iter)->getName() == n)
+ if ((*item_iter).getItem()->getName() == n)
{
- return (*item_iter);
+ return &(*item_iter);
}
- item_iter++;
+ ++item_iter;
}
return NULL;
}
-void pouch::addItem(item *i)
+itemContainer *pouch::addItem(item *i)
{
- items.push_front(i);
+ if (count >= 3000 || count >= maxitems)
+ {
+ return NULL;
+ }
+ else
+ {
+ itemContainer it(i), *temp;
+ items.push_front(it);
+ ++count;
+ temp = &items.front();
+ sort();
+ return temp;
+ }
}
-void pouch::deleteItem(item *i)
+itemContainer *pouch::addItem(item *i, int amt)
+{
+ if (count >= 3000 || (count + amt) >= maxitems)
+ {
+ return NULL;
+ }
+ else
+ {
+ itemContainer it(i), *temp;
+ for (int x=0; x < amt; x++)
+ {
+ items.push_front(it);
+ ++count;
+ }
+ temp = &items.front();
+ sort();
+ return temp;
+ }
+}
+
+itemContainer *pouch::addItemNoChecks(item *i)
{
- list<item *>::iterator item_iter;
+ itemContainer it(i);
+ items.push_front(it);
+ ++count;
+ return &items.front();
+}
- item_iter = find(items.begin(), items.end(), i);
+void pouch::deleteItem(item *i)
+{
+ list<itemContainer>::iterator item_iter;
+ item_iter = find(items.begin(), items.end(), i);
+
if (item_iter != items.end())
- items.erase(item_iter);
+ {
+ items.erase(item_iter);
+ count--;
+ }
}
const pouch &pouch::operator=(const pouch &right)