diff options
-rw-r--r-- | engines/supernova2/ms2_def.h | 10 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 32 | ||||
-rw-r--r-- | engines/supernova2/rooms.h | 8 | ||||
-rw-r--r-- | engines/supernova2/state.cpp | 6 |
4 files changed, 49 insertions, 7 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index 697c4ac14f..c3d9d03ca7 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -100,7 +100,7 @@ enum RoomId { enum ObjectId { INVALIDOBJECT = -1, NULLOBJECT = 0, - TAXI=1,WALLET,TRANSMITTER,KNIFE,ROD,BES_CABIN,MONEY, + TAXI=1,WALLET,TRANSMITTER,KNIFE,ROD,OCCUPIED_CABIN,MONEY, SLOT1,CHAIR,GANG,G_RIGHT,G_LEFT,PYRA_ENTRANCE,DOOR,BUTTON, PART0,PART1,PART2,PART3,PART4,PART5,PART6,PART7, PART8,PART9,PART10,PART11,PART12,PART13,PART14,PART15, @@ -159,7 +159,7 @@ kString145, kString146, kString147, kString148, kString149, kString150, kString151, kString152, kString153, kString154, kString155, kString156, kString157, kString158, kString159, kString160, kString161, kString162, kString163, kString164, -kString165, kString166, kString167, kString168, kString169, +kString165, kString166, kString167, kString168, kStringExit, kString170, kString171, kString172, kString173, kString174, kString175, kString176, kString177, kStringDefaultDescription, kStringLooksMetal, kStringTaxiArrives, kStringNothingHappens, kStringEmpty, kStringWalletOpen, kStringAttachMagnet, @@ -169,7 +169,7 @@ kString195, kString196, kString197, kString198, kString199, kStringAirportEntrance, kStringAirport, kStringDowntown, kStringCulturePalace, kStringEarth, kStringPrivateApartment, kStringLeaveTaxi, kStringPay, kStringAddress, kStringCheater, kStringNotEnoughMoney, kStringTaxiAccelerating, kString5MinutesLater, kStringAlreadyHavePole, kStringSawPole, -kStringOnlyShop, kString216, kString217, kString218, kString219, +kStringOnlyShop, kStringCabinOccupiedSay, kString217, kString218, kString219, kString220, kString221, kString222, kString223, kString224, kString225, kString226, kString227, kString228, kString229, kString230, kString231, kString232, kString233, kString234, @@ -186,8 +186,8 @@ kStringSpaceship, kStringSpaceshipDescription, kStringVehicles, kStringVehiclesD kStringVehicleDescription, kStringEntranceDescription, kStringWallet, kStringWalletDescription, kStringDevice, kStringDeviceDescription, kStringIdCard, kStringIdCardDescription, kStringStaircase, kStringStaircaseDescription, kStringBusinessStreet, kStringBusinessStreetDescription, kStringRod, kStringPost, kStringRailing, -kString300, kString301, kString302, kString303, kString304, -kString305, kString306, kString307, kString308, kString309, +kStringPoster, kStringPosterDescription, kStringCabin, kStringCabinFree, kStringCabinOccupied, +kStringFeet, kStringFeetDescription, kString307, kString308, kString309, kString310, kString311, kString312, kString313, kString314, kString315, kString316, kString317, kString318, kString319, kString320, kString321, kString322, kString323, kString324, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index a5ea68fb2a..9f93e770c6 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -702,4 +702,36 @@ bool Street::interact(Action verb, Object &obj1, Object &obj2) { return true; } +Games::Games(Supernova2Engine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 6; + _id = GAMES; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringPoster, kStringPosterDescription, POSTER, UNNECESSARY, 3, 3, 0); + _objectState[1] = Object(_id, kStringCabin, kStringCabinFree, NULLOBJECT, EXIT, 1, 1, 0, CABIN, 9); + _objectState[2] = Object(_id, kStringCabin, kStringCabinOccupied, OCCUPIED_CABIN, NULLTYPE, 0, 0, 0); + _objectState[3] = Object(_id, kStringFeet, kStringFeetDescription, NULLOBJECT, NULLTYPE, 2, 2, 0); + _objectState[4] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, STREET, 22); +} + +void Games::onEntrance() { + setRoomSeen(true); +} + +bool Games::interact(Action verb, Object &obj1, Object &obj2) { + if (verb == ACTION_WALK && obj1._id == OCCUPIED_CABIN) { + _vm->renderMessage(kStringCabinOccupiedSay); + } + else if (verb == ACTION_LOOK && obj1._id == POSTER) { + _gm->_taxi_possibility &= ~4; // add culture palace + return false; + } + else + return false; + return true; +} + } diff --git a/engines/supernova2/rooms.h b/engines/supernova2/rooms.h index 15bdea6cb2..8c595b4c01 100644 --- a/engines/supernova2/rooms.h +++ b/engines/supernova2/rooms.h @@ -120,5 +120,13 @@ public: private: }; +class Games : public Room { +public: + Games(Supernova2Engine *vm, GameManager *gm); + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); + +private: +}; } #endif // SUPERNOVA2_ROOMS_H diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp index d179011b37..2751db7ec0 100644 --- a/engines/supernova2/state.cpp +++ b/engines/supernova2/state.cpp @@ -53,7 +53,7 @@ bool GameManager::serialize(Common::WriteStream *out) { // Rooms out->writeByte(_currentRoom->getId()); - for (int i = 0; i < 4; ++i) { + for (int i = 0; i < 5; ++i) { _rooms[i]->serialize(out); } @@ -86,7 +86,7 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) { // Rooms RoomId curRoomId = static_cast<RoomId>(in->readByte()); - for (int i = 0; i < 4; ++i) { + for (int i = 0; i < 5; ++i) { _rooms[i]->deserialize(in, version); } changeRoom(curRoomId); @@ -227,6 +227,7 @@ void GameManager::destroyRooms() { delete _rooms[AIRPORT]; delete _rooms[TAXISTAND]; delete _rooms[STREET]; + delete _rooms[GAMES]; } void GameManager::initState() { @@ -273,6 +274,7 @@ void GameManager::initRooms() { _rooms[AIRPORT] = new Airport(_vm, this); _rooms[TAXISTAND] = new TaxiStand(_vm, this); _rooms[STREET] = new Street(_vm, this); + _rooms[GAMES] = new Games(_vm, this); } void GameManager::initGui() { |