aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-04 15:47:49 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit93561220b741a6f9a604205836a7b10e5af3abe5 (patch)
treebeece218fae99300bfda36fe037807f588b681b4
parent856b38764114403f9ecfa56c0c33c10fdca14372 (diff)
downloadscummvm-rg350-93561220b741a6f9a604205836a7b10e5af3abe5.tar.gz
scummvm-rg350-93561220b741a6f9a604205836a7b10e5af3abe5.tar.bz2
scummvm-rg350-93561220b741a6f9a604205836a7b10e5af3abe5.zip
SUPERNOVA2: Add partialy implemented checkout room
-rw-r--r--engines/supernova2/ms2_def.h10
-rw-r--r--engines/supernova2/rooms.cpp41
-rw-r--r--engines/supernova2/rooms.h7
-rw-r--r--engines/supernova2/state.cpp4
4 files changed, 43 insertions, 19 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h
index a216bba514..c1f3aa86ae 100644
--- a/engines/supernova2/ms2_def.h
+++ b/engines/supernova2/ms2_def.h
@@ -81,7 +81,7 @@ enum Action {
enum RoomId {
INTRO,AIRPORT,TAXISTAND,STREET,GAMES,CABIN,KIOSK,
- CULTURE_PALACE,CASHBOX,CITY1,CITY2,ELEVATOR,APARTMENT,SHIP,
+ CULTURE_PALACE,CHECKOUT,CITY1,CITY2,ELEVATOR,APARTMENT,SHIP,
PYRAMID,PYR_ENTRANCE,UPSTAIRS1,DOWNSTAIRS1,
BOTTOM_RIGHT_DOOR,BOTTOM_LEFT_DOOR,UPSTAIRS2,DOWNSTAIRS2,
@@ -209,8 +209,8 @@ kString395, kString396, kString397, kString398, kString399,
kString400, kString401, kString402, kString403, kString404,
kString405, kString406, kString407, kString408, kString409,
kString410, kString411, kString412, kString413, kString414,
-kString415, kString416, kString417, kString418, kString419,
-kString420, kString421, kString422, kString423, kString424,
+kString415, kStringAtMusicContest, kStringNoImitation, kStringGoodJoke, kStringCommon,
+kStringIWillProof, kStringIWillPerform, kString422, kString423, kString424,
kString425, kString426, kString427, kString428, kString429,
kString430, kString431, kString432, kString433, kString434,
kString435, kString436, kString437, kString438, kString439,
@@ -236,7 +236,7 @@ kString530, kString531, kString532, kString533, kString534,
kString535, kString536, kString537, kString538, kString539,
kString540, kString541, kString542, kString543, kString544,
kString545, kString546, kStringFascinating, kStringTaxis, kStringTaxisDescription,
-kStringAxacussan, kStringParticipationCard, kString552, kString553, kString554,
+kStringAxacussan, kStringParticipationCard, kStringAxacussian, kString553, kString554,
kString555, kString556, kString557, kString558, kString559,
kString560, kString561, kString562, kString563, kString564,
kString565, kString566, kString567, kString568, kString569,
@@ -249,7 +249,7 @@ kStringIntroTV3, kStringIntroTV4, kStringIntroTV5, kStringIntroTV6, kStringIntro
kStringIntroTV8, kStringIntroTV9, kStringIntroTV10, kStringIntroTV11, kStringIntroTV12,
kStringIntroTV13, kStringIntroTV14, kStringIntroTV15, kStringIntroTV16, kStringIntro9,
kStringIntro10, kStringIntro11, kStringIntro12, kStringIntro13, kStringIntro14,
-kStringDialogSeparator, kStringForMusicConcert
+kStringDialogSeparator
};
ObjectType operator|(ObjectType a, ObjectType b);
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index 6641f6aa3a..a769b8ce26 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -1003,7 +1003,7 @@ CulturePalace::CulturePalace(Supernova2Engine *vm, GameManager *gm) {
_var2 = false;
_var3 = false;
- _objectState[0] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 1, 1, 0, CASHBOX, 6);
+ _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);
_objectState[3] = Object(_id, kStringAxacussan, kStringDefaultDescription, AXACUSSER, TALK, 4, 4, 0);
@@ -1041,11 +1041,10 @@ void CulturePalace::notEnoughMoney() {
}
bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) {
- static StringId dial1[4] = {
+ static StringId dial1[3] = {
kStringHorstHummel,
kStringNiceWeather,
kStringTellTicket,
- kStringForMusicConcert
};
static byte dials1[] = {1, 1, 2};
@@ -1133,7 +1132,7 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) {
_gm->reply(kStringIdiot, 0, 0);
_var2 = false;
_var3 = true;
- _gm->_rooms[CASHBOX]->addSentence(1,1);
+ _gm->_rooms[CHECKOUT]->addSentence(1,1);
_gm->drawStatus();
_gm->drawInventory();
_gm->drawMapExits();
@@ -1155,23 +1154,45 @@ bool CulturePalace::interact(Action verb, Object &obj1, Object &obj2) {
return true;
}
-Cashbox::Cashbox(Supernova2Engine *vm, GameManager *gm) {
+Checkout::Checkout(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
- _id = CASHBOX;
+ _fileNumber = 21;
+ _id = CHECKOUT;
_shown[0] = kShownTrue;
+
+ _var1 = false;
+ _var2 = false;
+ _var3 = 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 Cashbox::onEntrance() {
+void Checkout::onEntrance() {
+ if (!_var3) {
+ _var3 = true;
+ _gm->reply(kStringAtMusicContest, 1, 1 + 128);
+ _gm->say(kStringNoImitation);
+ _gm->reply(kStringGoodJoke, 1, 1 + 128);
+ _gm->say(kStringIAmHorstHummel);
+ _gm->reply(kStringCommon, 1, 1 + 128);
+ _gm->say(kStringIWillProof);
+ _gm->say(kStringIWillPerform);
+ _gm->drawStatus();
+ _gm->drawInventory();
+ _gm->drawMapExits();
+ _gm->drawCommandBox();
+ }
setRoomSeen(true);
}
-void Cashbox::animation() {
+void Checkout::animation() {
}
-bool Cashbox::interact(Action verb, Object &obj1, Object &obj2) {
+bool Checkout::interact(Action verb, Object &obj1, Object &obj2) {
return true;
}
diff --git a/engines/supernova2/rooms.h b/engines/supernova2/rooms.h
index 6045fb509d..71c8637fd9 100644
--- a/engines/supernova2/rooms.h
+++ b/engines/supernova2/rooms.h
@@ -166,14 +166,17 @@ private:
bool _var3;
};
-class Cashbox : public Room {
+class Checkout : public Room {
public:
- Cashbox(Supernova2Engine *vm, GameManager *gm);
+ Checkout(Supernova2Engine *vm, GameManager *gm);
virtual void onEntrance();
virtual void animation();
virtual bool interact(Action verb, Object &obj1, Object &obj2);
private:
+ bool _var1;
+ bool _var2;
+ bool _var3;
};
class City1 : public Room {
diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp
index db26601a50..4313aade76 100644
--- a/engines/supernova2/state.cpp
+++ b/engines/supernova2/state.cpp
@@ -237,7 +237,7 @@ void GameManager::destroyRooms() {
delete _rooms[CABIN];
delete _rooms[KIOSK];
delete _rooms[CULTURE_PALACE];
- delete _rooms[CASHBOX];
+ delete _rooms[CHECKOUT];
delete _rooms[CITY1];
delete _rooms[CITY2];
delete _rooms[ELEVATOR];
@@ -353,7 +353,7 @@ void GameManager::initRooms() {
_rooms[CABIN] = new Cabin(_vm, this);
_rooms[KIOSK] = new Kiosk(_vm, this);
_rooms[CULTURE_PALACE] = new CulturePalace(_vm, this);
- _rooms[CASHBOX] = new Cashbox(_vm, this);
+ _rooms[CHECKOUT] = new Checkout(_vm, this);
_rooms[CITY1] = new City1(_vm, this);
_rooms[CITY2] = new City2(_vm, this);
_rooms[ELEVATOR] = new Elevator(_vm, this);