diff options
Diffstat (limited to 'engines/mads')
-rw-r--r-- | engines/mads/nebular/nebular_scenes.cpp | 339 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes.h | 16 |
2 files changed, 180 insertions, 175 deletions
diff --git a/engines/mads/nebular/nebular_scenes.cpp b/engines/mads/nebular/nebular_scenes.cpp index 1c9cd41973..06b0f3b7b9 100644 --- a/engines/mads/nebular/nebular_scenes.cpp +++ b/engines/mads/nebular/nebular_scenes.cpp @@ -51,257 +51,245 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) { scene.addActiveVocab(NOUN_ALCOHOL); switch (scene._nextSceneId) { - // Scene group #1 - case 101: + // Scene group #1 (ship, ocean, cave) + case 101: // Ship, cockpit return new Scene101(vm); - case 102: + case 102: // Ship, dining room return new Scene102(vm); - case 103: + case 103: // Ship, engine room return new Scene103(vm); - case 104: + case 104: // Ocean, northwest cliff return new Scene104(vm); - case 105: + case 105: // Ocean, northeast cliff with mine return new Scene105(vm); - case 106: + case 106: // Ocean, outside ship return new Scene106(vm); - case 107: + case 107: // Ocean, bushes return new Scene107(vm); - case 108: + case 108: // Ocean, southwest cliff return new Scene108(vm); - case 109: + case 109: // Ocean, tunnel return new Scene109(vm); - case 110: + case 110: // Ocean, cave with tunnel return new Scene110(vm); - case 111: + case 111: // Cave with pool and opening return new Scene111(vm); - case 112: + case 112: // cutscene, looking at view screen return new Scene112(vm); - // Scene group #2 - case 201: + // Scene group #2 (island) + case 201: // outside teleporter return new Scene201(vm); - case 202: + case 202: // village return new Scene202(vm); - case 203: + case 203: // tree with Rhotunda (fat woman) return new Scene203(vm); - case 205: + case 205: // village return new Scene205(vm); - case 207: + case 207: // outside witch doctor's hut return new Scene207(vm); - case 208: + case 208: // pit with leaves (trap) return new Scene208(vm); - case 209: + case 209: // palm tree and bamboo plant return new Scene209(vm); - case 210: + case 210: // outside native woman's hut return new Scene210(vm); - case 211: + case 211: // palm tree with monkey return new Scene211(vm); - case 212: + case 212: // outside cave return new Scene212(vm); - case 213: + case 213: // inside teleporter return new Scene213(vm); - case 214: + case 214: // inside witch doctor's hut return new Scene214(vm); - case 215: + case 215: // inside native woman's hut return new Scene215(vm); - case 216: + case 216: // cutscene, monitor showing Rex and native woman return new Scene216(vm); - // Scene group #3 - case 301: + // Scene group #3 (women's base, cell block) + case 301: // outside teleporter (before chaos) return new Scene301(vm); - case 302: + case 302: // room with statue (before chaos) return new Scene302(vm); - case 303: + case 303: // western corridor (before chaos) return new Scene303(vm); - case 304: + case 304: // crossing with traffic light (before chaos) return new Scene304(vm); - case 307: + case 307: // Rex's cell (before chaos) return new Scene307(vm); - case 308: + case 308: // sauropod's cell (before chaos) return new Scene308(vm); - case 309: + case 309: // multihand monster's cell (before chaos) return new Scene309(vm); - case 310: + case 310: // empty cell (before chaos) return new Scene310(vm); - case 311: + case 311: // warden's desk (before chaos) return new Scene311(vm); - case 313: + case 313: // air shaft overview return new Scene313(vm); - case 316: + case 316: // Gender Bender return new Scene316(vm); - case 318: + case 318: // doctor's gurney return new Scene318(vm); - case 319: + case 319: // doctor Slache closeup (lying on the gurney) return new Scene319(vm); - case 320: + case 320: // warden's desk closeup / monitors return new Scene320(vm); - case 321: + case 321: // gender bender sex change sequence return new Scene321(vm); - case 322: + case 322: // inside teleporter return new Scene322(vm); - case 351: + case 351: // outside teleporter (after chaos) return new Scene351(vm); - case 352: + case 352: // room with statue (after chaos) return new Scene352(vm); - case 353: + case 353: // western corridor (after chaos) return new Scene353(vm); - case 354: + case 354: // crossing with traffic light (after chaos) return new Scene354(vm); - case 357: + case 357: // Rex's cell (after chaos) return new Scene357(vm); - case 358: + case 358: // sauropod's cell (after chaos) return new Scene358(vm); - case 359: + case 359: // multihand monster's cell (after chaos) return new Scene359(vm); - case 360: + case 360: // empty cell (after chaos) return new Scene360(vm); - case 361: + case 361: // warden's desk (after chaos) return new Scene361(vm); - case 366: + case 366: // air shaft ending at Gender Bender return new Scene366(vm); - case 387: + case 387: // air shaft ending at cell return new Scene387(vm); - case 388: + case 388: // air shaft ending at sauropod's cell return new Scene388(vm); - case 389: + case 389: // air shaft ending at multihand monster's cell (before chaos) return new Scene389(vm); - case 390: + case 390: // air shaft ending at cell return new Scene390(vm); - case 391: + case 391: // air shaft ending at warden's desk return new Scene391(vm); - case 399: + case 399: // air shaft ending at multihand monster's cell (after chaos) return new Scene399(vm); - // Scene group #4 - case 401: + // Scene group #4 (women's base) + case 401: // outside bar return new Scene401(vm); - case 402: + case 402: // inside bar return new Scene402(vm); - case 405: + case 405: // outside armory return new Scene405(vm); - case 406: + case 406: // outside storage room return new Scene406(vm); - case 407: + case 407: // eastern corridor return new Scene407(vm); - case 408: + case 408: // inside armory return new Scene408(vm); - case 409: + case 409: // inside female only teleporter return new Scene409(vm); - case 410: + case 410: // inside storage room return new Scene410(vm); - case 411: + case 411: // lab return new Scene411(vm); - case 413: + case 413: // outside female only teleporter return new Scene413(vm); - // Scene group #5 - case 502: + // Scene group #5 (men's city, lower floor) + case 501: // outside car + return new DummyScene(vm); // TODO + case 502: // inside male only teleporter return new Scene502(vm); - case 501: - // TODO - case 503: - // TODO - case 504: - // TODO - case 505: - // TODO - case 506: - // TODO - case 507: - // TODO - case 508: - // TODO - case 511: - // TODO - case 512: - // TODO - case 513: - // TODO - case 515: - // TODO - case 551: - // TODO - // Fall-through for unimplemented scenes in group #5 - error("Invalid scene %d called", scene._nextSceneId); - - // Scene group #6 - case 601: - // TODO - case 602: - // TODO - case 603: - // TODO - case 604: - // TODO - case 605: - // TODO - case 607: - // TODO - case 608: - // TODO - case 609: - // TODO - case 610: - // TODO - case 611: - // TODO - case 612: - // TODO - case 620: - // TODO - // Fall-through for unimplemented scenes in group #6 - error("Invalid scene %d called", scene._nextSceneId); - - // Scene group #7 - case 707: + case 503: // guard tower + return new DummyScene(vm); // TODO + case 504: // inside car + return new DummyScene(vm); // TODO + case 505: // car view screen + return new DummyScene(vm); // TODO + case 506: // shopping street + return new DummyScene(vm); // TODO + case 507: // inside software house + return new DummyScene(vm); // TODO + case 508: // laser cannon + return new DummyScene(vm); // TODO + case 511: // outside pleasure dome + return new DummyScene(vm); // TODO + case 512: // inside pleasure dome + return new DummyScene(vm); // TODO + case 513: // outside mall + return new DummyScene(vm); // TODO + case 515: // overview + return new DummyScene(vm); // TODO + case 551: // outside teleporter (with skeleton) + return new DummyScene(vm); // TODO + + // Scene group #6 (men's city, upper floor) + case 601: // outside Bruce's house + return new DummyScene(vm); // TODO + case 602: // Bruce's house, living room + return new DummyScene(vm); // TODO + case 603: // Bruce's house, bedroom + return new DummyScene(vm); // TODO + case 604: // viewport + return new DummyScene(vm); // TODO + case 605: // viewport closeup + return new DummyScene(vm); // TODO + case 607: // outside Abdul's garage + return new DummyScene(vm); // TODO + case 608: // inside Abdul's garage + return new DummyScene(vm); // TODO + case 609: // outside Buckluster video store + return new DummyScene(vm); // TODO + case 610: // inside Buckluster video store + return new DummyScene(vm); // TODO + case 611: // back alley + return new DummyScene(vm); // TODO + case 612: // expressway / maintenance building + return new DummyScene(vm); // TODO + case 620: // cutscene, viewport glass breaking + return new DummyScene(vm); // TODO + + // Scene group #7 (submerged men's city / upper floor) + case 701: // outside elevator (after city is submerged) + return new DummyScene(vm); // TODO + case 702: // outside teleporter (after city is submerged) + return new DummyScene(vm); // TODO + case 703: // water + return new DummyScene(vm); // TODO + case 704: // water, building in the distance + return new DummyScene(vm); // TODO + case 705: // water, outside building + return new DummyScene(vm); // TODO + case 706: // inside building, pedestral room, outside teleporter + return new DummyScene(vm); // TODO + case 707: // teleporter return new Scene707(vm); - case 711: + case 710: // looking at pedestral room through binoculars + return new DummyScene(vm); // TODO + case 711: // inside teleporter return new Scene711(vm); - case 701: - // TODO - case 702: - // TODO - case 703: - // TODO - case 704: - // TODO - case 705: - // TODO - case 706: - // TODO - case 708: - // TODO - case 710: - // TODO - case 751: - // TODO - case 752: - // TODO - // Fall-through for unimplemented scenes in group #7 - error("Invalid scene %d called", scene._nextSceneId); + case 751: // outside elevator (before city is submerged) + return new DummyScene(vm); // TODO + case 752: // outside teleporter (before city is submerged) + return new DummyScene(vm); // TODO // Scene group #8 - case 804: + case 801: // control room, outside teleporter + return new DummyScene(vm); // TODO + case 802: // launch pad with destroyed ship + return new DummyScene(vm); // TODO + case 803: // empty launch pad + return new DummyScene(vm); // TODO + case 804: // ??? (broken animation) return new Scene804(vm); - case 807: - return new Scene807(vm); - case 801: - // TODO - case 802: - // TODO - case 803: - // TODO - case 805: - // TODO - case 806: - // TODO - case 808: - // TODO - case 810: - // TODO - // Fall-through for unimplemented scenes in group #8 - error("Invalid scene %d called", scene._nextSceneId); + case 805: // service panel + return new DummyScene(vm); // TODO + case 807: // teleporter + return new DummyScene(vm); // TODO + case 808: // antigrav control + return new DummyScene(vm); // TODO + case 810: // cutscene: Rex's ship leaving the planet + return new DummyScene(vm); // TODO default: error("Invalid scene %d called", scene._nextSceneId); @@ -450,7 +438,8 @@ void SceneTeleporter::teleporterHandleKey() { _curCode *= 10; _curCode += _buttonTyped; _digitCount++; - _msgText = Common::String::format("%d", _curCode); + _msgText = ""; + _msgText.format("%d", _curCode); if (_digitCount < 4) _msgText += "_"; @@ -556,7 +545,7 @@ void SceneTeleporter::teleporterEnter() { _meteorologistNextPlace = _globals[kTeleporterCode + i]; } - Common::String msgText2 = Common::String::format("#%.4d", tmpVal); + Common::String msgText2 = Common::String::format("#%d", tmpVal); if (_scene->_currentSceneId != 711) { _scene->_kernelMessages.add(Common::Point(133, 34), 0, 32, 0, 9999999, msgText2); diff --git a/engines/mads/nebular/nebular_scenes.h b/engines/mads/nebular/nebular_scenes.h index 2a47af61d3..e1fcf1e48d 100644 --- a/engines/mads/nebular/nebular_scenes.h +++ b/engines/mads/nebular/nebular_scenes.h @@ -178,6 +178,22 @@ protected: */ SceneTeleporter(MADSEngine *vm) : NebularScene(vm) {} }; + +// TODO: Temporary, remove once all scenes are implemented properly +class DummyScene: public NebularScene { +public: + DummyScene(MADSEngine *vm) : NebularScene(vm) { + warning("Unimplemented scene"); + } + + virtual void setup() {} + virtual void enter() {} + virtual void step() {} + virtual void preActions() {} + virtual void actions() {} + virtual void synchronize(Common::Serializer &s) {} +}; + } // End of namespace Nebular } // End of namespace MADS |