aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/items.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/items.cpp')
-rw-r--r--engines/bladerunner/items.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/engines/bladerunner/items.cpp b/engines/bladerunner/items.cpp
index 6360d4a3e8..9d9efd6a38 100644
--- a/engines/bladerunner/items.cpp
+++ b/engines/bladerunner/items.cpp
@@ -74,11 +74,11 @@ bool Items::addToWorld(int itemId, int animationId, int setId, Vector3 position,
int itemIndex = findItem(itemId);
if (itemIndex == -1) {
itemIndex = _items.size();
+ _items.push_back(new Item(_vm));
}
- Item *item = new Item(_vm);
+ Item *item = _items[itemIndex];
item->setup(itemId, setId, animationId, position, facing, height, width, isTargetFlag, isVisible, isPoliceMazeEnemy);
- _items.push_back(item);
if (addToSetFlag && setId == _vm->_scene->getSetId()) {
return _vm->_sceneObjects->addItem(itemId + kSceneObjectOffsetItems, &item->_boundingBox, &item->_screenRectangle, isTargetFlag, isVisible);
@@ -87,12 +87,12 @@ bool Items::addToWorld(int itemId, int animationId, int setId, Vector3 position,
}
bool Items::addToSet(int setId) {
- int itemCount = _vm->_items->_items.size();
+ int itemCount = _items.size();
if (itemCount == 0) {
return true;
}
for (int i = 0; i < itemCount; i++) {
- Item *item = _vm->_items->_items[i];
+ Item *item = _items[i];
if (item->_setId == setId) {
_vm->_sceneObjects->addItem(item->_itemId + kSceneObjectOffsetItems, &item->_boundingBox, &item->_screenRectangle, item->isTarget(), item->_isVisible);
}
@@ -112,7 +112,9 @@ bool Items::remove(int itemId) {
if (_items[itemIndex]->_setId == _vm->_scene->getSetId()) {
_vm->_sceneObjects->remove(itemId + kSceneObjectOffsetItems);
}
- _items.remove_at(itemIndex);
+
+ delete _items.remove_at(itemIndex);
+
return true;
}