MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / removeItem

Method removeItem

src/Savegame/SavedBattleGame.cpp:985–1038  ·  view source on GitHub ↗

* Removes an item from the game. Eg. when ammo item is depleted. * @param item The Item to remove. */

Source from the content-addressed store, hash-verified

983 * @param item The Item to remove.
984 */
985void SavedBattleGame::removeItem(BattleItem *item)
986{
987 // due to strange design, the item has to be removed from the tile it is on too (if it is on a tile)
988 Tile *t = item->getTile();
989 BattleUnit *b = item->getOwner();
990 if (t)
991 {
992 for (std::vector<BattleItem*>::iterator it = t->getInventory()->begin(); it != t->getInventory()->end(); ++it)
993 {
994 if ((*it) == item)
995 {
996 t->getInventory()->erase(it);
997 break;
998 }
999 }
1000 }
1001 if (b)
1002 {
1003 for (std::vector<BattleItem*>::iterator it = b->getInventory()->begin(); it != b->getInventory()->end(); ++it)
1004 {
1005 if ((*it) == item)
1006 {
1007 b->getInventory()->erase(it);
1008 break;
1009 }
1010 }
1011 }
1012
1013 for (std::vector<BattleItem*>::iterator i = _items.begin(); i != _items.end(); ++i)
1014 {
1015 if (*i == item)
1016 {
1017 _items.erase(i);
1018 break;
1019 }
1020 }
1021
1022 _deleted.push_back(item);
1023 /*
1024 for (int i = 0; i < _mapsize_x * _mapsize_y * _mapsize_z; ++i)
1025 {
1026 for (std::vector<BattleItem*>::iterator it = _tiles[i]->getInventory()->begin(); it != _tiles[i]->getInventory()->end(); )
1027 {
1028 if ((*it) == item)
1029 {
1030 it = _tiles[i]->getInventory()->erase(it);
1031 return;
1032 }
1033 ++it;
1034 }
1035 }
1036 */
1037
1038}
1039
1040/**
1041 * Sets whether the mission was aborted or successful.

Callers

nothing calls this directly

Calls 3

getOwnerMethod · 0.80
getTileMethod · 0.45
getInventoryMethod · 0.45

Tested by

no test coverage detected