diff options
Diffstat (limited to 'src/gui/models/shopitems.cpp')
-rw-r--r-- | src/gui/models/shopitems.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/models/shopitems.cpp b/src/gui/models/shopitems.cpp index 2fd399cb0..3a0d933cc 100644 --- a/src/gui/models/shopitems.cpp +++ b/src/gui/models/shopitems.cpp @@ -111,11 +111,27 @@ ShopItem *ShopItems::at(unsigned int i) const return mShopItems.at(i); } +bool ShopItems::findInAllItems(std::vector<ShopItem*>::iterator &it, + const ShopItem *const item) +{ + const std::vector<ShopItem*>::iterator it_end = mAllShopItems.end(); + for (it = mAllShopItems.begin(); it != it_end; ++ it) + { + if (*it == item) + return true; + } + return false; +} + void ShopItems::erase(const unsigned int i) { if (i >= static_cast<unsigned int>(mShopItems.size())) return; + ShopItem *item = *(mShopItems.begin() + i); + std::vector<ShopItem*>::iterator it; + if (findInAllItems(it, item)) + mAllShopItems.erase(it); mShopItems.erase(mShopItems.begin() + i); } @@ -125,6 +141,9 @@ void ShopItems::del(const unsigned int i) return; ShopItem *item = *(mShopItems.begin() + i); + std::vector<ShopItem*>::iterator it; + if (findInAllItems(it, item)) + mAllShopItems.erase(it); mShopItems.erase(mShopItems.begin() + i); delete item; } |