diff options
author | Jaromir Wysoglad | 2019-06-06 09:44:00 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | c23411bb7397f97810d52dad212a9fd48e5e22be (patch) | |
tree | c93f275ea51f93f3f490827f50e22673ca267a26 | |
parent | 9e9602051c82cd0173cfb35c28f3318745a9629e (diff) | |
download | scummvm-rg350-c23411bb7397f97810d52dad212a9fd48e5e22be.tar.gz scummvm-rg350-c23411bb7397f97810d52dad212a9fd48e5e22be.tar.bz2 scummvm-rg350-c23411bb7397f97810d52dad212a9fd48e5e22be.zip |
SUPERNOVA2: Finish the elevator room
-rw-r--r-- | engines/supernova2/ms2_def.h | 2 | ||||
-rw-r--r-- | engines/supernova2/resman.cpp | 5 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 42 | ||||
-rw-r--r-- | engines/supernova2/sound.h | 1 |
4 files changed, 46 insertions, 4 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index b83be46448..c63c4f000a 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -229,7 +229,7 @@ kStringElevator42, kStringElevator43, kStringElevator44, kStringElevator45, kStr kStringElevator47, kStringElevator48, kStringElevator49, kStringElevator50, kStringElevator51, kStringElevator52, kStringElevator53, kStringElevator54, kStringElevator55, kStringElevator56, kStringElevator57, kStringElevator58, kStringElevator59, kStringElevator60, kStringElevator61, -kString515, kString516, kString517, kString518, kString519, +kStringElevator62, kStringElevator63, kStringElevator64, kStringElevator65, kString519, kString520, kString521, kString522, kString523, kString524, kString525, kString526, kString527, kString528, kString529, kString530, kString531, kString532, kString533, kString534, diff --git a/engines/supernova2/resman.cpp b/engines/supernova2/resman.cpp index 7ab833f96e..ba3bacfadc 100644 --- a/engines/supernova2/resman.cpp +++ b/engines/supernova2/resman.cpp @@ -47,7 +47,7 @@ static Common::MemoryReadStream *convertToMod(const char *filename, int version static const AudioInfo audioInfo[kAudioNumSamples] = { {55, 18230, -1}, {47, 0, 16010}, - {47, 16010, -1}, + {47, 16010, 17020}, {49, 8010, -1}, {49, 0, 8010}, {53, 30020, -1}, @@ -56,7 +56,8 @@ static const AudioInfo audioInfo[kAudioNumSamples] = { {53, 5010, 30020}, {55, 18230, -1}, {55, 17020, 18230}, - {53, 0, 30020} + {53, 0, 30020}, + {47, 17020, -1} }; static const byte mouseNormal[64] = { diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index 43599b7ec1..d06d38ae7c 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -1657,7 +1657,7 @@ bool Elevator::interact(Action verb, Object &obj1, Object &obj2) { kStringElevator6, kStringElevator7 }; - char input[3]; + Common::String input; if (verb == ACTION_LOOK && obj1._id == DISPLAY) { Common::String format = _vm->getGameString(kStringElevator1); @@ -1758,6 +1758,45 @@ bool Elevator::interact(Action verb, Object &obj1, Object &obj2) { } else _vm->renderMessage(kStringElevator61); + } else if ((verb == ACTION_USE || verb == ACTION_PRESS) && obj1._id == KEYPAD) { + _vm->renderMessage(kStringElevator62); + do { + _gm->edit(input, 237, 66, 2); + } while ((_gm->_key.keycode != Common::KEYCODE_RETURN) && + (_gm->_key.keycode != Common::KEYCODE_ESCAPE) && !_vm->shouldQuit()); + _vm->removeMessage(); + if (_gm->_key.keycode == Common::KEYCODE_RETURN && input[0] != 0) { + for (unsigned i = 0; i < input.size(); i++) { + if (input[i] < '0' || input[i] > '9') { + _vm->renderMessage(kStringElevator63); + return true; + } + } + int64 number = input.asUint64(); + if (number > 60) + _vm->renderMessage(kStringElevator63); + else if (number != _gm->_state._elevatorE) { + if (isSectionVisible(6)) { + _vm->renderImage(6 + 128); + _objectState[4]._type &= ~OPENED; + _vm->playSound(kAudioElevator1); + } + _vm->renderMessage(kStringElevator64); + _gm->_state._elevatorE = number; + if (number) + _objectState[5]._type &= ~OPENED; + else + _objectState[5]._type |= OPENED; + } + } + } else if (verb == ACTION_USE && Object::combine(obj1, obj2, ID_CARD, SLOT)) { + if (_gm->_state._elevatorNumber == 1 && _gm->_state._elevatorE == 32) { + _vm->renderImage(6); + _objectState[4]._type |= OPENED; + _vm->playSound(kAudioTaxiOpen); + } + else + _vm->renderMessage(kStringElevator65); } else return false; return true; @@ -1795,6 +1834,7 @@ void Elevator::jobDescription() { _gm->reply(kStringElevator47, 0, 0); _gm->reply(kStringElevator48, 0, 0); _vm->setCurrentImage(26); + _vm->_system->fillScreen(kColorBlack); _vm->renderImage(0); _gm->reply(kStringElevator49, 1, 1 + 128); int e; diff --git a/engines/supernova2/sound.h b/engines/supernova2/sound.h index e2e693f45d..692e47bc6f 100644 --- a/engines/supernova2/sound.h +++ b/engines/supernova2/sound.h @@ -43,6 +43,7 @@ enum AudioId { kAudioAppearance2, kAudioAppearance3, kAudioElevatorBell, + kAudioElevator1, kAudioNumSamples }; |