mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-02 17:03:13 +00:00
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
This commit is contained in:
parent
3a5ea64e9c
commit
be450f0967
@ -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)) {
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user