aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scene.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-07-08 20:49:00 -0400
committerPaul Gilbert2015-07-08 20:49:00 -0400
commit6b3df0d9669d83eebd94976a9b995620e75445be (patch)
tree2a4932a1e7eb994d62659be2b891ec8d14abb731 /engines/sherlock/scene.cpp
parentda562308cf534949aa2fbde65cab72e9a5958222 (diff)
downloadscummvm-rg350-6b3df0d9669d83eebd94976a9b995620e75445be.tar.gz
scummvm-rg350-6b3df0d9669d83eebd94976a9b995620e75445be.tar.bz2
scummvm-rg350-6b3df0d9669d83eebd94976a9b995620e75445be.zip
SHERLOCK: RT: Implement handling of 2nd object requiredFlag
Diffstat (limited to 'engines/sherlock/scene.cpp')
-rw-r--r--engines/sherlock/scene.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index 450370de2d..4e5cacb5b2 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -1099,9 +1099,15 @@ void Scene::checkSceneFlags(bool flag) {
for (uint idx = 0; idx < _bgShapes.size(); ++idx) {
Object &o = _bgShapes[idx];
+ bool flag = true;
- if (o._requiredFlag) {
- if (!_vm->readFlags(_bgShapes[idx]._requiredFlag)) {
+ if (o._requiredFlag[0] || o._requiredFlag[1]) {
+ if (o._requiredFlag[0] != 0)
+ flag = _vm->readFlags(o._requiredFlag[0]);
+ if (o._requiredFlag[1] != 0)
+ flag &= _vm->readFlags(o._requiredFlag[1]);
+
+ if (!flag) {
// Kill object
if (o._type != HIDDEN && o._type != INVALID) {
if (o._images == nullptr || o._images->size() == 0)
@@ -1111,7 +1117,7 @@ void Scene::checkSceneFlags(bool flag) {
// Flag it as needing to be hidden after first erasing it
o._type = mode;
}
- } else if (_bgShapes[idx]._requiredFlag > 0) {
+ } else if (IS_ROSE_TATTOO || o._requiredFlag > 0) {
// Restore object
if (o._images == nullptr || o._images->size() == 0)
o._type = NO_SHAPE;