diff options
author | Jaromir Wysoglad | 2019-06-19 09:34:51 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | de4dac5693f53360e2a6c34d721ee2676028839b (patch) | |
tree | db27dafc5a73c36b8b00851e55c3bd81dcb54a8d /engines/supernova2 | |
parent | d09b286054d60e5e26d8339467e721662d381f53 (diff) | |
download | scummvm-rg350-de4dac5693f53360e2a6c34d721ee2676028839b.tar.gz scummvm-rg350-de4dac5693f53360e2a6c34d721ee2676028839b.tar.bz2 scummvm-rg350-de4dac5693f53360e2a6c34d721ee2676028839b.zip |
SUPERNOVA2: Fix bug, add pyramid door translation
Combining rod and magnet didn't work if the magnet was clicked
before the rod.
Add subtitle to the pyramid door and an English translated
password (FAST)
Diffstat (limited to 'engines/supernova2')
-rw-r--r-- | engines/supernova2/rooms.cpp | 16 | ||||
-rw-r--r-- | engines/supernova2/rooms.h | 1 | ||||
-rw-r--r-- | engines/supernova2/state.cpp | 6 |
3 files changed, 17 insertions, 6 deletions
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index e9ede99b58..1bec6107d8 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -21,6 +21,7 @@ */ #include "common/system.h" +#include "common/config-manager.h" #include "graphics/palette.h" #include "graphics/cursorman.h" @@ -3704,17 +3705,26 @@ BstDoor::BstDoor(Supernova2Engine *vm, GameManager *gm) { _objectState[16] = Object(_id, kStringLetter, kStringDefaultDescription, BST15, PRESS, 14, 0, 0); _objectState[17] = Object(_id, kStringLetter, kStringDefaultDescription, BST16, PRESS, 15, 0, 0); _objectState[18] = Object(_id, kStringDoor, kStringMassive, DOOR, EXIT | OPENABLE | CLOSED, 16, 16, 0, HALL, 2); + + char germanPassword[16] = {0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0}; + char englishPassword[16] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; + if (ConfMan.get("language") == "en") + for (int i = 0; i < 16; i++) + _password[i] = englishPassword[i]; + else + for (int i = 0; i < 16; i++) + _password[i] = germanPassword[i]; } void BstDoor::onEntrance() { - setRoomSeen(true); + if (ConfMan.get("language") == "en") + _vm->_screen->renderMessage("You are almost there", kMessageNormal, 105, 130); } void BstDoor::animation() { } bool BstDoor::interact(Action verb, Object &obj1, Object &obj2) { - static char password[16] = {0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0}; if (_gm->move(verb, obj1)) { _gm->passageConstruction(); _gm->_newRoom = true; @@ -3726,7 +3736,7 @@ bool BstDoor::interact(Action verb, Object &obj1, Object &obj2) { _vm->renderImage(number); _vm->playSound(kAudioTaxiOpen); for (number = 1; number <= 16; number++) { - if (isSectionVisible(number) != password[number - 1]) + if (isSectionVisible(number) != _password[number - 1]) return true; } _gm->wait(2); diff --git a/engines/supernova2/rooms.h b/engines/supernova2/rooms.h index aee27646f6..46a86eda17 100644 --- a/engines/supernova2/rooms.h +++ b/engines/supernova2/rooms.h @@ -525,6 +525,7 @@ public: virtual bool interact(Action verb, Object &obj1, Object &obj2); private: + char _password[16]; }; class Hall : public Room { diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp index 9f25e15ec6..41c092ef28 100644 --- a/engines/supernova2/state.cpp +++ b/engines/supernova2/state.cpp @@ -132,6 +132,8 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) { for (int i = 0; i < NUMROOMS; ++i) { _rooms[i]->deserialize(in, version); } + delete _rooms[BST_DOOR]; + _rooms[BST_DOOR] = new BstDoor(_vm, this); _lastRoom = _rooms[lastRoomId]; changeRoom(curRoomId); @@ -524,8 +526,6 @@ void GameManager::initGui() { } void GameManager::updateEvents() { - if (_currentRoom == _rooms[ELEVATOR]) - debug("%d %d", _state._elevatorE, _state._elevatorNumber); handleTime(); if (_animationEnabled && !_vm->_screen->isMessageShown() && _animationTimer == 0) _currentRoom->animation(); @@ -1317,7 +1317,7 @@ bool GameManager::genericInteract(Action verb, Object &obj1, Object &obj2) { _vm->renderMessage(kStringNothingHappens); } else if (verb == ACTION_USE && Object::combine(obj1, obj2, ROD, MAGNET)) { Object *o1, *o2; - if (obj2._type == ROD) { + if (obj2._id == ROD) { o1 = &obj2; o2 = &obj1; } else { |