aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/items.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2018-02-25 19:31:52 +0100
committerPeter Kohaut2018-02-25 22:38:52 +0100
commit62b75b99908f9cf1ea60bd4dfa415395e80d5c78 (patch)
tree91f2b2b058252ea4c7d7fe8e8e4a7d71850d7099 /engines/bladerunner/items.cpp
parent842c67fc34fdc1ff932c8cf70c768e6ad8157038 (diff)
downloadscummvm-rg350-62b75b99908f9cf1ea60bd4dfa415395e80d5c78.tar.gz
scummvm-rg350-62b75b99908f9cf1ea60bd4dfa415395e80d5c78.tar.bz2
scummvm-rg350-62b75b99908f9cf1ea60bd4dfa415395e80d5c78.zip
BLADERUNNER: Added Generic Walker actors
Fixed isseue of duplicating items in world Fixed fog issue with incorrect rendering in special occasions Added basic debugger console Refactored looping code for better readability
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;
}