diff options
-rw-r--r-- | engines/supernova/rooms.cpp | 1019 | ||||
-rw-r--r-- | engines/supernova/rooms.h | 1056 |
2 files changed, 1111 insertions, 964 deletions
diff --git a/engines/supernova/rooms.cpp b/engines/supernova/rooms.cpp index 9360d58aa1..ce274d6d8e 100644 --- a/engines/supernova/rooms.cpp +++ b/engines/supernova/rooms.cpp @@ -30,6 +30,17 @@ namespace Supernova { +Room::Room() { + _seen = false; + for (int i = 0; i < kMaxSection; ++i) + _shown[i] = kShownFalse; + for (int i = 0; i < kMaxDialog; ++i) + _sentenceRemoved[i] = 0; +} + +Room::~Room() { +} + bool Room::serialize(Common::WriteStream *out) { if (out->err()) return false; @@ -97,6 +108,73 @@ bool Room::deserialize(Common::ReadStream *in, int version) { return !in->err(); } +bool Room::hasSeen() { + return _seen; +} +void Room::setRoomSeen(bool seen) { + _seen = seen; +} + +int Room::getFileNumber() const { + return _fileNumber; +} +RoomId Room::getId() const { + return _id; +} + +void Room::setSectionVisible(uint section, bool visible) { + _shown[section] = visible ? kShownTrue : kShownFalse; +} + +bool Room::isSectionVisible(uint index) const { + return _shown[index] == kShownTrue; +} + +void Room::removeSentence(int sentence, int number) { + if (number > 0) + _sentenceRemoved[number - 1] |= (1 << sentence); +} + +void Room::addSentence(int sentence, int number) { + if (number > 0) + _sentenceRemoved[number - 1] &= ~(1 << sentence); +} + +void Room::addAllSentences(int number) { + if (number > 0) + _sentenceRemoved[number - 1] = 0; +} + +bool Room::sentenceRemoved(int sentence, int number) { + if (number <= 0) + return false; + return (_sentenceRemoved[number - 1] & (1 << sentence)); +} + +bool Room::allSentencesRemoved(int maxSentence, int number) { + if (number <= 0) + return false; + for (int i = 0, flag = 1 ; i < maxSentence ; ++i, flag <<= 1) + if (!(_sentenceRemoved[number - 1] & flag)) + return false; + return true; +} + +Object *Room::getObject(uint index) { + return &_objectState[index]; +} + +void Room::animation() { +} + +void Room::onEntrance() { +} + +bool Room::interact(Action verb, Object &obj1, Object &obj2) { + return false; +} + + Intro::Intro(SupernovaEngine *vm, GameManager *gm) { _vm = vm; _gm = gm; @@ -523,6 +601,27 @@ void Intro::leaveCutscene() { _vm->_allowLoadGame = true; } +ShipCorridor::ShipCorridor(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 17; + _id = CORRIDOR; + _shown[0] = kShownTrue; + _shown[4] = kShownTrue; + + _objectState[0] = Object(_id, kStringHatch, kStringDefaultDescription, HATCH1, OPENABLE | EXIT, 0, 6, 1, CABIN_L1, 15); + _objectState[1] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 1, 7, 2, CABIN_L2, 10); + _objectState[2] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 2, 8, 3, CABIN_L3, 5); + _objectState[3] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 5, 11, 6, CABIN_R1, 19); + _objectState[4] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 4, 10, 5, CABIN_R2, 14); + _objectState[5] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT | OPENED, 9, 3, 4, CABIN_R3, 9); + _objectState[6] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED | EXIT, 12, 12, 0, AIRLOCK, 2); + _objectState[7] = Object(_id, kStringButton, kStringHatchButtonDescription, BUTTON, PRESS, 13, 13, 0, NULLROOM, 0); + _objectState[8] = Object(_id, kStringLadder, kStringDefaultDescription, NULLOBJECT, NULLTYPE, 14, 14, 0, NULLROOM, 0); + _objectState[9] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 15, 15, 0, HALL, 22); +} + bool ShipCorridor::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_PRESS) && (obj1._id == BUTTON)) { if (_objectState[6].hasProperty(OPENED)) { @@ -551,6 +650,22 @@ bool ShipCorridor::interact(Action verb, Object &obj1, Object &obj2) { return false; } +ShipHall::ShipHall(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 15; + _id = HALL; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringHatch, kStringCockpitHatchDescription, NULLOBJECT, OPENABLE | EXIT, 4, 5, 1, COCKPIT, 10); + _objectState[1] = Object(_id, kStringHatch, kStringKitchenHatchDescription, KITCHEN_HATCH, OPENABLE | EXIT, 0, 0, 0, NULLROOM, 1); + _objectState[2] = Object(_id, kStringHatch, kStringStasisHatchDescription, NULLOBJECT, OPENABLE | CLOSED | EXIT, 1, 1, 2, SLEEP, 8); + _objectState[3] = Object(_id, kStringSlot, kStringSlotDescription, SLEEP_SLOT, COMBINABLE, 2, 2, 0, NULLROOM, 0); + _objectState[4] = Object(_id, kStringLadder, kStringDefaultDescription, NULLOBJECT, NULLTYPE, 3, SLEEP, 0, NULLROOM, 0); + _objectState[5] = Object(_id, kStringCorridor, kStringDefaultDescription, NULLOBJECT, EXIT, 6, 6, 0, CORRIDOR, 19); +} + bool ShipHall::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_OPEN) && (obj1._id == KITCHEN_HATCH)) { _vm->renderMessage(kStringShipHall1); @@ -582,6 +697,20 @@ bool ShipHall::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ShipSleepCabin::ShipSleepCabin(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 33; + _id = SLEEP; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringHatch, kStringStasisHatchDescription2, CABINS, NULLTYPE, 0, 0, 0, NULLROOM, 0); + _objectState[1] = Object(_id, kStringHatch, kStringStasisHatchDescription2, CABIN, NULLTYPE, 1, 1, 0, NULLROOM, 0); + _objectState[2] = Object(_id, kStringComputer, kStringDefaultDescription, COMPUTER, NULLTYPE, 2, 2, 0, NULLROOM, 0); + _objectState[3] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, HALL, 22); +} + bool ShipSleepCabin::interact(Action verb, Object &obj1, Object &obj2) { Room *room; Common::String input; @@ -780,6 +909,20 @@ void ShipSleepCabin::onEntrance() { } } +ShipCockpit::ShipCockpit(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 9; + _id = COCKPIT; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringInstruments, kStringInstrumentsDescription1, INSTRUMENTS, NULLTYPE, 2, 2, 0, NULLROOM, 0); + _objectState[1] = Object(_id, kStringMonitor, kStringDefaultDescription, MONITOR, NULLTYPE, 0, 0, 0, NULLROOM, 0); + _objectState[2] = Object(_id, kStringMonitor, kStringMonitorDescription, NULLOBJECT, TAKE, 1, 0, 0, NULLROOM, 0); + _objectState[3] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, HALL, 22); +} + bool ShipCockpit::interact(Action verb, Object &obj1, Object &obj2) { // TODO: distance and remaining time not accurate @@ -850,6 +993,69 @@ void ShipCockpit::onEntrance() { setRoomSeen(true); } +ShipCabinL1::ShipCabinL1(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 21; + _id = CABIN_L1; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[2] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + + _objectState[0] = Object(_id, kStringImage, kStringGenericDescription1, NULLOBJECT, UNNECESSARY, 5, 5, 0, NULLROOM, 0); + _objectState[1] = Object(_id, kStringImage, kStringGenericDescription2, NULLOBJECT, UNNECESSARY, 6, 6, 0, NULLROOM, 0); + _objectState[2] = Object(_id, kStringImage, kStringGenericDescription3, NULLOBJECT, UNNECESSARY, 7, 7, 0, NULLROOM, 0); + _objectState[3] = Object(_id, kStringMagnete, kStringMagneteDescription, NULLOBJECT, UNNECESSARY, 8, 8, 0, NULLROOM, 0); + _objectState[4] = Object(_id, kStringImage, kStringGenericDescription4, NULLOBJECT, UNNECESSARY, 9, 9, 0); + _objectState[5] = Object(_id, kStringPen, kStringPenDescription, PEN, TAKE | COMBINABLE, 10, 10, 5 | 128); + _objectState[6] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | OPENED | EXIT, 3, 3, 24 | 128, CORRIDOR, 9); + _objectState[7] = Object(_id, kStringSlot, kStringSlotDescription, NULLOBJECT, COMBINABLE, 0, 0, 0); + _objectState[8] = Object(_id, kStringShelf, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED, 1, 1, 0); + _objectState[9] = Object(_id, kStringCompartment, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED, 2, 2, 0); + _objectState[10] = Object(_id, kStringSocket, kStringDefaultDescription, SOCKET, COMBINABLE, 4, 4, 0); + _objectState[11] = Object(_id, kStringToilet, kStringDefaultDescription, BATHROOM_DOOR, EXIT, 255, 255, 0, BATHROOM, 22); +} + +ShipCabinL2::ShipCabinL2(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 21; + _id = CABIN_L2; + _shown[0] = kShownTrue; + _shown[16] = kShownTrue; + + _objectState[0] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL1,COMBINABLE,31,31,0); + _objectState[1] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL2,COMBINABLE,32,32,0); + _objectState[2] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL3,COMBINABLE,33,33,0); + _objectState[3] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL4,COMBINABLE,45,45,0); + _objectState[4] = Object(_id, kStringShelf,kStringDefaultDescription,SHELF_L1,OPENABLE | CLOSED,25,26,17); + _objectState[5] = Object(_id, kStringPistol,kStringPistolDescription,PISTOL,TAKE,39,39,20); + _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L2,OPENABLE | CLOSED,27,28,18); + _objectState[7] = Object(_id, kStringBooks,kStringBooksDescription,NULLOBJECT,UNNECESSARY,40,40,0); + _objectState[8] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L3,OPENABLE | CLOSED,29,30,19); + _objectState[9] = Object(_id, kStringSpool,kStringSpoolDescription, SPOOL,TAKE | COMBINABLE,41,41,21); + _objectState[10] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L4,OPENABLE | CLOSED,43,44,22); + _objectState[11] = Object(_id, kStringBook,kStringDefaultDescription,BOOK2,TAKE,46,46,23); + _objectState[12] = Object(_id, kStringUnderwear,kStringUnderwearDescription,NULLOBJECT,UNNECESSARY,34,34,0); + _objectState[13] = Object(_id, kStringUnderwear,kStringUnderwearDescription,NULLOBJECT,UNNECESSARY,35,35,0); + _objectState[14] = Object(_id, kStringClothes,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,36,36,0); + _objectState[15] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,37,37,0); + _objectState[16] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,38,38,0); + _objectState[17] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,23,23,0); + _objectState[18] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); + _objectState[19] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,24 | 128,CORRIDOR,9); + _objectState[20] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); + _objectState[21] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); + _objectState[22] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); + _objectState[23] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); + _objectState[24] = Object(_id, kStringFolders,kStringFoldersDescription,NULLOBJECT,UNNECESSARY,49,49,0); +} + bool ShipCabinL2::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_USE) && Object::combine(obj1, obj2, SLOT_KL1, KEYCARD2)) { _gm->openLocker(this, getObject(4), getObject(0), 17); @@ -892,6 +1098,38 @@ bool ShipCabinL2::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ShipCabinL3::ShipCabinL3(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 21; + _id = CABIN_L3; + _shown[0] = kShownTrue; + _shown[6] = kShownTrue; + _shown[7] = kShownTrue; + _shown[8] = kShownTrue; + _shown[9] = kShownTrue; + _shown[12] = kShownTrue; + + _objectState[0] = Object(_id, kStringPoster,kStringPosterDescription1,NULLOBJECT,UNNECESSARY,11,11,0); + _objectState[1] = Object(_id, kStringPoster,kStringPosterDescription2,NULLOBJECT,UNNECESSARY,12,12,0); + _objectState[2] = Object(_id, kStringSpeaker,kStringDefaultDescription,NULLOBJECT,NULLTYPE,13,13,0); + _objectState[3] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,14,14,0); + _objectState[4] = Object(_id, kStringRecord,kStringRecordDescription,RECORD,TAKE | COMBINABLE,15,15,8 | 128); + _objectState[5] = Object(_id, kStringRecordStand,kStringRecordStandDescription,NULLOBJECT,UNNECESSARY,16,16,0); + _objectState[6] = Object(_id, kStringButton,kStringDefaultDescription,TURNTABLE_BUTTON,PRESS,22,22,0); + _objectState[7] = Object(_id, kStringTurntable,kStringTurntableDescription,TURNTABLE,UNNECESSARY | COMBINABLE,17,17,0); + _objectState[8] = Object(_id, kStringWire,kStringDefaultDescription,WIRE,COMBINABLE,18,18,0); + _objectState[9] = Object(_id, kStringWire,kStringDefaultDescription,WIRE2,COMBINABLE,19,19,0); + _objectState[10] = Object(_id, kStringPlug,kStringDefaultDescription,PLUG,COMBINABLE,20,20,0); + _objectState[11] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,24 | 128,CORRIDOR,9); + _objectState[12] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); + _objectState[13] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); + _objectState[14] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); + _objectState[15] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); + _objectState[16] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); +} + bool ShipCabinL3::interact(Action verb, Object &obj1, Object &obj2) { Room *r; @@ -973,6 +1211,86 @@ bool ShipCabinL3::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ShipCabinR1::ShipCabinR1(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 22; + _id = CABIN_R1; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[2] = kShownTrue; + + _objectState[0] = Object(_id, kStringImage,kStringImageDescription1,NULLOBJECT,UNNECESSARY,5,5,0); + _objectState[1] = Object(_id, kStringDrawingInstruments,kStringDrawingInstrumentsDescription,NULLOBJECT,UNNECESSARY,6,6,0); + _objectState[2] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,7,7,0); + _objectState[3] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,15 | 128,CORRIDOR,5); + _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); + _objectState[5] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); + _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); + _objectState[7] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); + _objectState[8] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); +} + +ShipCabinR2::ShipCabinR2(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 22; + _id = CABIN_R2; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + + _objectState[0] = Object(_id, kStringChessGame,kStringChessGameDescription1,NULLOBJECT,UNNECESSARY,11,11,0); + _objectState[1] = Object(_id, kStringTennisRacket,kStringTennisRacketDescription,NULLOBJECT,UNNECESSARY,8,8,0); + _objectState[2] = Object(_id, kStringTennisBall,kStringGenericDescription2,NULLOBJECT,UNNECESSARY,9,9,0); + _objectState[3] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,15 | 128,CORRIDOR,5); + _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); + _objectState[5] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); + _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); + _objectState[7] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); + _objectState[8] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); +} + +ShipCabinR3::ShipCabinR3(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 22; + _id = CABIN_R3; + _shown[0] = kShownTrue; + _shown[7] = kShownTrue; + _shown[8] = kShownTrue; + _shown[15] = kShownTrue; + + _objectState[0] = Object(_id, kStringChessGame,kStringChessGameDescription2,CHESS,TAKE | COMBINABLE,12,12,7 | 128); + _objectState[1] = Object(_id, kStringBed,kStringBedDescription,NULLOBJECT,NULLTYPE,13,13,0); + _objectState[2] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K1,COMBINABLE,27,27,0); + _objectState[3] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K2,COMBINABLE,28,28,0); + _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K3,COMBINABLE,29,29,0); + _objectState[5] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K4,COMBINABLE,30,30,0); + _objectState[6] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF1,OPENABLE | CLOSED,14,18,9); + _objectState[7] = Object(_id, kStringAlbums,kStringAlbumsDescription,NULLOBJECT,UNNECESSARY,14,14,0); + _objectState[8] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF2,OPENABLE | CLOSED,15,19,10); + _objectState[9] = Object(_id, kStringRope,kStringRopeDescription,ROPE,TAKE | COMBINABLE,15,15,12); + _objectState[10] = Object(_id, kStringShelf,kStringShelfDescription,SHELF3,OPENABLE | CLOSED,16,17,11); + _objectState[11] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,20,20,0); + _objectState[12] = Object(_id, kStringClothes,kStringClothesDescription,NULLOBJECT,UNNECESSARY,21,21,0); + _objectState[13] = Object(_id, kStringUnderwear,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,22,22,0); + _objectState[14] = Object(_id, kStringSocks,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,23,23,0); + _objectState[15] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF4,OPENABLE | CLOSED,24,25,13); + _objectState[16] = Object(_id, kStringBook,kStringBookHitchhiker,BOOK,TAKE,26,26,14); + _objectState[17] = Object(_id, kStringDiscman,kStringDiscmanDescription,DISCMAN,TAKE | COMBINABLE,33,33,16); + _objectState[18] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | EXIT,3,3,15 | 128,CORRIDOR,5); + _objectState[19] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); + _objectState[20] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); + _objectState[21] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); + _objectState[22] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); + _objectState[23] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); +} + bool ShipCabinR3::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_USE) && Object::combine(obj1, obj2, SLOT_K1, KEYCARD)) _gm->openLocker(this, getObject(6), getObject(2), 9); @@ -1024,6 +1342,36 @@ void ShipCabinR3::onEntrance() { setRoomSeen(true); } +ShipCabinBathroom::ShipCabinBathroom(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 23; + _id = BATHROOM; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringBathroom,kStringBathroomDescription,TOILET,NULLTYPE,0,0,0); + _objectState[1] = Object(_id, kStringShower,kStringDefaultDescription,SHOWER,NULLTYPE,1,1,0); + _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,BATHROOM_EXIT,EXIT,255,255,0,CABIN_R3,2); +} + +ShipAirlock::ShipAirlock(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 34; + _id = AIRLOCK; + _shown[0] = kShownTrue; + _shown[6] = kShownTrue; + + _objectState[0] = Object(_id, kStringHatch,kStringHatchDescription1,NULLOBJECT,EXIT | OPENABLE | OPENED | CLOSED,0,0,0,CORRIDOR,10); + _objectState[1] = Object(_id, kStringHatch,kStringHatchDescription2,NULLOBJECT,EXIT | OPENABLE | CLOSED,1,1,0,HOLD,14); + _objectState[2] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON1,PRESS,2,2,0); + _objectState[3] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON2,PRESS,3,3,0); + _objectState[4] = Object(_id, kStringHelmet,kStringHelmetDescription,HELMET,TAKE,4,4,7); + _objectState[5] = Object(_id, kStringSuit,kStringSuitDescription,SUIT,TAKE,5,5,8); + _objectState[6] = Object(_id, kStringLifeSupport,kStringLifeSupportDescription,LIFESUPPORT,TAKE,6,6,9); +} bool ShipAirlock::interact(Action verb, Object &obj1, Object &obj2) { Room *r; @@ -1133,6 +1481,28 @@ void ShipAirlock::onEntrance() { setRoomSeen(true); } +ShipHold::ShipHold(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 24; + _id = HOLD; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kNoString,kStringDefaultDescription,HOLD_WIRE,COMBINABLE,255,255,0); + _objectState[1] = Object(_id, kStringScrap,kStringScrapDescription1,SCRAP_LK,NULLTYPE,4,4,0); + _objectState[2] = Object(_id, kStringTerminalStrip,kStringDefaultDescription,TERMINALSTRIP,COMBINABLE,255,255,0); + _objectState[3] = Object(_id, kStringScrap,kStringScrapDescription2,NULLOBJECT,NULLTYPE,5,5,0); + _objectState[4] = Object(_id, kStringReactor,kStringReactorDescription,NULLOBJECT,NULLTYPE,6,6,0); + _objectState[5] = Object(_id, kStringNozzle,kStringDefaultDescription,NULLOBJECT,NULLTYPE,7,7,0); + _objectState[6] = Object(_id, kStringPumpkin,kStringPumpkinDescription,NULLOBJECT,NULLTYPE,8,8,0); + _objectState[7] = Object(_id, kStringHatch,kStringDefaultDescription,LANDINGMOD_OUTERHATCH,EXIT | OPENABLE,1,2,2,LANDINGMODULE,6); + _objectState[8] = Object(_id, kStringLandingModule,kStringLandingModuleDescription,NULLOBJECT,NULLTYPE,0,0,0); + _objectState[9] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,AIRLOCK,22); + _objectState[10] = Object(_id, kStringHatch,kStringHatchDescription3,OUTERHATCH_TOP,EXIT | OPENABLE | OPENED,3,3,0,GENERATOR,8); + _objectState[11] = Object(_id, kStringGenerator,kStringGeneratorDescription,GENERATOR_TOP,EXIT,12,12,0,GENERATOR,8); +} + bool ShipHold::interact(Action verb, Object &obj1, Object &obj2) { Room *room; @@ -1189,6 +1559,22 @@ void ShipHold::onEntrance() { _gm->_rooms[COCKPIT]->setRoomSeen(true); } +ShipLandingModule::ShipLandingModule(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 25; + _id = LANDINGMODULE; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringSocket,kStringDefaultDescription,LANDINGMOD_SOCKET,COMBINABLE,1,1,0); + _objectState[1] = Object(_id, kStringButton,kSafetyButtonDescription,LANDINGMOD_BUTTON,PRESS | COMBINABLE,2,2,0); + _objectState[2] = Object(_id, kStringMonitor,kStringDefaultDescription,LANDINGMOD_MONITOR,NULLTYPE,3,3,0); + _objectState[3] = Object(_id, kStringKeyboard,kStringDefaultDescription,KEYBOARD,NULLTYPE,4,4,0); + _objectState[4] = Object(_id, kNoString,kStringDefaultDescription,LANDINGMOD_WIRE,COMBINABLE,255,255,0); + _objectState[5] = Object(_id, kStringHatch,kStringDefaultDescription,LANDINGMOD_HATCH,EXIT | OPENABLE | OPENED | COMBINABLE, 0,0,1 | 128,HOLD,10); +} + bool ShipLandingModule::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_PRESS) && (obj1._id == LANDINGMOD_BUTTON)) _vm->renderMessage(obj1._description); @@ -1287,6 +1673,30 @@ bool ShipLandingModule::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ShipGenerator::ShipGenerator(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 18; + _id = GENERATOR; + _shown[0] = kShownTrue; + _shown[5] = kShownTrue; + + _objectState[0] = Object(_id, kStringGeneratorWire,kStringDefaultDescription,GENERATOR_WIRE,COMBINABLE,255,255,0); + _objectState[1] = Object(_id, kStringEmptySpool,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); + _objectState[2] = Object(_id, kStringKeycard2,kStringKeycard2Description,KEYCARD2,COMBINABLE | TAKE,12,12,5 | 128); + _objectState[3] = Object(_id, kStringRope,kStringDefaultDescription,GENERATOR_ROPE,COMBINABLE,255,255,0); + _objectState[4] = Object(_id, kStringHatch,kStringHatchDescription3,OUTERHATCH,EXIT | OPENABLE,1,2,1,OUTSIDE,22); + _objectState[5] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,3,3,0); + _objectState[6] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,4,4,0); + _objectState[7] = Object(_id, kStringTrap,kStringDefaultDescription,TRAP,OPENABLE,5,6,2); + _objectState[8] = Object(_id, kStringWire,kStringDefaultDescription,NULLOBJECT,NULLTYPE,7,7,0); + _objectState[9] = Object(_id, kStringVoltmeter,kStringDefaultDescription,VOLTMETER,NULLTYPE,9,9,0,NULLROOM,0); + _objectState[10] = Object(_id, kStringClip,kStringDefaultDescription,CLIP,COMBINABLE,8,8,0); + _objectState[11] = Object(_id, kStringWire,kStringWireDescription,SHORT_WIRE,COMBINABLE,10,10,0); + _objectState[12] = Object(_id, kStringLadder,kStringDefaultDescription,LADDER,EXIT,0,0,0,HOLD,1); +} + bool ShipGenerator::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_OPEN) && (obj1._id == OUTERHATCH)) { if (obj1.hasProperty(OPENED)) @@ -1430,7 +1840,34 @@ bool ShipGenerator::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ShipOuterSpace::ShipOuterSpace(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 4; + _id = OUTSIDE; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,GENERATOR,3); + _objectState[1] = Object(_id, kStringRope,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); +} + + // Arsano +ArsanoRocks::ArsanoRocks(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 12; + _id = OUTSIDE; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringRope,kStringDefaultDescription,NULLOBJECT,UNNECESSARY | EXIT,0,0,0,GENERATOR,12); + _objectState[1] = Object(_id, kStringStone,kStringDefaultDescription,STONE,NULLTYPE,1,1,0); + _objectState[2] = Object(_id, kStringStone,kStringDefaultDescription,NULLOBJECT,NULLTYPE,2,2,0); + _objectState[3] = Object(_id, kStringCaveOpening,kStringCaveOpeningDescription,NULLOBJECT,NULLTYPE,255,255,0,CAVE,1); +} + void ArsanoRocks::onEntrance() { _gm->great(8); } @@ -1452,6 +1889,33 @@ bool ArsanoRocks::interact(Action verb, Object &obj1, Object &obj2) { return false; } +ArsanoCave::ArsanoCave(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 12; + _id = CAVE; + + _objectState[0] = Object(_id, kStringExit,kStringExitDescription,NULLOBJECT,EXIT,255,255,0,ROCKS,22); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,MEETUP,2); +} + +ArsanoMeetup::ArsanoMeetup(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 37; + _id = MEETUP; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringCave,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CAVE,22); + _objectState[1] = Object(_id, kStringSign,kStringSignDescription,MEETUP_SIGN,NULLTYPE,0,0,0); + _objectState[2] = Object(_id, kStringEntrance,kStringDefaultDescription,DOOR,EXIT,1,1,0,ENTRANCE,7); + _objectState[3] = Object(_id, kStringStar,kStringDefaultDescription,STAR,NULLTYPE,2,2,0); + _objectState[4] = Object(_id, kStringSpaceshift,kStringDefaultDescription,SPACESHIPS,COMBINABLE,3,3,0); + _objectState[5] = Object(_id, kStringSpaceshift,kStringDefaultDescription,SPACESHIP,COMBINABLE,4,4,0); +} + void ArsanoMeetup::onEntrance() { if (isSectionVisible(7)) { _gm->wait(3); @@ -1525,6 +1989,51 @@ bool ArsanoMeetup::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ArsanoEntrance::ArsanoEntrance(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 10; + _id = ENTRANCE; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringPorter,kStringPorterDescription,PORTER,TALK,0,0,0); + _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT | OPENABLE | CLOSED,1,1,0,NULLROOM,5); + _objectState[2] = Object(_id, kStringSign,kStringSignDescription,KITCHEN_SIGN,NULLTYPE,2,2,0); + _objectState[3] = Object(_id, kStringChewingGum,kStringDefaultDescription,SCHNUCK,TAKE,255,255,10+128); + _objectState[4] = Object(_id, kStringGummyBears,kStringDefaultDescription,SCHNUCK,TAKE,255,255,11+128); + _objectState[5] = Object(_id, kStringChocolateBall,kStringDefaultDescription,SCHNUCK,TAKE,255,255,12+128); + _objectState[6] = Object(_id, kStringEgg,kStringDefaultDescription,EGG,TAKE,255,255,13+128); + _objectState[7] = Object(_id, kStringLiquorice,kStringDefaultDescription,SCHNUCK,TAKE,255,255,14+128); + _objectState[8] = Object(_id, kStringPill,kStringPillDescription,PILL,TAKE,255,255,0); + _objectState[9] = Object(_id, kStringSlot,kStringDefaultDescription,CAR_SLOT,COMBINABLE,6,6,0); + _objectState[10] = Object(_id, kStringVendingMachine,kStringVendingMachineDescription,NULLOBJECT,NULLTYPE,5,5,0); + _objectState[11] = Object(_id, kStringToilet,kStringToiletDescription,ARSANO_BATHROOM,NULLTYPE,255,255,0); + _objectState[12] = Object(_id, kStringButton,kStringDefaultDescription,BATHROOM_BUTTON,PRESS,3,3,0); + _objectState[13] = Object(_id, kStringSign,kStringSignDescription,BATHROOM_SIGN,NULLTYPE,4,4,0); + _objectState[14] = Object(_id, kStringStaircase,kStringDefaultDescription,STAIRCASE,EXIT,8,8,0,REST,3); + _objectState[15] = Object(_id, kStringExit,kStringDefaultDescription,MEETUP_EXIT,EXIT,255,255,0,MEETUP,22); + _objectState[16] = Object(_id, kStringCoins,kStringCoinsDescription,COINS,TAKE|COMBINABLE,255,255,0); + _objectState[17] = Object(_id, kStringTabletPackage,kStringTabletPackageDescription,PILL_HULL,TAKE,255,255,0); + + _dialog1[0] = kStringArsanoDialog7; + _dialog1[1] = kStringArsanoDialog1; + _dialog1[2] = kStringArsanoDialog8; + _dialog1[3] = kStringArsanoDialog9; + _dialog1[4] = kStringDialogSeparator; + + _dialog2[0] = kStringArsanoDialog1; + _dialog2[1] = kStringArsanoDialog2; + _dialog2[2] = kStringArsanoDialog3; + _dialog2[3] = kStringArsanoDialog4; + _dialog2[4] = kStringDialogSeparator; + + _dialog3[0] = kStringArsanoDialog5; + _dialog3[1] = kStringArsanoDialog6; + + _eyewitness = 5; +} + void ArsanoEntrance::animation() { if (!_vm->_screen->isMessageShown() && isSectionVisible(kMaxSection - 5)) { _gm->animationOff(); // to avoid recursive call @@ -1751,6 +2260,21 @@ bool ArsanoEntrance::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ArsanoRemaining::ArsanoRemaining(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 28; + _id = REST; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringStaircase,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,ENTRANCE,17); + _objectState[1] = Object(_id, kStringChair,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,ROGER,2); + _objectState[2] = Object(_id, kStringShoes,kStringShoesDescription,NULLOBJECT,NULLTYPE,2,2,0); + + _chewing = kShownTrue; +} + void ArsanoRemaining::animation() { switch (_i) { case 0: @@ -1911,6 +2435,32 @@ void ArsanoRemaining::animation() { _gm->setAnimationTimer(3); } +ArsanoRoger::ArsanoRoger(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 29; + _id = ROGER; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,REST,19); + _objectState[1] = Object(_id, kStringFrogFace,kStringDefaultDescription,ROGER_W,TALK,0,0,0); + _objectState[2] = Object(_id, kStringScrible,kStringScribleDescription,NULLOBJECT,NULLTYPE,3,3,0); + _objectState[3] = Object(_id, kStringWallet,kStringDefaultDescription,WALLET,TAKE,1,1,4); + _objectState[4] = Object(_id, kStringMenu,kStringMenuDescription,NULLOBJECT,UNNECESSARY,2,2,0); + _objectState[5] = Object(_id, kStringCup,kStringCupDescription,CUP,UNNECESSARY,4,4,0); + _objectState[6] = Object(_id, kStringChessGame,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); + _objectState[7] = Object(_id, kStringBill,kStringBillDescription,NULLOBJECT,TAKE|COMBINABLE,255,255,0); + _objectState[8] = Object(_id, kStringKeycard3,kStringDefaultDescription,KEYCARD_R,TAKE|COMBINABLE,255,255,0); + + _dialog1[0] = kStringDialogArsanoRoger1; + _dialog1[1] = kStringDialogArsanoRoger2; + _dialog1[2] = kStringDialogArsanoRoger3; + _dialog1[3] = kStringDialogSeparator; + + _eyewitness = 5; +} + void ArsanoRoger::onEntrance() { if (!sentenceRemoved(0, 2)) { _gm->say(kStringArsanoRoger1); @@ -2035,6 +2585,27 @@ bool ArsanoRoger::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ArsanoGlider::ArsanoGlider(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 19; + _id = GLIDER; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,MEETUP,15); + _objectState[1] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON1,PRESS,0,0,0); + _objectState[2] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON2,PRESS,1,1,0); + _objectState[3] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON3,PRESS,2,2,0); + _objectState[4] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON4,PRESS,3,3,0); + _objectState[5] = Object(_id, kStringKeycard,kStringDefaultDescription,GLIDER_KEYCARD,TAKE|COMBINABLE,255,255,0); + _objectState[6] = Object(_id, kStringSlot,kStringDefaultDescription,GLIDER_SLOT,COMBINABLE,4,4,0); + _objectState[7] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE,5,6,6); + _objectState[8] = Object(_id, kStringKeyboard,kStringDefaultDescription,GLIDER_BUTTONS,NULLTYPE,7,7,0); + _objectState[9] = Object(_id, kStringAnnouncement,kStringAnnouncementDescription,GLIDER_DISPLAY,NULLTYPE,8,8,0); + _objectState[10] = Object(_id, kStringInstruments,kStringAnnouncementDescription,GLIDER_INSTRUMENTS,NULLTYPE,9,9,0); +} + void ArsanoGlider::animation() { if (isSectionVisible(8)) { setSectionVisible(24 + _sinus, false); @@ -2112,6 +2683,31 @@ bool ArsanoGlider::interact(Action verb, Object &obj1, Object &obj2) { return true; } +ArsanoMeetup2::ArsanoMeetup2(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 38; + _id = MEETUP2; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringRoger, kStringDefaultDescription, ROGER_W, TALK, 255, 255, 0); + _objectState[1] = Object(_id, kStringSpaceshift, kStringDefaultDescription, SPACESHIP, COMBINABLE, 255, 255, 0); + _objectState[2] = Object(_id, kStringCave, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CAVE, 22); + + _dialog1[0] = kStringDialogArsanoMeetup2_1; + _dialog1[1] = kStringDialogArsanoMeetup2_2; + _dialog2[0] = kStringDialogArsanoMeetup2_3; + _dialog2[1] = kStringDialogArsanoMeetup2_4; + _dialog3[0] = kStringDialogArsanoMeetup2_5; + _dialog3[1] = kStringDialogArsanoMeetup2_6; + _dialog3[2] = kStringDialogArsanoMeetup2_7; + _dialog3[3] = kStringDialogArsanoMeetup2_8; + _dialog4[0] = kStringDialogArsanoMeetup2_9; + _dialog4[1] = kStringDialogArsanoMeetup2_10; + _dialog4[2] = kStringDialogArsanoMeetup2_11; +} + void ArsanoMeetup2::onEntrance() { if (sentenceRemoved(0, 1)) { if (sentenceRemoved(1, 1)) @@ -2243,6 +2839,30 @@ void ArsanoMeetup2::shipStart() { _vm->renderImage(11 + 128); } +ArsanoMeetup3::ArsanoMeetup3(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 39; + _id = MEETUP3; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringUfo,kStringUfoDescription,UFO,EXIT,0,0,0,NULLROOM,3); + _objectState[1] = Object(_id, kStringStar,kStringDefaultDescription,STAR,NULLTYPE,1,1,0); + _objectState[2] = Object(_id, kStringCave,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CAVE,22); + + _dialog2[0] = kStringArsanoDialog1; + _dialog2[1] = kStringDialogArsanoMeetup3_1; + _dialog2[2] = kStringDialogArsanoMeetup3_2; + _dialog2[3] = kStringDialogArsanoMeetup3_3; + _dialog3[0] = kStringDialogArsanoMeetup3_4; + _dialog3[1] = kStringDialogArsanoMeetup3_5; + + _dialogsX[0] = kStringDialogX1; + _dialogsX[1] = kStringDialogX2; + _dialogsX[2] = kStringDialogX3; +} + bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) { byte row2[6] = {1, 1, 1, 1, 0, 0}; byte row3[6] = {1, 1, 0, 0, 0, 0}; @@ -2360,6 +2980,29 @@ bool ArsanoMeetup3::interact(Action verb, Object &obj1, Object &obj2) { return true; } +// Axacuss +AxacussCell::AxacussCell(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 43; + _id = CELL; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[31] = kShownTrue; + + _objectState[0] = Object(_id, kStringButton,kStringDefaultDescription,CELL_BUTTON,PRESS,1,1,0); + _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,CELL_DOOR,EXIT|OPENABLE|CLOSED,0,0,31+128,CORRIDOR4,1); + _objectState[2] = Object(_id, kStringTray,kStringTrayDescription,TRAY,UNNECESSARY,255,255,0); + _objectState[3] = Object(_id, kStringLamp,kStringLampDescription,NULLOBJECT,COMBINABLE,3,3,0); + _objectState[4] = Object(_id, kStringEyes,kStringEyesDescription,NULLOBJECT,NULLTYPE,4,4,0); + _objectState[5] = Object(_id, kStringWire,kStringDefaultDescription,CELL_WIRE,COMBINABLE|TAKE,6,6,0); + _objectState[6] = Object(_id, kStringSocket,kStringSocketDescription,SOCKET,COMBINABLE,5,5,0); + _objectState[7] = Object(_id, kStringMetalBlock,kStringMetalBlockDescription,MAGNET,TAKE|COMBINABLE,255,255,30); + _objectState[8] = Object(_id, kStringRobot,kStringRobotDescription,NULLOBJECT,NULLTYPE,255,255,0); + _objectState[9] = Object(_id, kStringTable,kStringTableDescription,CELL_TABLE,COMBINABLE,2,2,0); +} + void AxacussCell::onEntrance() { if (_gm->_state._dream) { _vm->renderMessage(kStringAxacussCell_1); @@ -2533,15 +3176,69 @@ bool AxacussCell::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussCorridor1::AxacussCorridor1(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR1; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + _shown[13] = kShownTrue; + _shown[21] = kShownTrue; + _shown[23] = kShownTrue; + _shown[25] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,GUARD3,2); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR2,22); +} void AxacussCorridor1::onEntrance() { _gm->corridorOnEntrance(); } + +AxacussCorridor2::AxacussCorridor2(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR2; + _shown[0] = kShownTrue; + _shown[2] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + _shown[17] = kShownTrue; + _shown[21] = kShownTrue; + _shown[24] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR1,2); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR3,22); + _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,CORRIDOR4,14); +} + void AxacussCorridor2::onEntrance() { _gm->corridorOnEntrance(); } +AxacussCorridor3::AxacussCorridor3(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR3; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[5] = kShownTrue; + _shown[19] = kShownTrue; + _shown[23] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR2,2); +} + void AxacussCorridor3::onEntrance() { _gm->corridorOnEntrance(); } @@ -2553,6 +3250,31 @@ void AxacussCorridor4::onEntrance() { _gm->busted(0); } +AxacussCorridor4::AxacussCorridor4(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR4; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[2] = kShownTrue; + _shown[8] = kShownTrue; + _shown[9] = kShownTrue; + _shown[11] = kShownTrue; + _shown[15] = kShownTrue; + _shown[18] = kShownTrue; + _shown[20] = kShownTrue; + _shown[26] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,CORRIDOR2,10); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,GUARD,14); + _objectState[2] = Object(_id, kStringCellDoor,kStringCellDoorDescription,DOOR,EXIT|OPENABLE|OPENED|CLOSED,7,7,0,CELL,16); + _objectState[3] = Object(_id, kStringLaptop,kStringDefaultDescription,NEWSPAPER,TAKE,6,6,8); + _objectState[4] = Object(_id, kStringWristwatch,kStringDefaultDescription,WATCH,TAKE|COMBINABLE,255,255,8); + _objectState[5] = Object(_id, kStringTable,kStringDefaultDescription,TABLE,COMBINABLE,5,5,0); +} + void AxacussCorridor4::animation() { } @@ -2583,6 +3305,41 @@ bool AxacussCorridor4::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussCorridor5::AxacussCorridor5(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR5; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + _shown[12] = kShownTrue; + _shown[22] = kShownTrue; + _shown[23] = kShownTrue; + _shown[24] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,DOOR,EXIT,2,2,0,NULLROOM,2); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR6,22); + + _dialog1[0] = kStringDialogAxacussCorridor5_1; + _dialog1[1] = kStringDialogAxacussCorridor5_2; + _dialog2[0] = kStringDialogAxacussCorridor5_3; + _dialog2[1] = kStringDialogAxacussCorridor5_4; + _dialog3[0] = kStringDialogAxacussCorridor5_5; + _dialog3[1] = kStringDialogAxacussCorridor5_6; + _dialog3[2] = kStringDialogAxacussCorridor5_7; + _dialog3[3] = kStringDialogAxacussCorridor5_7; + + _rows[0] = 1; + _rows[1] = 1; + _rows[2] = 1; + _rows[3] = 1; + _rows[4] = 0; + _rows[5] = 0; +} + void AxacussCorridor5::onEntrance() { _gm->corridorOnEntrance(); } @@ -2665,6 +3422,26 @@ bool AxacussCorridor5::interact(Action verb, Object &obj1, Object &obj2) { return false; } +AxacussCorridor6::AxacussCorridor6(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR6; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + _shown[6] = kShownTrue; + _shown[22] = kShownTrue; + _shown[24] = kShownTrue; + _shown[25] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR5,2); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR7,22); + _objectState[2] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,OPENABLE|CLOSED,255,255,0,CORRIDOR8,13); +} + void AxacussCorridor6::onEntrance() { _gm->corridorOnEntrance(); } @@ -2685,10 +3462,47 @@ bool AxacussCorridor6::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussCorridor7::AxacussCorridor7(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR7; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[4] = kShownTrue; + _shown[5] = kShownTrue; + _shown[10] = kShownTrue; + _shown[21] = kShownTrue; + _shown[24] = kShownTrue; + _shown[25] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR6,2); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,GUARD,22); +} + void AxacussCorridor7::onEntrance() { _gm->corridorOnEntrance(); } +AxacussCorridor8::AxacussCorridor8(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR8; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[4] = kShownTrue; + _shown[15] = kShownTrue; + _shown[20] = kShownTrue; + _shown[22] = kShownTrue; + _shown[28] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,0,0,0,CORRIDOR6,10); + _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,BCORRIDOR,22); +} + void AxacussCorridor8::onEntrance() { _gm->corridorOnEntrance(); } @@ -2717,6 +3531,24 @@ bool AxacussCorridor8::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussCorridor9::AxacussCorridor9(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 16; + _id = CORRIDOR9; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[3] = kShownTrue; + _shown[14] = kShownTrue; + _shown[19] = kShownTrue; + _shown[23] = kShownTrue; + _shown[28] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,BCORRIDOR,2); + _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,0,0,0,GUARD,10); +} + void AxacussCorridor9::onEntrance() { _gm->corridorOnEntrance(); } @@ -2744,6 +3576,25 @@ bool AxacussCorridor9::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussBcorridor::AxacussBcorridor(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 6; + _id = BCORRIDOR; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + + _objectState[0] = Object(_id, kStringPillar,kStringDefaultDescription,PILLAR1,NULLTYPE,4,4,0); + _objectState[1] = Object(_id, kStringPillar,kStringDefaultDescription,PILLAR2,NULLTYPE,5,5,0); + _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,6,6,0,CORRIDOR8,2); + _objectState[3] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,7,7,0,CORRIDOR9,22); + _objectState[4] = Object(_id, kStringDoor,kStringDoorDescription1,DOOR1,EXIT|OPENABLE|CLOSED|OCCUPIED,0,0,1,OFFICE_L1,6); + _objectState[5] = Object(_id, kStringDoor,kStringDoorDescription2,DOOR2,EXIT|OPENABLE|CLOSED|OCCUPIED,1,1,2,OFFICE_L2,16); + _objectState[6] = Object(_id, kStringDoor,kStringDoorDescription3,DOOR3,EXIT|OPENABLE|OPENED,2,2,3,OFFICE_R1,8); + _objectState[7] = Object(_id, kStringDoor,kStringDoorDescription4,DOOR4,EXIT|OPENABLE|CLOSED|OCCUPIED,3,3,4,OFFICE_R2,18); +} + void AxacussBcorridor::onEntrance() { _gm->corridorOnEntrance(); if (isSectionVisible(7)) @@ -2827,6 +3678,26 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussIntersection::AxacussIntersection(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 40; + _id = GUARD; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CORRIDOR4, 21); + _objectState[1] = Object(_id, kStringCorridor, kStringDefaultDescription, NULLOBJECT, EXIT, 3, 3, 0, CORRIDOR7, 5); + _objectState[2] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 1, 1, 6, CORRIDOR9, 3); + _objectState[3] = Object(_id, kStringAxacussan, kStringAxacussanDescription, GUARDIAN, TALK, 0, 0, 0); + _objectState[4] = Object(_id, kStringImage, kStringImageDescription2, NULLOBJECT, NULLTYPE, 2, 2, 0); + _objectState[5] = Object(_id, kStringMastercard, kStringMastercardDescription, MASTERKEYCARD, TAKE | COMBINABLE, 255, 255, 1); + + _dialogsX[0] = kStringDialogX1; + _dialogsX[1] = kStringDialogX2; + _dialogsX[2] = kStringDialogX3; +} + bool AxacussIntersection::interact(Action verb, Object &obj1, Object &obj2) { byte rowsX[6] = {1, 1, 1, 0, 0, 0}; @@ -2857,6 +3728,27 @@ bool AxacussIntersection::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussExit::AxacussExit(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 42; + _id = GUARD3; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CORRIDOR1,22); + _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT|OPENABLE|CLOSED,0,0,0,NULLROOM,20); + _objectState[2] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT|OPENABLE|CLOSED,1,1,0,NULLROOM,15); + _objectState[3] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,2,2,11,OFFICE_L,0); + _objectState[4] = Object(_id, kStringLamp2,kStringDefaultDescription,LAMP,COMBINABLE,3,3,0); + _objectState[5] = Object(_id, kStringAxacussan,kStringDefaultDescription,GUARDIAN,TALK,5,5,0); + _objectState[6] = Object(_id, kStringImage,kStringGenericDescription5,NULLOBJECT,NULLTYPE,4,4,0); + + _dialogsX[0] = kStringDialogX1; + _dialogsX[1] = kStringDialogX2; + _dialogsX[2] = kStringDialogX3; +} + bool AxacussExit::interact(Action verb, Object &obj1, Object &obj2) { byte rowsX[6] = {1, 1, 1, 0, 0, 0}; @@ -2887,6 +3779,25 @@ bool AxacussExit::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussOffice1::AxacussOffice1(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 7; + _id = OFFICE_L1; + _shown[0] = kShownTrue; + _shown[2] = kShownTrue; + _shown[7] = kShownTrue; + _shown[9] = kShownTrue; + _shown[16] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,9,BCORRIDOR,9); + _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); + _objectState[2] = Object(_id, kStringMoney,kStringMoneyDescription1,MONEY,TAKE,255,255,0); + _objectState[3] = Object(_id, kStringLocker,kStringLockerDescription,LOCKER,OPENABLE|CLOSED,5,5,0); + _objectState[4] = Object(_id, kStringLetter,kStringDefaultDescription,LETTER,UNNECESSARY,3,3,0); +} + bool AxacussOffice1::interact(Action verb, Object &obj1, Object &obj2) { Common::String input; if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && @@ -2972,6 +3883,24 @@ bool AxacussOffice1::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussOffice2::AxacussOffice2(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 7; + _id = OFFICE_L2; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[9] = kShownTrue; + _shown[16] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,9,BCORRIDOR,9); + _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); + _objectState[2] = Object(_id, kStringCube,kStringGenericDescription6,NULLOBJECT,NULLTYPE,0,0,0); + _objectState[3] = Object(_id, kStringImage,kStringGenericDescription7,NULLOBJECT,NULLTYPE,1,1,0); + _objectState[4] = Object(_id, kStringStrangeThing,kStringGenericDescription8,NULLOBJECT,UNNECESSARY,2,2,0); +} + bool AxacussOffice2::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && obj1.hasProperty(OPENED)) { @@ -2999,6 +3928,24 @@ bool AxacussOffice2::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussOffice3::AxacussOffice3(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 8; + _id = OFFICE_R1; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + _shown[3] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,0,0,3,BCORRIDOR,5); + _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); + _objectState[2] = Object(_id, kStringImage,kStringImageDescription2,NULLOBJECT,UNNECESSARY,1,1,0); + _objectState[3] = Object(_id, kStringImage,kStringImageDescription2,PAINTING,UNNECESSARY,2,2,0); + _objectState[4] = Object(_id, kStringPlant,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,3,3,0); + _objectState[5] = Object(_id, kNoString,kStringDefaultDescription,MONEY,TAKE|COMBINABLE,255,255,0); +} + bool AxacussOffice3::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && obj1.hasProperty(OPENED)) { @@ -3030,6 +3977,22 @@ bool AxacussOffice3::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussOffice4::AxacussOffice4(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 8; + _id = OFFICE_R2; + _shown[0] = kShownTrue; + _shown[2] = kShownTrue; + _shown[3] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,0,0,3,BCORRIDOR,5); + _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); + _objectState[2] = Object(_id, kStringStatue,kStringStatueDescription,NULLOBJECT,UNNECESSARY,6,6,0); + _objectState[3] = Object(_id, kStringPlant,kStringPlantDescription,NULLOBJECT,UNNECESSARY,5,5,0); +} + bool AxacussOffice4::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_CLOSE) && (obj1._id == DOOR) && obj1.hasProperty(OPENED)) { _vm->renderImage(_gm->invertSection(3)); @@ -3056,6 +4019,23 @@ bool AxacussOffice4::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussOffice5::AxacussOffice5(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 7; + _id = OFFICE_L; + _shown[0] = kShownTrue; + _shown[3] = kShownTrue; + _shown[5] = kShownTrue; + _shown[17] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,17,GUARD3,9); + _objectState[1] = Object(_id, kStringComputer,kStringComputerDescription,COMPUTER,COMBINABLE,4,4,0); + _objectState[2] = Object(_id, kStringGraffiti,kStringGraffitiDescription,NULLOBJECT,NULLTYPE,7,7,0); + _objectState[3] = Object(_id, kStringMoney,kStringMoneyDescription2,MONEY,TAKE,8,8,0); +} + void AxacussOffice5::onEntrance() { _gm->great(5); } @@ -3074,6 +4054,20 @@ bool AxacussOffice5::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussElevator::AxacussElevator(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 3; + _id = ELEVATOR; + _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON1,PRESS,0,0,0); + _objectState[1] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON2,PRESS,1,1,0); + _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,DOOR,EXIT,255,255,0,NULLROOM,22); + _objectState[3] = Object(_id, kStringJungle,kStringJungleDescription,JUNGLE,NULLTYPE,255,255,0,STATION,2); +} + bool AxacussElevator::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_WALK) && (obj1._id == DOOR)) { g_system->fillScreen(kColorBlack); @@ -3135,6 +4129,17 @@ bool AxacussElevator::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussStation::AxacussStation(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 5; + _id = STATION; + _shown[0] = kShownTrue; + _objectState[0] = Object(_id, kStringSign,kStringDefaultDescription,STATION_SIGN,NULLTYPE,0,0,0); + _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|CLOSED,1,1,0,NULLROOM,7); +} + bool AxacussStation::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_LOOK) && (obj1._id == STATION_SIGN)) { _gm->changeRoom(SIGN); @@ -3150,6 +4155,19 @@ bool AxacussStation::interact(Action verb, Object &obj1, Object &obj2) { return true; } +AxacussSign::AxacussSign(SupernovaEngine *vm, GameManager *gm) { + _vm = vm; + _gm = gm; + + _fileNumber = 32; + _id = SIGN; + _shown[0] = kShownTrue; + _shown[1] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,STATION,22); + _objectState[1] = Object(_id, kStringSlot,kStringDefaultDescription,STATION_SLOT,COMBINABLE,0,0,0); +} + bool AxacussSign::interact(Action verb, Object &obj1, Object &obj2) { if ((verb == ACTION_USE) && Object::combine(obj1, obj2, STATION_SLOT, MONEY) && isSectionVisible(1)) { @@ -3163,6 +4181,7 @@ bool AxacussSign::interact(Action verb, Object &obj1, Object &obj2) { return false; } + Outro::Outro(SupernovaEngine *vm, GameManager *gm) { _vm = vm; _gm = gm; diff --git a/engines/supernova/rooms.h b/engines/supernova/rooms.h index b76c01f4a1..e544997b88 100644 --- a/engines/supernova/rooms.h +++ b/engines/supernova/rooms.h @@ -39,76 +39,25 @@ class SupernovaEngine; class Room { public: - Room() { - _seen = false; - for (int i = 0; i < kMaxSection; ++i) - _shown[i] = kShownFalse; - for (int i = 0; i < kMaxDialog; ++i) - _sentenceRemoved[i] = 0; - } - - bool hasSeen() { - return _seen; - } - void setRoomSeen(bool seen) { - _seen = seen; - } - - int getFileNumber() const { - return _fileNumber; - } - RoomId getId() const { - return _id; - } - - void setSectionVisible(uint section, bool visible) { - _shown[section] = visible ? kShownTrue : kShownFalse; - } - - bool isSectionVisible(uint index) const { - return _shown[index] == kShownTrue; - } - - void removeSentence(int sentence, int number) { - if (number > 0) - _sentenceRemoved[number - 1] |= (1 << sentence); - } - - void addSentence(int sentence, int number) { - if (number > 0) - _sentenceRemoved[number - 1] &= ~(1 << sentence); - } - - void addAllSentences(int number) { - if (number > 0) - _sentenceRemoved[number - 1] = 0; - } - - bool sentenceRemoved(int sentence, int number) { - if (number <= 0) - return false; - return (_sentenceRemoved[number - 1] & (1 << sentence)); - } - - bool allSentencesRemoved(int maxSentence, int number) { - if (number <= 0) - return false; - for (int i = 0, flag = 1 ; i < maxSentence ; ++i, flag <<= 1) - if (!(_sentenceRemoved[number - 1] & flag)) - return false; - return true; - } - - Object *getObject(uint index) { - return &_objectState[index]; - } - - virtual ~Room() {} - virtual void animation() {} - virtual void onEntrance() {} - virtual bool interact(Action verb, Object &obj1, Object &obj2) { - return false; - } + Room(); + + bool hasSeen(); + void setRoomSeen(bool seen); + int getFileNumber() const; + RoomId getId() const; + void setSectionVisible(uint section, bool visible); + bool isSectionVisible(uint index) const; + void removeSentence(int sentence, int number); + void addSentence(int sentence, int number); + void addAllSentences(int number); + bool sentenceRemoved(int sentence, int number); + bool allSentencesRemoved(int maxSentence, int number); + Object *getObject(uint index); + + virtual ~Room(); + virtual void animation(); + virtual void onEntrance(); + virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual bool serialize(Common::WriteStream *out); virtual bool deserialize(Common::ReadStream *in, int version); @@ -150,66 +99,21 @@ private: // Spaceship class ShipCorridor : public Room { public: - ShipCorridor(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 17; - _id = CORRIDOR; - _shown[0] = kShownTrue; - _shown[4] = kShownTrue; - - _objectState[0] = Object(_id, kStringHatch, kStringDefaultDescription, HATCH1, OPENABLE | EXIT, 0, 6, 1, CABIN_L1, 15); - _objectState[1] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 1, 7, 2, CABIN_L2, 10); - _objectState[2] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 2, 8, 3, CABIN_L3, 5); - _objectState[3] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 5, 11, 6, CABIN_R1, 19); - _objectState[4] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT, 4, 10, 5, CABIN_R2, 14); - _objectState[5] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | EXIT | OPENED, 9, 3, 4, CABIN_R3, 9); - _objectState[6] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED | EXIT, 12, 12, 0, AIRLOCK, 2); - _objectState[7] = Object(_id, kStringButton, kStringHatchButtonDescription, BUTTON, PRESS, 13, 13, 0, NULLROOM, 0); - _objectState[8] = Object(_id, kStringLadder, kStringDefaultDescription, NULLOBJECT, NULLTYPE, 14, 14, 0, NULLROOM, 0); - _objectState[9] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 15, 15, 0, HALL, 22); - } + ShipCorridor(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipHall: public Room { public: - ShipHall(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 15; - _id = HALL; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringHatch, kStringCockpitHatchDescription, NULLOBJECT, OPENABLE | EXIT, 4, 5, 1, COCKPIT, 10); - _objectState[1] = Object(_id, kStringHatch, kStringKitchenHatchDescription, KITCHEN_HATCH, OPENABLE | EXIT, 0, 0, 0, NULLROOM, 1); - _objectState[2] = Object(_id, kStringHatch, kStringStasisHatchDescription, NULLOBJECT, OPENABLE | CLOSED | EXIT, 1, 1, 2, SLEEP, 8); - _objectState[3] = Object(_id, kStringSlot, kStringSlotDescription, SLEEP_SLOT, COMBINABLE, 2, 2, 0, NULLROOM, 0); - _objectState[4] = Object(_id, kStringLadder, kStringDefaultDescription, NULLOBJECT, NULLTYPE, 3, SLEEP, 0, NULLROOM, 0); - _objectState[5] = Object(_id, kStringCorridor, kStringDefaultDescription, NULLOBJECT, EXIT, 6, 6, 0, CORRIDOR, 19); - } + ShipHall(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipSleepCabin: public Room { public: - ShipSleepCabin(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 33; - _id = SLEEP; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringHatch, kStringStasisHatchDescription2, CABINS, NULLTYPE, 0, 0, 0, NULLROOM, 0); - _objectState[1] = Object(_id, kStringHatch, kStringStasisHatchDescription2, CABIN, NULLTYPE, 1, 1, 0, NULLROOM, 0); - _objectState[2] = Object(_id, kStringComputer, kStringDefaultDescription, COMPUTER, NULLTYPE, 2, 2, 0, NULLROOM, 0); - _objectState[3] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, HALL, 22); - } + ShipSleepCabin(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void animation(); @@ -221,19 +125,7 @@ private: class ShipCockpit : public Room { public: - ShipCockpit(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 9; - _id = COCKPIT; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringInstruments, kStringInstrumentsDescription1, INSTRUMENTS, NULLTYPE, 2, 2, 0, NULLROOM, 0); - _objectState[1] = Object(_id, kStringMonitor, kStringDefaultDescription, MONITOR, NULLTYPE, 0, 0, 0, NULLROOM, 0); - _objectState[2] = Object(_id, kStringMonitor, kStringMonitorDescription, NULLOBJECT, TAKE, 1, 0, 0, NULLROOM, 0); - _objectState[3] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, HALL, 22); - } + ShipCockpit(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void animation(); @@ -245,199 +137,36 @@ private: class ShipCabinL1: public Room { public: - ShipCabinL1(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 21; - _id = CABIN_L1; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[2] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - - _objectState[0] = Object(_id, kStringImage, kStringGenericDescription1, NULLOBJECT, UNNECESSARY, 5, 5, 0, NULLROOM, 0); - _objectState[1] = Object(_id, kStringImage, kStringGenericDescription2, NULLOBJECT, UNNECESSARY, 6, 6, 0, NULLROOM, 0); - _objectState[2] = Object(_id, kStringImage, kStringGenericDescription3, NULLOBJECT, UNNECESSARY, 7, 7, 0, NULLROOM, 0); - _objectState[3] = Object(_id, kStringMagnete, kStringMagneteDescription, NULLOBJECT, UNNECESSARY, 8, 8, 0, NULLROOM, 0); - _objectState[4] = Object(_id, kStringImage, kStringGenericDescription4, NULLOBJECT, UNNECESSARY, 9, 9, 0); - _objectState[5] = Object(_id, kStringPen, kStringPenDescription, PEN, TAKE | COMBINABLE, 10, 10, 5 | 128); - _objectState[6] = Object(_id, kStringHatch, kStringDefaultDescription, NULLOBJECT, OPENABLE | OPENED | EXIT, 3, 3, 24 | 128, CORRIDOR, 9); - _objectState[7] = Object(_id, kStringSlot, kStringSlotDescription, NULLOBJECT, COMBINABLE, 0, 0, 0); - _objectState[8] = Object(_id, kStringShelf, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED, 1, 1, 0); - _objectState[9] = Object(_id, kStringCompartment, kStringDefaultDescription, NULLOBJECT, OPENABLE | CLOSED, 2, 2, 0); - _objectState[10] = Object(_id, kStringSocket, kStringDefaultDescription, SOCKET, COMBINABLE, 4, 4, 0); - _objectState[11] = Object(_id, kStringToilet, kStringDefaultDescription, BATHROOM_DOOR, EXIT, 255, 255, 0, BATHROOM, 22); - } + ShipCabinL1(SupernovaEngine *vm, GameManager *gm); }; class ShipCabinL2 : public Room { public: - ShipCabinL2(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 21; - _id = CABIN_L2; - _shown[0] = kShownTrue; - _shown[16] = kShownTrue; - - _objectState[0] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL1,COMBINABLE,31,31,0); - _objectState[1] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL2,COMBINABLE,32,32,0); - _objectState[2] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL3,COMBINABLE,33,33,0); - _objectState[3] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_KL4,COMBINABLE,45,45,0); - _objectState[4] = Object(_id, kStringShelf,kStringDefaultDescription,SHELF_L1,OPENABLE | CLOSED,25,26,17); - _objectState[5] = Object(_id, kStringPistol,kStringPistolDescription,PISTOL,TAKE,39,39,20); - _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L2,OPENABLE | CLOSED,27,28,18); - _objectState[7] = Object(_id, kStringBooks,kStringBooksDescription,NULLOBJECT,UNNECESSARY,40,40,0); - _objectState[8] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L3,OPENABLE | CLOSED,29,30,19); - _objectState[9] = Object(_id, kStringSpool,kStringSpoolDescription, SPOOL,TAKE | COMBINABLE,41,41,21); - _objectState[10] = Object(_id, kStringCompartment,kStringDefaultDescription,SHELF_L4,OPENABLE | CLOSED,43,44,22); - _objectState[11] = Object(_id, kStringBook,kStringDefaultDescription,BOOK2,TAKE,46,46,23); - _objectState[12] = Object(_id, kStringUnderwear,kStringUnderwearDescription,NULLOBJECT,UNNECESSARY,34,34,0); - _objectState[13] = Object(_id, kStringUnderwear,kStringUnderwearDescription,NULLOBJECT,UNNECESSARY,35,35,0); - _objectState[14] = Object(_id, kStringClothes,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,36,36,0); - _objectState[15] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,37,37,0); - _objectState[16] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,38,38,0); - _objectState[17] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,23,23,0); - _objectState[18] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); - _objectState[19] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,24 | 128,CORRIDOR,9); - _objectState[20] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); - _objectState[21] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); - _objectState[22] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); - _objectState[23] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); - _objectState[24] = Object(_id, kStringFolders,kStringFoldersDescription,NULLOBJECT,UNNECESSARY,49,49,0); - } + ShipCabinL2(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipCabinL3 : public Room { public: - ShipCabinL3(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 21; - _id = CABIN_L3; - _shown[0] = kShownTrue; - _shown[6] = kShownTrue; - _shown[7] = kShownTrue; - _shown[8] = kShownTrue; - _shown[9] = kShownTrue; - _shown[12] = kShownTrue; - - _objectState[0] = Object(_id, kStringPoster,kStringPosterDescription1,NULLOBJECT,UNNECESSARY,11,11,0); - _objectState[1] = Object(_id, kStringPoster,kStringPosterDescription2,NULLOBJECT,UNNECESSARY,12,12,0); - _objectState[2] = Object(_id, kStringSpeaker,kStringDefaultDescription,NULLOBJECT,NULLTYPE,13,13,0); - _objectState[3] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,14,14,0); - _objectState[4] = Object(_id, kStringRecord,kStringRecordDescription,RECORD,TAKE | COMBINABLE,15,15,8 | 128); - _objectState[5] = Object(_id, kStringRecordStand,kStringRecordStandDescription,NULLOBJECT,UNNECESSARY,16,16,0); - _objectState[6] = Object(_id, kStringButton,kStringDefaultDescription,TURNTABLE_BUTTON,PRESS,22,22,0); - _objectState[7] = Object(_id, kStringTurntable,kStringTurntableDescription,TURNTABLE,UNNECESSARY | COMBINABLE,17,17,0); - _objectState[8] = Object(_id, kStringWire,kStringDefaultDescription,WIRE,COMBINABLE,18,18,0); - _objectState[9] = Object(_id, kStringWire,kStringDefaultDescription,WIRE2,COMBINABLE,19,19,0); - _objectState[10] = Object(_id, kStringPlug,kStringDefaultDescription,PLUG,COMBINABLE,20,20,0); - _objectState[11] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,24 | 128,CORRIDOR,9); - _objectState[12] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); - _objectState[13] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); - _objectState[14] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); - _objectState[15] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); - _objectState[16] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); - } + ShipCabinL3(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipCabinR1 : public Room { public: - ShipCabinR1(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 22; - _id = CABIN_R1; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[2] = kShownTrue; - - _objectState[0] = Object(_id, kStringImage,kStringImageDescription1,NULLOBJECT,UNNECESSARY,5,5,0); - _objectState[1] = Object(_id, kStringDrawingInstruments,kStringDrawingInstrumentsDescription,NULLOBJECT,UNNECESSARY,6,6,0); - _objectState[2] = Object(_id, kStringMagnete,kStringMagneteDescription,NULLOBJECT,UNNECESSARY,7,7,0); - _objectState[3] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,15 | 128,CORRIDOR,5); - _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); - _objectState[5] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); - _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); - _objectState[7] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); - _objectState[8] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); - } + ShipCabinR1(SupernovaEngine *vm, GameManager *gm); }; class ShipCabinR2 : public Room { public: - ShipCabinR2(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 22; - _id = CABIN_R2; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - - _objectState[0] = Object(_id, kStringChessGame,kStringChessGameDescription1,NULLOBJECT,UNNECESSARY,11,11,0); - _objectState[1] = Object(_id, kStringTennisRacket,kStringTennisRacketDescription,NULLOBJECT,UNNECESSARY,8,8,0); - _objectState[2] = Object(_id, kStringTennisBall,kStringGenericDescription2,NULLOBJECT,UNNECESSARY,9,9,0); - _objectState[3] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | OPENED | EXIT,3,3,15 | 128,CORRIDOR,5); - _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); - _objectState[5] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); - _objectState[6] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); - _objectState[7] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); - _objectState[8] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); - } + ShipCabinR2(SupernovaEngine *vm, GameManager *gm); }; class ShipCabinR3 : public Room { public: - ShipCabinR3(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 22; - _id = CABIN_R3; - _shown[0] = kShownTrue; - _shown[7] = kShownTrue; - _shown[8] = kShownTrue; - _shown[15] = kShownTrue; - - _objectState[0] = Object(_id, kStringChessGame,kStringChessGameDescription2,CHESS,TAKE | COMBINABLE,12,12,7 | 128); - _objectState[1] = Object(_id, kStringBed,kStringBedDescription,NULLOBJECT,NULLTYPE,13,13,0); - _objectState[2] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K1,COMBINABLE,27,27,0); - _objectState[3] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K2,COMBINABLE,28,28,0); - _objectState[4] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K3,COMBINABLE,29,29,0); - _objectState[5] = Object(_id, kStringSlot,kStringSlotDescription,SLOT_K4,COMBINABLE,30,30,0); - _objectState[6] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF1,OPENABLE | CLOSED,14,18,9); - _objectState[7] = Object(_id, kStringAlbums,kStringAlbumsDescription,NULLOBJECT,UNNECESSARY,14,14,0); - _objectState[8] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF2,OPENABLE | CLOSED,15,19,10); - _objectState[9] = Object(_id, kStringRope,kStringRopeDescription,ROPE,TAKE | COMBINABLE,15,15,12); - _objectState[10] = Object(_id, kStringShelf,kStringShelfDescription,SHELF3,OPENABLE | CLOSED,16,17,11); - _objectState[11] = Object(_id, kStringJunk,kStringJunkDescription,NULLOBJECT,UNNECESSARY,20,20,0); - _objectState[12] = Object(_id, kStringClothes,kStringClothesDescription,NULLOBJECT,UNNECESSARY,21,21,0); - _objectState[13] = Object(_id, kStringUnderwear,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,22,22,0); - _objectState[14] = Object(_id, kStringSocks,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,23,23,0); - _objectState[15] = Object(_id, kStringCompartment,kStringCompartmentDescription,SHELF4,OPENABLE | CLOSED,24,25,13); - _objectState[16] = Object(_id, kStringBook,kStringBookHitchhiker,BOOK,TAKE,26,26,14); - _objectState[17] = Object(_id, kStringDiscman,kStringDiscmanDescription,DISCMAN,TAKE | COMBINABLE,33,33,16); - _objectState[18] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | EXIT,3,3,15 | 128,CORRIDOR,5); - _objectState[19] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,0,0,0); - _objectState[20] = Object(_id, kStringShelf,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,1,1,0); - _objectState[21] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,2,2,0); - _objectState[22] = Object(_id, kStringSocket,kStringDefaultDescription,SOCKET,COMBINABLE,4,4,0); - _objectState[23] = Object(_id, kStringToilet,kStringDefaultDescription,BATHROOM_DOOR,EXIT,255,255,0,BATHROOM,22); - } + ShipCabinR3(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void onEntrance(); @@ -445,39 +174,12 @@ public: class ShipCabinBathroom : public Room { public: - ShipCabinBathroom(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 23; - _id = BATHROOM; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringBathroom,kStringBathroomDescription,TOILET,NULLTYPE,0,0,0); - _objectState[1] = Object(_id, kStringShower,kStringDefaultDescription,SHOWER,NULLTYPE,1,1,0); - _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,BATHROOM_EXIT,EXIT,255,255,0,CABIN_R3,2); - } + ShipCabinBathroom(SupernovaEngine *vm, GameManager *gm); }; class ShipAirlock : public Room { public: - ShipAirlock(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 34; - _id = AIRLOCK; - _shown[0] = kShownTrue; - _shown[6] = kShownTrue; - - _objectState[0] = Object(_id, kStringHatch,kStringHatchDescription1,NULLOBJECT,EXIT | OPENABLE | OPENED | CLOSED,0,0,0,CORRIDOR,10); - _objectState[1] = Object(_id, kStringHatch,kStringHatchDescription2,NULLOBJECT,EXIT | OPENABLE | CLOSED,1,1,0,HOLD,14); - _objectState[2] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON1,PRESS,2,2,0); - _objectState[3] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON2,PRESS,3,3,0); - _objectState[4] = Object(_id, kStringHelmet,kStringHelmetDescription,HELMET,TAKE,4,4,7); - _objectState[5] = Object(_id, kStringSuit,kStringSuitDescription,SUIT,TAKE,5,5,8); - _objectState[6] = Object(_id, kStringLifeSupport,kStringLifeSupportDescription,LIFESUPPORT,TAKE,6,6,9); - } + ShipAirlock(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void onEntrance(); @@ -485,27 +187,7 @@ public: class ShipHold : public Room { public: - ShipHold(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 24; - _id = HOLD; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kNoString,kStringDefaultDescription,HOLD_WIRE,COMBINABLE,255,255,0); - _objectState[1] = Object(_id, kStringScrap,kStringScrapDescription1,SCRAP_LK,NULLTYPE,4,4,0); - _objectState[2] = Object(_id, kStringTerminalStrip,kStringDefaultDescription,TERMINALSTRIP,COMBINABLE,255,255,0); - _objectState[3] = Object(_id, kStringScrap,kStringScrapDescription2,NULLOBJECT,NULLTYPE,5,5,0); - _objectState[4] = Object(_id, kStringReactor,kStringReactorDescription,NULLOBJECT,NULLTYPE,6,6,0); - _objectState[5] = Object(_id, kStringNozzle,kStringDefaultDescription,NULLOBJECT,NULLTYPE,7,7,0); - _objectState[6] = Object(_id, kStringPumpkin,kStringPumpkinDescription,NULLOBJECT,NULLTYPE,8,8,0); - _objectState[7] = Object(_id, kStringHatch,kStringDefaultDescription,LANDINGMOD_OUTERHATCH,EXIT | OPENABLE,1,2,2,LANDINGMODULE,6); - _objectState[8] = Object(_id, kStringLandingModule,kStringLandingModuleDescription,NULLOBJECT,NULLTYPE,0,0,0); - _objectState[9] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,AIRLOCK,22); - _objectState[10] = Object(_id, kStringHatch,kStringHatchDescription3,OUTERHATCH_TOP,EXIT | OPENABLE | OPENED,3,3,0,GENERATOR,8); - _objectState[11] = Object(_id, kStringGenerator,kStringGeneratorDescription,GENERATOR_TOP,EXIT,12,12,0,GENERATOR,8); - } + ShipHold(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void onEntrance(); @@ -513,119 +195,41 @@ public: class ShipLandingModule : public Room { public: - ShipLandingModule(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 25; - _id = LANDINGMODULE; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringSocket,kStringDefaultDescription,LANDINGMOD_SOCKET,COMBINABLE,1,1,0); - _objectState[1] = Object(_id, kStringButton,kSafetyButtonDescription,LANDINGMOD_BUTTON,PRESS | COMBINABLE,2,2,0); - _objectState[2] = Object(_id, kStringMonitor,kStringDefaultDescription,LANDINGMOD_MONITOR,NULLTYPE,3,3,0); - _objectState[3] = Object(_id, kStringKeyboard,kStringDefaultDescription,KEYBOARD,NULLTYPE,4,4,0); - _objectState[4] = Object(_id, kNoString,kStringDefaultDescription,LANDINGMOD_WIRE,COMBINABLE,255,255,0); - _objectState[5] = Object(_id, kStringHatch,kStringDefaultDescription,LANDINGMOD_HATCH,EXIT | OPENABLE | OPENED | COMBINABLE, 0,0,1 | 128,HOLD,10); - } + ShipLandingModule(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipGenerator : public Room { public: - ShipGenerator(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 18; - _id = GENERATOR; - _shown[0] = kShownTrue; - _shown[5] = kShownTrue; - - _objectState[0] = Object(_id, kStringGeneratorWire,kStringDefaultDescription,GENERATOR_WIRE,COMBINABLE,255,255,0); - _objectState[1] = Object(_id, kStringEmptySpool,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); - _objectState[2] = Object(_id, kStringKeycard2,kStringKeycard2Description,KEYCARD2,COMBINABLE | TAKE,12,12,5 | 128); - _objectState[3] = Object(_id, kStringRope,kStringDefaultDescription,GENERATOR_ROPE,COMBINABLE,255,255,0); - _objectState[4] = Object(_id, kStringHatch,kStringHatchDescription3,OUTERHATCH,EXIT | OPENABLE,1,2,1,OUTSIDE,22); - _objectState[5] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,OPENABLE | CLOSED,3,3,0); - _objectState[6] = Object(_id, kStringSlot,kStringSlotDescription,NULLOBJECT,COMBINABLE,4,4,0); - _objectState[7] = Object(_id, kStringTrap,kStringDefaultDescription,TRAP,OPENABLE,5,6,2); - _objectState[8] = Object(_id, kStringWire,kStringDefaultDescription,NULLOBJECT,NULLTYPE,7,7,0); - _objectState[9] = Object(_id, kStringVoltmeter,kStringDefaultDescription,VOLTMETER,NULLTYPE,9,9,0,NULLROOM,0); - _objectState[10] = Object(_id, kStringClip,kStringDefaultDescription,CLIP,COMBINABLE,8,8,0); - _objectState[11] = Object(_id, kStringWire,kStringWireDescription,SHORT_WIRE,COMBINABLE,10,10,0); - _objectState[12] = Object(_id, kStringLadder,kStringDefaultDescription,LADDER,EXIT,0,0,0,HOLD,1); - } + ShipGenerator(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; class ShipOuterSpace : public Room { public: - ShipOuterSpace(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 4; - _id = OUTSIDE; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringHatch,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,GENERATOR,3); - _objectState[1] = Object(_id, kStringRope,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); - } + ShipOuterSpace(SupernovaEngine *vm, GameManager *gm); }; + // Arsano class ArsanoRocks : public Room { public: - ArsanoRocks(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 12; - _id = OUTSIDE; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringRope,kStringDefaultDescription,NULLOBJECT,UNNECESSARY | EXIT,0,0,0,GENERATOR,12); - _objectState[1] = Object(_id, kStringStone,kStringDefaultDescription,STONE,NULLTYPE,1,1,0); - _objectState[2] = Object(_id, kStringStone,kStringDefaultDescription,NULLOBJECT,NULLTYPE,2,2,0); - _objectState[3] = Object(_id, kStringCaveOpening,kStringCaveOpeningDescription,NULLOBJECT,NULLTYPE,255,255,0,CAVE,1); - } + ArsanoRocks(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class ArsanoCave : public Room { public: - ArsanoCave(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 12; - _id = CAVE; - - _objectState[0] = Object(_id, kStringExit,kStringExitDescription,NULLOBJECT,EXIT,255,255,0,ROCKS,22); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,MEETUP,2); - } + ArsanoCave(SupernovaEngine *vm, GameManager *gm); }; + class ArsanoMeetup : public Room { public: - ArsanoMeetup(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 37; - _id = MEETUP; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringCave,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CAVE,22); - _objectState[1] = Object(_id, kStringSign,kStringSignDescription,MEETUP_SIGN,NULLTYPE,0,0,0); - _objectState[2] = Object(_id, kStringEntrance,kStringDefaultDescription,DOOR,EXIT,1,1,0,ENTRANCE,7); - _objectState[3] = Object(_id, kStringStar,kStringDefaultDescription,STAR,NULLTYPE,2,2,0); - _objectState[4] = Object(_id, kStringSpaceshift,kStringDefaultDescription,SPACESHIPS,COMBINABLE,3,3,0); - _objectState[5] = Object(_id, kStringSpaceshift,kStringDefaultDescription,SPACESHIP,COMBINABLE,4,4,0); - } + ArsanoMeetup(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual void animation(); @@ -635,52 +239,10 @@ private: byte _sign; byte _beacon; }; + class ArsanoEntrance : public Room { public: - ArsanoEntrance(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 10; - _id = ENTRANCE; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringPorter,kStringPorterDescription,PORTER,TALK,0,0,0); - _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT | OPENABLE | CLOSED,1,1,0,NULLROOM,5); - _objectState[2] = Object(_id, kStringSign,kStringSignDescription,KITCHEN_SIGN,NULLTYPE,2,2,0); - _objectState[3] = Object(_id, kStringChewingGum,kStringDefaultDescription,SCHNUCK,TAKE,255,255,10+128); - _objectState[4] = Object(_id, kStringGummyBears,kStringDefaultDescription,SCHNUCK,TAKE,255,255,11+128); - _objectState[5] = Object(_id, kStringChocolateBall,kStringDefaultDescription,SCHNUCK,TAKE,255,255,12+128); - _objectState[6] = Object(_id, kStringEgg,kStringDefaultDescription,EGG,TAKE,255,255,13+128); - _objectState[7] = Object(_id, kStringLiquorice,kStringDefaultDescription,SCHNUCK,TAKE,255,255,14+128); - _objectState[8] = Object(_id, kStringPill,kStringPillDescription,PILL,TAKE,255,255,0); - _objectState[9] = Object(_id, kStringSlot,kStringDefaultDescription,CAR_SLOT,COMBINABLE,6,6,0); - _objectState[10] = Object(_id, kStringVendingMachine,kStringVendingMachineDescription,NULLOBJECT,NULLTYPE,5,5,0); - _objectState[11] = Object(_id, kStringToilet,kStringToiletDescription,ARSANO_BATHROOM,NULLTYPE,255,255,0); - _objectState[12] = Object(_id, kStringButton,kStringDefaultDescription,BATHROOM_BUTTON,PRESS,3,3,0); - _objectState[13] = Object(_id, kStringSign,kStringSignDescription,BATHROOM_SIGN,NULLTYPE,4,4,0); - _objectState[14] = Object(_id, kStringStaircase,kStringDefaultDescription,STAIRCASE,EXIT,8,8,0,REST,3); - _objectState[15] = Object(_id, kStringExit,kStringDefaultDescription,MEETUP_EXIT,EXIT,255,255,0,MEETUP,22); - _objectState[16] = Object(_id, kStringCoins,kStringCoinsDescription,COINS,TAKE|COMBINABLE,255,255,0); - _objectState[17] = Object(_id, kStringTabletPackage,kStringTabletPackageDescription,PILL_HULL,TAKE,255,255,0); - - _dialog1[0] = kStringArsanoDialog7; - _dialog1[1] = kStringArsanoDialog1; - _dialog1[2] = kStringArsanoDialog8; - _dialog1[3] = kStringArsanoDialog9; - _dialog1[4] = kStringDialogSeparator; - - _dialog2[0] = kStringArsanoDialog1; - _dialog2[1] = kStringArsanoDialog2; - _dialog2[2] = kStringArsanoDialog3; - _dialog2[3] = kStringArsanoDialog4; - _dialog2[4] = kStringDialogSeparator; - - _dialog3[0] = kStringArsanoDialog5; - _dialog3[1] = kStringArsanoDialog6; - - _eyewitness = 5; - } + ArsanoEntrance(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void animation(); @@ -691,22 +253,10 @@ private: StringId _dialog3[5]; byte _eyewitness; }; + class ArsanoRemaining : public Room { public: - ArsanoRemaining(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 28; - _id = REST; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringStaircase,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,ENTRANCE,17); - _objectState[1] = Object(_id, kStringChair,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,ROGER,2); - _objectState[2] = Object(_id, kStringShoes,kStringShoesDescription,NULLOBJECT,NULLTYPE,2,2,0); - - _chewing = kShownTrue; - } + ArsanoRemaining(SupernovaEngine *vm, GameManager *gm); virtual void animation(); @@ -714,33 +264,10 @@ private: bool _chewing; int _i; }; + class ArsanoRoger : public Room { public: - ArsanoRoger(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 29; - _id = ROGER; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,REST,19); - _objectState[1] = Object(_id, kStringFrogFace,kStringDefaultDescription,ROGER_W,TALK,0,0,0); - _objectState[2] = Object(_id, kStringScrible,kStringScribleDescription,NULLOBJECT,NULLTYPE,3,3,0); - _objectState[3] = Object(_id, kStringWallet,kStringDefaultDescription,WALLET,TAKE,1,1,4); - _objectState[4] = Object(_id, kStringMenu,kStringMenuDescription,NULLOBJECT,UNNECESSARY,2,2,0); - _objectState[5] = Object(_id, kStringCup,kStringCupDescription,CUP,UNNECESSARY,4,4,0); - _objectState[6] = Object(_id, kStringChessGame,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,255,255,0); - _objectState[7] = Object(_id, kStringBill,kStringBillDescription,NULLOBJECT,TAKE|COMBINABLE,255,255,0); - _objectState[8] = Object(_id, kStringKeycard3,kStringDefaultDescription,KEYCARD_R,TAKE|COMBINABLE,255,255,0); - - _dialog1[0] = kStringDialogArsanoRoger1; - _dialog1[1] = kStringDialogArsanoRoger2; - _dialog1[2] = kStringDialogArsanoRoger3; - _dialog1[3] = kStringDialogSeparator; - - _eyewitness = 5; - } + ArsanoRoger(SupernovaEngine *vm, GameManager *gm); virtual void animation(); virtual void onEntrance(); @@ -751,28 +278,10 @@ private: byte _eyewitness; byte _hands; }; + class ArsanoGlider : public Room { public: - ArsanoGlider(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 19; - _id = GLIDER; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,MEETUP,15); - _objectState[1] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON1,PRESS,0,0,0); - _objectState[2] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON2,PRESS,1,1,0); - _objectState[3] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON3,PRESS,2,2,0); - _objectState[4] = Object(_id, kStringButton,kStringDefaultDescription,GLIDER_BUTTON4,PRESS,3,3,0); - _objectState[5] = Object(_id, kStringKeycard,kStringDefaultDescription,GLIDER_KEYCARD,TAKE|COMBINABLE,255,255,0); - _objectState[6] = Object(_id, kStringSlot,kStringDefaultDescription,GLIDER_SLOT,COMBINABLE,4,4,0); - _objectState[7] = Object(_id, kStringCompartment,kStringDefaultDescription,NULLOBJECT,OPENABLE,5,6,6); - _objectState[8] = Object(_id, kStringKeyboard,kStringDefaultDescription,GLIDER_BUTTONS,NULLTYPE,7,7,0); - _objectState[9] = Object(_id, kStringAnnouncement,kStringAnnouncementDescription,GLIDER_DISPLAY,NULLTYPE,8,8,0); - _objectState[10] = Object(_id, kStringInstruments,kStringAnnouncementDescription,GLIDER_INSTRUMENTS,NULLTYPE,9,9,0); - } + ArsanoGlider(SupernovaEngine *vm, GameManager *gm); virtual void animation(); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -780,32 +289,10 @@ public: private: byte _sinus; }; + class ArsanoMeetup2 : public Room { public: - ArsanoMeetup2(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 38; - _id = MEETUP2; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringRoger, kStringDefaultDescription, ROGER_W, TALK, 255, 255, 0); - _objectState[1] = Object(_id, kStringSpaceshift, kStringDefaultDescription, SPACESHIP, COMBINABLE, 255, 255, 0); - _objectState[2] = Object(_id, kStringCave, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CAVE, 22); - - _dialog1[0] = kStringDialogArsanoMeetup2_1; - _dialog1[1] = kStringDialogArsanoMeetup2_2; - _dialog2[0] = kStringDialogArsanoMeetup2_3; - _dialog2[1] = kStringDialogArsanoMeetup2_4; - _dialog3[0] = kStringDialogArsanoMeetup2_5; - _dialog3[1] = kStringDialogArsanoMeetup2_6; - _dialog3[2] = kStringDialogArsanoMeetup2_7; - _dialog3[3] = kStringDialogArsanoMeetup2_8; - _dialog4[0] = kStringDialogArsanoMeetup2_9; - _dialog4[1] = kStringDialogArsanoMeetup2_10; - _dialog4[2] = kStringDialogArsanoMeetup2_11; - } + ArsanoMeetup2(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -823,31 +310,10 @@ private: //bool _found; //bool _flug; }; + class ArsanoMeetup3 : public Room { public: - ArsanoMeetup3(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 39; - _id = MEETUP3; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringUfo,kStringUfoDescription,UFO,EXIT,0,0,0,NULLROOM,3); - _objectState[1] = Object(_id, kStringStar,kStringDefaultDescription,STAR,NULLTYPE,1,1,0); - _objectState[2] = Object(_id, kStringCave,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CAVE,22); - - _dialog2[0] = kStringArsanoDialog1; - _dialog2[1] = kStringDialogArsanoMeetup3_1; - _dialog2[2] = kStringDialogArsanoMeetup3_2; - _dialog2[3] = kStringDialogArsanoMeetup3_3; - _dialog3[0] = kStringDialogArsanoMeetup3_4; - _dialog3[1] = kStringDialogArsanoMeetup3_5; - - _dialogsX[0] = kStringDialogX1; - _dialogsX[1] = kStringDialogX2; - _dialogsX[2] = kStringDialogX3; - } + ArsanoMeetup3(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -857,171 +323,52 @@ private: // TODO: Hack, to be move away and renamed when the other uses are found StringId _dialogsX[6]; - // }; + // Axacuss class AxacussCell : public Room { public: - AxacussCell(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 43; - _id = CELL; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[31] = kShownTrue; - - _objectState[0] = Object(_id, kStringButton,kStringDefaultDescription,CELL_BUTTON,PRESS,1,1,0); - _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,CELL_DOOR,EXIT|OPENABLE|CLOSED,0,0,31+128,CORRIDOR4,1); - _objectState[2] = Object(_id, kStringTray,kStringTrayDescription,TRAY,UNNECESSARY,255,255,0); - _objectState[3] = Object(_id, kStringLamp,kStringLampDescription,NULLOBJECT,COMBINABLE,3,3,0); - _objectState[4] = Object(_id, kStringEyes,kStringEyesDescription,NULLOBJECT,NULLTYPE,4,4,0); - _objectState[5] = Object(_id, kStringWire,kStringDefaultDescription,CELL_WIRE,COMBINABLE|TAKE,6,6,0); - _objectState[6] = Object(_id, kStringSocket,kStringSocketDescription,SOCKET,COMBINABLE,5,5,0); - _objectState[7] = Object(_id, kStringMetalBlock,kStringMetalBlockDescription,MAGNET,TAKE|COMBINABLE,255,255,30); - _objectState[8] = Object(_id, kStringRobot,kStringRobotDescription,NULLOBJECT,NULLTYPE,255,255,0); - _objectState[9] = Object(_id, kStringTable,kStringTableDescription,CELL_TABLE,COMBINABLE,2,2,0); - } + AxacussCell(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); virtual void animation(); virtual void onEntrance(); }; + class AxacussCorridor1 : public Room { public: - AxacussCorridor1(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR1; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - _shown[13] = kShownTrue; - _shown[21] = kShownTrue; - _shown[23] = kShownTrue; - _shown[25] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,GUARD3,2); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR2,22); - } + AxacussCorridor1(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); }; + class AxacussCorridor2 : public Room { public: - AxacussCorridor2(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR2; - _shown[0] = kShownTrue; - _shown[2] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - _shown[17] = kShownTrue; - _shown[21] = kShownTrue; - _shown[24] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR1,2); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR3,22); - _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,CORRIDOR4,14); - } + AxacussCorridor2(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); }; + class AxacussCorridor3 : public Room { public: - AxacussCorridor3(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR3; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[5] = kShownTrue; - _shown[19] = kShownTrue; - _shown[23] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR2,2); - } + AxacussCorridor3(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); }; + class AxacussCorridor4 : public Room { public: - AxacussCorridor4(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR4; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[2] = kShownTrue; - _shown[8] = kShownTrue; - _shown[9] = kShownTrue; - _shown[11] = kShownTrue; - _shown[15] = kShownTrue; - _shown[18] = kShownTrue; - _shown[20] = kShownTrue; - _shown[26] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,0,0,0,CORRIDOR2,10); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,1,1,0,GUARD,14); - _objectState[2] = Object(_id, kStringCellDoor,kStringCellDoorDescription,DOOR,EXIT|OPENABLE|OPENED|CLOSED,7,7,0,CELL,16); - _objectState[3] = Object(_id, kStringLaptop,kStringDefaultDescription,NEWSPAPER,TAKE,6,6,8); - _objectState[4] = Object(_id, kStringWristwatch,kStringDefaultDescription,WATCH,TAKE|COMBINABLE,255,255,8); - _objectState[5] = Object(_id, kStringTable,kStringDefaultDescription,TABLE,COMBINABLE,5,5,0); - } + AxacussCorridor4(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual void animation(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussCorridor5 : public Room { public: - AxacussCorridor5(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR5; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - _shown[12] = kShownTrue; - _shown[22] = kShownTrue; - _shown[23] = kShownTrue; - _shown[24] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,DOOR,EXIT,2,2,0,NULLROOM,2); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR6,22); - - _dialog1[0] = kStringDialogAxacussCorridor5_1; - _dialog1[1] = kStringDialogAxacussCorridor5_2; - _dialog2[0] = kStringDialogAxacussCorridor5_3; - _dialog2[1] = kStringDialogAxacussCorridor5_4; - _dialog3[0] = kStringDialogAxacussCorridor5_5; - _dialog3[1] = kStringDialogAxacussCorridor5_6; - _dialog3[2] = kStringDialogAxacussCorridor5_7; - _dialog3[3] = kStringDialogAxacussCorridor5_7; - - _rows[0] = 1; - _rows[1] = 1; - _rows[2] = 1; - _rows[3] = 1; - _rows[4] = 0; - _rows[5] = 0; - } + AxacussCorridor5(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -1040,118 +387,38 @@ private: class AxacussCorridor6 : public Room { public: - AxacussCorridor6(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR6; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - _shown[6] = kShownTrue; - _shown[22] = kShownTrue; - _shown[24] = kShownTrue; - _shown[25] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR5,2); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,CORRIDOR7,22); - _objectState[2] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,OPENABLE|CLOSED,255,255,0,CORRIDOR8,13); - } + AxacussCorridor6(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussCorridor7 : public Room { public: - AxacussCorridor7(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR7; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[4] = kShownTrue; - _shown[5] = kShownTrue; - _shown[10] = kShownTrue; - _shown[21] = kShownTrue; - _shown[24] = kShownTrue; - _shown[25] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,CORRIDOR6,2); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,GUARD,22); - } + AxacussCorridor7(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); }; + class AxacussCorridor8 : public Room { public: - AxacussCorridor8(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR8; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[4] = kShownTrue; - _shown[15] = kShownTrue; - _shown[20] = kShownTrue; - _shown[22] = kShownTrue; - _shown[28] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,0,0,0,CORRIDOR6,10); - _objectState[1] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,3,3,0,BCORRIDOR,22); - } + AxacussCorridor8(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussCorridor9 : public Room { public: - AxacussCorridor9(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 16; - _id = CORRIDOR9; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[3] = kShownTrue; - _shown[14] = kShownTrue; - _shown[19] = kShownTrue; - _shown[23] = kShownTrue; - _shown[28] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,2,2,0,BCORRIDOR,2); - _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,0,0,0,GUARD,10); - } + AxacussCorridor9(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussBcorridor : public Room { public: - AxacussBcorridor(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 6; - _id = BCORRIDOR; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - - _objectState[0] = Object(_id, kStringPillar,kStringDefaultDescription,PILLAR1,NULLTYPE,4,4,0); - _objectState[1] = Object(_id, kStringPillar,kStringDefaultDescription,PILLAR2,NULLTYPE,5,5,0); - _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,6,6,0,CORRIDOR8,2); - _objectState[3] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,7,7,0,CORRIDOR9,22); - _objectState[4] = Object(_id, kStringDoor,kStringDoorDescription1,DOOR1,EXIT|OPENABLE|CLOSED|OCCUPIED,0,0,1,OFFICE_L1,6); - _objectState[5] = Object(_id, kStringDoor,kStringDoorDescription2,DOOR2,EXIT|OPENABLE|CLOSED|OCCUPIED,1,1,2,OFFICE_L2,16); - _objectState[6] = Object(_id, kStringDoor,kStringDoorDescription3,DOOR3,EXIT|OPENABLE|OPENED,2,2,3,OFFICE_R1,8); - _objectState[7] = Object(_id, kStringDoor,kStringDoorDescription4,DOOR4,EXIT|OPENABLE|CLOSED|OCCUPIED,3,3,4,OFFICE_R2,18); - } + AxacussBcorridor(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -1159,25 +426,7 @@ public: class AxacussIntersection : public Room { public: - AxacussIntersection(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 40; - _id = GUARD; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, CORRIDOR4, 21); - _objectState[1] = Object(_id, kStringCorridor, kStringDefaultDescription, NULLOBJECT, EXIT, 3, 3, 0, CORRIDOR7, 5); - _objectState[2] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 1, 1, 6, CORRIDOR9, 3); - _objectState[3] = Object(_id, kStringAxacussan, kStringAxacussanDescription, GUARDIAN, TALK, 0, 0, 0); - _objectState[4] = Object(_id, kStringImage, kStringImageDescription2, NULLOBJECT, NULLTYPE, 2, 2, 0); - _objectState[5] = Object(_id, kStringMastercard, kStringMastercardDescription, MASTERKEYCARD, TAKE | COMBINABLE, 255, 255, 1); - - _dialogsX[0] = kStringDialogX1; - _dialogsX[1] = kStringDialogX2; - _dialogsX[2] = kStringDialogX3; - } + AxacussIntersection(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); @@ -1187,188 +436,67 @@ private: class AxacussExit : public Room { public: - AxacussExit(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 42; - _id = GUARD3; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,CORRIDOR1,22); - _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT|OPENABLE|CLOSED,0,0,0,NULLROOM,20); - _objectState[2] = Object(_id, kStringDoor,kStringDefaultDescription,NULLOBJECT,EXIT|OPENABLE|CLOSED,1,1,0,NULLROOM,15); - _objectState[3] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE,2,2,11,OFFICE_L,0); - _objectState[4] = Object(_id, kStringLamp2,kStringDefaultDescription,LAMP,COMBINABLE,3,3,0); - _objectState[5] = Object(_id, kStringAxacussan,kStringDefaultDescription,GUARDIAN,TALK,5,5,0); - _objectState[6] = Object(_id, kStringImage,kStringGenericDescription5,NULLOBJECT,NULLTYPE,4,4,0); - - _dialogsX[0] = kStringDialogX1; - _dialogsX[1] = kStringDialogX2; - _dialogsX[2] = kStringDialogX3; - } + AxacussExit(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); private: StringId _dialogsX[6]; }; + class AxacussOffice1 : public Room { public: - AxacussOffice1(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 7; - _id = OFFICE_L1; - _shown[0] = kShownTrue; - _shown[2] = kShownTrue; - _shown[7] = kShownTrue; - _shown[9] = kShownTrue; - _shown[16] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,9,BCORRIDOR,9); - _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); - _objectState[2] = Object(_id, kStringMoney,kStringMoneyDescription1,MONEY,TAKE,255,255,0); - _objectState[3] = Object(_id, kStringLocker,kStringLockerDescription,LOCKER,OPENABLE|CLOSED,5,5,0); - _objectState[4] = Object(_id, kStringLetter,kStringDefaultDescription,LETTER,UNNECESSARY,3,3,0); - } + AxacussOffice1(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussOffice2 : public Room { public: - AxacussOffice2(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 7; - _id = OFFICE_L2; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[9] = kShownTrue; - _shown[16] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,9,BCORRIDOR,9); - _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); - _objectState[2] = Object(_id, kStringCube,kStringGenericDescription6,NULLOBJECT,NULLTYPE,0,0,0); - _objectState[3] = Object(_id, kStringImage,kStringGenericDescription7,NULLOBJECT,NULLTYPE,1,1,0); - _objectState[4] = Object(_id, kStringStrangeThing,kStringGenericDescription8,NULLOBJECT,UNNECESSARY,2,2,0); - } + AxacussOffice2(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussOffice3 : public Room { public: - AxacussOffice3(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 8; - _id = OFFICE_R1; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - _shown[3] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,0,0,3,BCORRIDOR,5); - _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); - _objectState[2] = Object(_id, kStringImage,kStringImageDescription2,NULLOBJECT,UNNECESSARY,1,1,0); - _objectState[3] = Object(_id, kStringImage,kStringImageDescription2,PAINTING,UNNECESSARY,2,2,0); - _objectState[4] = Object(_id, kStringPlant,kStringDefaultDescription,NULLOBJECT,UNNECESSARY,3,3,0); - _objectState[5] = Object(_id, kNoString,kStringDefaultDescription,MONEY,TAKE|COMBINABLE,255,255,0); - } + AxacussOffice3(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussOffice4 : public Room { public: - AxacussOffice4(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 8; - _id = OFFICE_R2; - _shown[0] = kShownTrue; - _shown[2] = kShownTrue; - _shown[3] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,0,0,3,BCORRIDOR,5); - _objectState[1] = Object(_id, kStringComputer,kStringDefaultDescription,COMPUTER,COMBINABLE,4,4,0); - _objectState[2] = Object(_id, kStringStatue,kStringStatueDescription,NULLOBJECT,UNNECESSARY,6,6,0); - _objectState[3] = Object(_id, kStringPlant,kStringPlantDescription,NULLOBJECT,UNNECESSARY,5,5,0); - } + AxacussOffice4(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussOffice5 : public Room { public: - AxacussOffice5(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 7; - _id = OFFICE_L; - _shown[0] = kShownTrue; - _shown[3] = kShownTrue; - _shown[5] = kShownTrue; - _shown[17] = kShownTrue; - - _objectState[0] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|OPENED,6,6,17,GUARD3,9); - _objectState[1] = Object(_id, kStringComputer,kStringComputerDescription,COMPUTER,COMBINABLE,4,4,0); - _objectState[2] = Object(_id, kStringGraffiti,kStringGraffitiDescription,NULLOBJECT,NULLTYPE,7,7,0); - _objectState[3] = Object(_id, kStringMoney,kStringMoneyDescription2,MONEY,TAKE,8,8,0); - } + AxacussOffice5(SupernovaEngine *vm, GameManager *gm); virtual void onEntrance(); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussElevator : public Room { public: - AxacussElevator(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 3; - _id = ELEVATOR; - _shown[0] = kShownTrue; - - _objectState[0] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON1,PRESS,0,0,0); - _objectState[1] = Object(_id, kStringButton,kStringDefaultDescription,BUTTON2,PRESS,1,1,0); - _objectState[2] = Object(_id, kStringExit,kStringDefaultDescription,DOOR,EXIT,255,255,0,NULLROOM,22); - _objectState[3] = Object(_id, kStringJungle,kStringJungleDescription,JUNGLE,NULLTYPE,255,255,0,STATION,2); - } + AxacussElevator(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussStation : public Room { public: - AxacussStation(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 5; - _id = STATION; - _shown[0] = kShownTrue; - _objectState[0] = Object(_id, kStringSign,kStringDefaultDescription,STATION_SIGN,NULLTYPE,0,0,0); - _objectState[1] = Object(_id, kStringDoor,kStringDefaultDescription,DOOR,EXIT|OPENABLE|CLOSED,1,1,0,NULLROOM,7); - } + AxacussStation(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; + class AxacussSign : public Room { public: - AxacussSign(SupernovaEngine *vm, GameManager *gm) { - _vm = vm; - _gm = gm; - - _fileNumber = 32; - _id = SIGN; - _shown[0] = kShownTrue; - _shown[1] = kShownTrue; - - _objectState[0] = Object(_id, kStringExit,kStringDefaultDescription,NULLOBJECT,EXIT,255,255,0,STATION,22); - _objectState[1] = Object(_id, kStringSlot,kStringDefaultDescription,STATION_SLOT,COMBINABLE,0,0,0); - } + AxacussSign(SupernovaEngine *vm, GameManager *gm); virtual bool interact(Action verb, Object &obj1, Object &obj2); }; |