diff options
author | Jaromir Wysoglad | 2019-06-05 12:44:49 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | be450f096794093ee6c7fa9d97cbd43038e35242 (patch) | |
tree | 84b2354b0e21404c059d577eef00369d2125a733 | |
parent | 3a5ea64e9cb41c83dd85eec32db228ebcfd850f6 (diff) | |
download | scummvm-rg350-be450f096794093ee6c7fa9d97cbd43038e35242.tar.gz scummvm-rg350-be450f096794093ee6c7fa9d97cbd43038e35242.tar.bz2 scummvm-rg350-be450f096794093ee6c7fa9d97cbd43038e35242.zip |
SUPERNOVA2: Change saving of room variables
Change the way room variables are saved, so it is
more like the original code and also thanks to this
they get saved and loaded when the game is saved/loaded
-rw-r--r-- | engines/supernova2/rooms.cpp | 54 | ||||
-rw-r--r-- | engines/supernova2/rooms.h | 11 |
2 files changed, 23 insertions, 42 deletions
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index 6d22da76de..ceaccbac61 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -737,7 +737,7 @@ bool Cabin::interact(Action verb, Object &obj1, Object &obj2) { } else if (verb == ACTION_USE && obj1._id == CHAIR) { if (_paid) { - if (_var2) { + if (_shown[kMaxSection - 2]) { _vm->paletteFadeOut(); _vm->setCurrentImage(31); _vm->renderImage(0); @@ -951,10 +951,6 @@ CulturePalace::CulturePalace(Supernova2Engine *vm, GameManager *gm) { _id = CULTURE_PALACE; _shown[0] = kShownTrue; - _var1 = false; - _var2 = false; - _var3 = false; - _objectState[0] = Object(_id, kStringEntrance, kStringDefaultDescription, NULLOBJECT, EXIT, 1, 1, 0, CHECKOUT, 6); _objectState[1] = Object(_id, kStringCulturePalace, kStringFascinating, NULLOBJECT, NULLTYPE, 0, 0, 0); _objectState[2] = Object(_id, kStringTaxis, kStringTaxisDescription, NULLOBJECT, NULLTYPE, 3, 3, 0); @@ -1013,10 +1009,10 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) { int e; if (verb == ACTION_TALK && obj1._id == AXACUSSER) { - if (_var3) { + if (_shown[kMaxSection - 3]) { _vm->renderImage(1); _gm->reply(kStringThankYou, 2, 1); - } else if (_var2) { + } else if (_shown[kMaxSection - 2]) { _vm->renderImage(1); _gm->reply(kStringWhatYouOffer, 2, 1); } else { @@ -1052,7 +1048,7 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) { _gm->reply(kStringOnlyParticipation, 2, 1); _gm->say(kStringWhatForIt); _gm->reply(kStringMakeOffer, 2, 1); - _var2 = true; + _shown[kMaxSection - 2] = true; } break; } @@ -1064,7 +1060,7 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) { _gm->drawMapExits(); _gm->drawCommandBox(); } - else if (verb == ACTION_GIVE && obj2._id == AXACUSSER && _var2) { + else if (verb == ACTION_GIVE && obj2._id == AXACUSSER && _shown[kMaxSection - 2]) { _vm->renderImage(1); if (obj1._id != MONEY) notEnoughMoney(); @@ -1082,8 +1078,8 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) { _vm->renderImage(1 + 128); setSectionVisible(2, false); _gm->reply(kStringIdiot, 0, 0); - _var2 = false; - _var3 = true; + _shown[kMaxSection - 2] = false; + _shown[kMaxSection - 3] = true; _gm->_rooms[CHECKOUT]->addSentence(1,1); _gm->drawStatus(); _gm->drawInventory(); @@ -1114,20 +1110,14 @@ Checkout::Checkout(Supernova2Engine *vm, GameManager *gm) { _id = CHECKOUT; _shown[0] = kShownTrue; - _var1 = false; - _var2 = 0; - _var3 = false; - _var4 = false; - _var5 = false; - _objectState[0] = Object(_id, kStringEntrance, kStringDefaultDescription, KP_ENTRANCE, EXIT, 0, 0, 0, NULLROOM, 3); _objectState[1] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CULTURE_PALACE, 22); _objectState[2] = Object(_id, kStringAxacussian, kStringDefaultDescription, AXACUSSER, TALK, 1, 1, 0); } void Checkout::onEntrance() { - if (!_var3) { - _var3 = true; + if (!_shown[kMaxSection - 3]) { + _shown[kMaxSection - 3] = true; _gm->reply(kStringAtMusicContest, 1, 1 + 128); _gm->say(kStringNoImitation); _gm->reply(kStringGoodJoke, 1, 1 + 128); @@ -1175,11 +1165,11 @@ bool Checkout::interact(Action verb, Object &obj1, Object &obj2) { kStringCheckout13 }; if (verb == ACTION_WALK && obj1._id == KP_ENTRANCE) { - if (_var4) { + if (_shown[kMaxSection - 4]) { _vm->renderImage(2); _gm->reply(kStringCheckout14, 0, 0); _vm->renderImage(2 + 128); - } else if (_var2 == 0) { + } else if (_shown[kMaxSection - 2] == 0) { _vm->renderImage(2); //_gm->reply("atnuhh", 0, 0); _gm->reply(kStringCheckout15, 0, 0); @@ -1190,13 +1180,13 @@ bool Checkout::interact(Action verb, Object &obj1, Object &obj2) { } else _gm->say(kStringCheckout18); _gm->drawGUI(); - } else if (_var2 == 1) { + } else if (_shown[kMaxSection - 2] == 1) { _gm->reply(kStringCheckout19, 1, 1 + 128); } else { if (_gm->_state._tipsy) { _vm->setCurrentImage(22); _vm->renderImage(0); - if (_var5 && _gm->_state._admission >= 2) + if (_shown[kMaxSection - 5] && _gm->_state._admission >= 2) appearance(); else { _gm->dialog(3, _gm->_dials, dialStage1, 0); @@ -1252,11 +1242,11 @@ bool Checkout::interact(Action verb, Object &obj1, Object &obj2) { _vm->removeMessage(); _gm->say(kStringCheckout29); _vm->renderRoom(*this); - if (_var5) + if (_shown[kMaxSection - 5]) _vm->renderMessage(kStringCheckout30); else _vm->renderMessage(kStringCheckout31); - _var4 = true; + _shown[kMaxSection - 4] = true; _gm->drawGUI(); } } else { @@ -1267,11 +1257,11 @@ bool Checkout::interact(Action verb, Object &obj1, Object &obj2) { } } } else if (verb == ACTION_GIVE && obj1._id == CHIP && obj2._id == AXACUSSER && - _var2 == 1) { + _shown[kMaxSection - 2] == 1) { _gm->_inventory.remove(obj1); - _var5 = true; + _shown[kMaxSection - 5] = true; _gm->reply(kStringCheckout37, 1, 1 + 128); - _var2 = 2; + _shown[kMaxSection - 2] = 2; _gm->drawGUI(); } else if (verb == ACTION_GIVE && obj1._id == CARD && obj2._id == AXACUSSER) { _gm->_inventory.remove(*_gm->_rooms[CULTURE_PALACE]->getObject(4)); @@ -1279,19 +1269,19 @@ bool Checkout::interact(Action verb, Object &obj1, Object &obj2) { _gm->reply(kStringCheckout35, 1, 1 + 128); if (_gm->dialog(2, _gm->_dials, dialCheckout2, 0) == 1) { _gm->reply(kStringCheckout36, 1, 1 + 128); - _var2 = 1; + _shown[kMaxSection - 2] = 1; } else { _gm->reply(kStringCheckout37, 1, 1 + 128); - _var2 = 2; + _shown[kMaxSection - 2] = 2; } _gm->drawGUI(); } else if (verb == ACTION_TALK && obj1._id == AXACUSSER) { - if (_var4) { + if (_shown[kMaxSection - 4]) { _gm->say(kStringCheckout38); _gm->reply(kStringCheckout39, 1, 1 + 128); _gm->drawGUI(); } else { - switch (_var2) { + switch (_shown[kMaxSection - 2]) { case 0: addSentence(2, 1); switch (_gm->dialog(3, _gm->_dials, dialCheckout1, 1)) { diff --git a/engines/supernova2/rooms.h b/engines/supernova2/rooms.h index 16865a0120..3e0f75c457 100644 --- a/engines/supernova2/rooms.h +++ b/engines/supernova2/rooms.h @@ -64,7 +64,7 @@ public: protected: int _fileNumber; - bool _shown[kMaxSection]; + char _shown[kMaxSection]; byte _sentenceRemoved[kMaxDialog]; Object _objectState[kMaxObject]; RoomId _id; @@ -138,7 +138,6 @@ public: private: bool _paid; - bool _var2; // Not sure what this variable means yet }; class Kiosk : public Room { @@ -160,9 +159,6 @@ public: private: void notEnoughMoney(); - bool _var1; - bool _var2; - bool _var3; }; class Checkout : public Room { @@ -174,11 +170,6 @@ public: private: void appearance(); - bool _var1; - int _var2; - bool _var3; - bool _var4; - bool _var5; }; class City1 : public Room { |