aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-06 09:44:00 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commitc23411bb7397f97810d52dad212a9fd48e5e22be (patch)
treec93f275ea51f93f3f490827f50e22673ca267a26
parent9e9602051c82cd0173cfb35c28f3318745a9629e (diff)
downloadscummvm-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.h2
-rw-r--r--engines/supernova2/resman.cpp5
-rw-r--r--engines/supernova2/rooms.cpp42
-rw-r--r--engines/supernova2/sound.h1
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
};