diff options
author | Joseph-Eugene Winzer | 2017-12-21 06:58:04 +0100 |
---|---|---|
committer | Thierry Crozat | 2018-01-23 02:15:44 +0000 |
commit | d90fa9d74513d03884f289c92f588957a14334a4 (patch) | |
tree | f58ac4408b20afe2342821b3da8ca8acae00cee9 | |
parent | acfe2ab145eeccd3129f18a10120b3bc5259696d (diff) | |
download | scummvm-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().
-rw-r--r-- | engines/supernova/rooms.cpp | 58 |
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); |