00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/shop.h"
00023
00024 #include "shopitem.h"
00025
00026 #include "utils/dtor.h"
00027
00028 ShopItems::ShopItems(bool mergeDuplicates) :
00029 mMergeDuplicates(mergeDuplicates)
00030 {
00031 }
00032
00033 ShopItems::~ShopItems()
00034 {
00035 clear();
00036 }
00037
00038 int ShopItems::getNumberOfElements()
00039 {
00040 return mShopItems.size();
00041 }
00042
00043 std::string ShopItems::getElementAt(int i)
00044 {
00045 return mShopItems.at(i)->getDisplayName();
00046 }
00047
00048 void ShopItems::addItem(int id, int amount, int price)
00049 {
00050 mShopItems.push_back(new ShopItem(-1, id, amount, price));
00051 }
00052
00053 void ShopItems::addItem(int inventoryIndex, int id, int quantity, int price)
00054 {
00055 ShopItem *item = 0;
00056 if (mMergeDuplicates)
00057 {
00058 item = findItem(id);
00059 }
00060
00061 if (item)
00062 {
00063 item->addDuplicate (inventoryIndex, quantity);
00064 }
00065 else
00066 {
00067 item = new ShopItem(inventoryIndex, id, quantity, price);
00068 mShopItems.push_back(item);
00069 }
00070 }
00071
00072 ShopItem *ShopItems::at(int i) const
00073 {
00074 return mShopItems.at(i);
00075 }
00076
00077 void ShopItems::erase(int i)
00078 {
00079 mShopItems.erase(mShopItems.begin() + i);
00080 }
00081
00082 void ShopItems::clear()
00083 {
00084 delete_all(mShopItems);
00085 mShopItems.clear();
00086 }
00087
00088 ShopItem *ShopItems::findItem(int id)
00089 {
00090 ShopItem *item;
00091
00092 std::vector<ShopItem*>::iterator it;
00093 for(it = mShopItems.begin(); it != mShopItems.end(); it++)
00094 {
00095 item = *(it);
00096 if (item->getId() == id)
00097 {
00098 return item;
00099 }
00100 }
00101
00102 return 0;
00103 }