aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-05 12:44:49 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commitbe450f096794093ee6c7fa9d97cbd43038e35242 (patch)
tree84b2354b0e21404c059d577eef00369d2125a733
parent3a5ea64e9cb41c83dd85eec32db228ebcfd850f6 (diff)
downloadscummvm-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.cpp54
-rw-r--r--engines/supernova2/rooms.h11
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 {