aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/rooms.cpp
diff options
context:
space:
mode:
authorJoseph-Eugene Winzer2017-12-21 06:58:04 +0100
committerThierry Crozat2018-01-23 02:15:44 +0000
commitd90fa9d74513d03884f289c92f588957a14334a4 (patch)
treef58ac4408b20afe2342821b3da8ca8acae00cee9 /engines/supernova/rooms.cpp
parentacfe2ab145eeccd3129f18a10120b3bc5259696d (diff)
downloadscummvm-rg350-d90fa9d74513d03884f289c92f588957a14334a4.tar.gz
scummvm-rg350-d90fa9d74513d03884f289c92f588957a14334a4.tar.bz2
scummvm-rg350-d90fa9d74513d03884f289c92f588957a14334a4.zip
SUPERNOVA: Fixes setting of properies
resetProperty() clears the object's property flag compared to setProperty().
Diffstat (limited to 'engines/supernova/rooms.cpp')
-rw-r--r--engines/supernova/rooms.cpp58
1 files changed, 34 insertions, 24 deletions
diff --git a/engines/supernova/rooms.cpp b/engines/supernova/rooms.cpp
index da6eafabc5..3a32579e8f 100644
--- a/engines/supernova/rooms.cpp
+++ b/engines/supernova/rooms.cpp
@@ -2357,7 +2357,7 @@ void AxacussCell::animation() {
_vm->renderImage(_gm->invertSection(31));
_vm->renderImage(28);
getObject(0)->_click = 255;
- getObject(1)->setProperty(EXIT | OPENABLE | OPENED | CLOSED);
+ getObject(1)->resetProperty(EXIT | OPENABLE | OPENED | CLOSED);
} else if ((_gm->_state._timeRobot >= 301) && (_gm->_state._timeRobot <= 320)) {
_vm->renderImage(_gm->invertSection(329 - _gm->_state._timeRobot));
_vm->renderImage(328 - _gm->_state._timeRobot);
@@ -2365,14 +2365,14 @@ void AxacussCell::animation() {
_vm->renderImage(31);
setSectionVisible(8, false);
getObject(0)->_click = 1;
- getObject(1)->setProperty(EXIT | OPENABLE | CLOSED);
+ getObject(1)->resetProperty(EXIT | OPENABLE | CLOSED);
}
if (_gm->_state._timeRobot == 599) {
_vm->renderImage(_gm->invertSection(31));
_vm->renderImage(8);
getObject(0)->_click = 255;
- getObject(1)->setProperty(EXIT | OPENABLE | OPENED | CLOSED);
+ getObject(1)->resetProperty(EXIT | OPENABLE | OPENED | CLOSED);
} else if ((_gm->_state._timeRobot >= 601) && (_gm->_state._timeRobot <= 620)) {
_vm->renderImage(_gm->_state._timeRobot - 593 + 128);
_vm->renderImage(_gm->_state._timeRobot - 592);
@@ -2380,7 +2380,7 @@ void AxacussCell::animation() {
_vm->renderImage(31);
setSectionVisible(28, false);
getObject(0)->_click = 1;
- getObject(1)->setProperty(EXIT | OPENABLE | CLOSED);
+ getObject(1)->resetProperty(EXIT | OPENABLE | CLOSED);
} else if (_gm->_state._timeRobot == 700)
_gm->_state._timeRobot = 0;
else if (_gm->_state._timeRobot == 10002) {
@@ -2651,7 +2651,7 @@ bool AxacussCorridor6::interact(Action verb, Object &obj1, Object &obj2) {
(obj1.hasProperty(OPENED))) {
_vm->renderImage(6);
setSectionVisible(7, false);
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ obj1.resetProperty(EXIT | OPENABLE | CLOSED);
_gm->_rooms[CORRIDOR8]->setSectionVisible(27, false);
_gm->_rooms[CORRIDOR8]->setSectionVisible(28, true);
_gm->_rooms[CORRIDOR8]->getObject(0)->disableProperty(OPENED);
@@ -2677,7 +2677,7 @@ bool AxacussCorridor8::interact(Action verb, Object &obj1, Object &obj2) {
obj1.setProperty(OPENED);
_gm->_rooms[CORRIDOR6]->setSectionVisible(6, false);
_gm->_rooms[CORRIDOR6]->setSectionVisible(7, true);
- _gm->_rooms[CORRIDOR6]->getObject(2)->setProperty(EXIT | OPENED | OPENABLE);
+ _gm->_rooms[CORRIDOR6]->getObject(2)->resetProperty(EXIT | OPENED | OPENABLE);
_gm->_rooms[CORRIDOR6]->getObject(2)->_click = 4;
_vm->playSound(kAudioDoorOpen);
} else if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && (obj1._type & OPENED)) {
@@ -2686,7 +2686,7 @@ bool AxacussCorridor8::interact(Action verb, Object &obj1, Object &obj2) {
obj1.disableProperty(OPENED);
_gm->_rooms[CORRIDOR6]->setSectionVisible(6, true);
_gm->_rooms[CORRIDOR6]->setSectionVisible(7, false);
- _gm->_rooms[CORRIDOR6]->getObject(2)->setProperty(EXIT | CLOSED | OPENABLE);
+ _gm->_rooms[CORRIDOR6]->getObject(2)->resetProperty(EXIT | CLOSED | OPENABLE);
_vm->playSound(kAudioDoorClose);
} else
return false;
@@ -2736,15 +2736,17 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
if ((verb == ACTION_CLOSE) && (obj1._id >= DOOR1) && (obj1._id <= DOOR4) && obj1.hasProperty(OPENED)) {
_vm->renderImage(_gm->invertSection(obj1._id - DOOR1 + 1));
_vm->playSound(kAudioDoorClose);
+ obj1.disableProperty(OPENED);
+ obj1.setProperty(CLOSED);
if (obj1.hasProperty(OCCUPIED)) {
_gm->_state._destination = 255;
- obj1.setProperty(EXIT | OPENABLE | CLOSED | CAUGHT);
+ obj1.disableProperty(OCCUPIED);
+ obj1.setProperty(CAUGHT);
if (!_gm->_rooms[OFFICE_L1 + obj1._id - DOOR1]->isSectionVisible(4))
_gm->search(180);
else
_gm->_state._eventTime = 0xffffffff;
- } else
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ }
} else if (((verb == ACTION_WALK) || ((verb == ACTION_OPEN) && !obj1.hasProperty(OPENED))) &&
(obj1._id >= DOOR1) && (obj1._id <= DOOR4) &&
obj1.hasProperty(OCCUPIED)) {
@@ -2758,7 +2760,7 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
_vm->playSound(kAudioDoorOpen);
if (getObject(4)->hasProperty(CAUGHT))
_gm->busted(11);
- getObject(4)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(4)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR2) && !getObject(5)->hasProperty(OPENED)) {
if (getObject(5)->hasProperty(OCCUPIED))
@@ -2768,7 +2770,7 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
_vm->playSound(kAudioDoorOpen);
if (getObject(5)->hasProperty(CAUGHT))
_gm->busted(16);
- getObject(5)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(5)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR3) && !getObject(6)->hasProperty(OPENED)) {
if (getObject(6)->hasProperty(OCCUPIED))
@@ -2778,7 +2780,7 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
_vm->playSound(kAudioDoorOpen);
if (getObject(6)->hasProperty(CAUGHT))
_gm->busted(15);
- getObject(6)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(6)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR4) && !getObject(7)->hasProperty(OPENED)) {
if (getObject(7)->hasProperty(OCCUPIED)) {
@@ -2788,7 +2790,7 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
_vm->playSound(kAudioDoorOpen);
if (getObject(7)->hasProperty(CAUGHT))
_gm->busted(20);
- getObject(7)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(7)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_LOOK) && (obj1._id >= DOOR1) && (obj1._id <= DOOR4)) {
_gm->_state._nameSeen[obj1._id - DOOR1] = true;
@@ -2868,12 +2870,14 @@ bool AxacussOffice1::interact(Action verb, Object &obj1, Object &obj2) {
if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) &&
obj1.hasProperty(OPENED)) {
_vm->renderImage(_gm->invertSection(9));
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ obj1.disableProperty(OPENED);
+ obj1.setProperty(CLOSED);
_vm->playSound(kAudioDoorClose);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR) &&
!getObject(0)->hasProperty(OPENED)) {
_vm->renderImage(9);
- getObject(0)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(0)->disableProperty(CLOSED);
+ getObject(0)->setProperty(OPENED);
_vm->playSound(kAudioDoorOpen);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, COMPUTER, MAGNET)) {
_vm->renderImage(4);
@@ -2901,7 +2905,7 @@ bool AxacussOffice1::interact(Action verb, Object &obj1, Object &obj2) {
} else {
_vm->renderImage(6);
setSectionVisible(7, false);
- obj1.setProperty(OPENABLE | OPENED);
+ obj1.resetProperty(OPENABLE | OPENED);
if (getObject(2)->hasProperty(TAKE)) {
_vm->renderImage(8);
getObject(2)->_click = 9;
@@ -2913,7 +2917,7 @@ bool AxacussOffice1::interact(Action verb, Object &obj1, Object &obj2) {
} else if ((verb == ACTION_CLOSE) && (obj1._id == LOCKER) && obj1.hasProperty(OPENED)) {
_vm->renderImage(7);
setSectionVisible(6, false);
- obj1.setProperty(OPENABLE | CLOSED);
+ obj1.resetProperty(OPENABLE | CLOSED);
setSectionVisible(8, false);
getObject(2)->_click = 255;
_vm->playSound(kAudioDoorClose);
@@ -2950,11 +2954,13 @@ bool AxacussOffice2::interact(Action verb, Object &obj1, Object &obj2) {
if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) &&
obj1.hasProperty(OPENED)) {
_vm->renderImage(_gm->invertSection(9));
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ obj1.disableProperty(OPENED);
+ obj1.setProperty(CLOSED);
_vm->playSound(kAudioDoorClose);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR) && !getObject(0)->hasProperty(OPENED)) {
_vm->renderImage(9);
- getObject(0)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(0)->disableProperty(CLOSED);
+ getObject(0)->setProperty(OPENED);
_vm->playSound(kAudioDoorOpen);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, COMPUTER, MAGNET)) {
_vm->renderImage(4);
@@ -2975,12 +2981,14 @@ bool AxacussOffice3::interact(Action verb, Object &obj1, Object &obj2) {
if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) &&
obj1.hasProperty(OPENED)) {
_vm->renderImage(_gm->invertSection(3));
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ obj1.disableProperty(OPENED);
+ obj1.setProperty(CLOSED);
_vm->playSound(kAudioDoorClose);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR) &&
!getObject(0)->hasProperty(OPENED)) {
_vm->renderImage(3);
- getObject(0)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(0)->disableProperty(CLOSED);
+ getObject(0)->setProperty(OPENED);
_vm->playSound(kAudioDoorOpen);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, COMPUTER, MAGNET)) {
_vm->renderImage(4);
@@ -3003,12 +3011,14 @@ bool AxacussOffice3::interact(Action verb, Object &obj1, Object &obj2) {
bool AxacussOffice4::interact(Action verb, Object &obj1, Object &obj2) {
if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && obj1.hasProperty(OPENED)) {
_vm->renderImage(_gm->invertSection(3));
- obj1.setProperty(EXIT | OPENABLE | CLOSED);
+ obj1.disableProperty(OPENED);
+ obj1.setProperty(CLOSED);
_vm->playSound(kAudioDoorClose);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR) &&
!getObject(0)->hasProperty(OPENED)) {
_vm->renderImage(3);
- getObject(0)->setProperty(EXIT | OPENABLE | OPENED);
+ getObject(0)->disableProperty(CLOSED);
+ getObject(0)->setProperty(OPENED);
_vm->playSound(kAudioDoorOpen);
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, COMPUTER, MAGNET)) {
_vm->renderImage(4);