From b36b6185bee6c4a33dec43d6eb1e13a8bbfef18b Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 7 May 2014 01:09:19 +0300 Subject: MADS: Implement Rex Nebular scene 710 --- engines/mads/nebular/nebular_scenes.cpp | 2 +- engines/mads/nebular/nebular_scenes7.cpp | 43 ++++++++++++++++++++++++++++++++ engines/mads/nebular/nebular_scenes7.h | 12 +++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/mads/nebular/nebular_scenes.cpp b/engines/mads/nebular/nebular_scenes.cpp index 6660627038..7aaaa9ebb3 100644 --- a/engines/mads/nebular/nebular_scenes.cpp +++ b/engines/mads/nebular/nebular_scenes.cpp @@ -265,7 +265,7 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) { case 707: // teleporter return new Scene707(vm); case 710: // looking at pedestral room through binoculars - return new DummyScene(vm); // TODO + return new Scene710(vm); case 711: // inside teleporter return new Scene711(vm); case 751: // outside elevator (before city is submerged) diff --git a/engines/mads/nebular/nebular_scenes7.cpp b/engines/mads/nebular/nebular_scenes7.cpp index 53b408c46c..eb67422278 100644 --- a/engines/mads/nebular/nebular_scenes7.cpp +++ b/engines/mads/nebular/nebular_scenes7.cpp @@ -141,6 +141,49 @@ void Scene707::actions() { /*------------------------------------------------------------------------*/ +void Scene710::setup() { + _game._player._spritesPrefix = ""; + setAAName(); +} + +void Scene710::enter() { + _game._scene._userInterface.setup(kInputLimitedSentences); + + if (_game._objects[OBJ_VASE]._roomNumber == 706) { + _game._globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('g', -1)); + _globals._sequenceIndexes[1] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[1], false, 6, 0, 0, 0); + } + + _game._player._visible = false; + _game._scene._sequences.addTimer(600, 70); + + sceneEntrySound(); +} + +void Scene710::step() { + if (_game._trigger == 70) { + if (_game._globals[kCityFlooded]) + _game._scene._nextSceneId = 701; + else + _game._scene._nextSceneId = 751; + } +} + +void Scene710::actions() { + if (_game._scene._action.isAction(0x46F, 0x27)) { + _game._player._stepEnabled = false; + + if (_game._globals[kCityFlooded]) + _game._scene._nextSceneId = 701; + else + _game._scene._nextSceneId = 751; + + _action._inProgress = false; + } +} + +/*------------------------------------------------------------------------*/ + void Scene711::setup() { // The original was calling Scene7xx::setPlayerSpreitesPrefix() _vm->_sound->command(5); diff --git a/engines/mads/nebular/nebular_scenes7.h b/engines/mads/nebular/nebular_scenes7.h index 080c6396e2..0f4947f38f 100644 --- a/engines/mads/nebular/nebular_scenes7.h +++ b/engines/mads/nebular/nebular_scenes7.h @@ -62,6 +62,18 @@ public: virtual void postActions() {}; }; +class Scene710: public Scene7xx { +public: + Scene710(MADSEngine *vm) : Scene7xx(vm) {} + + virtual void setup(); + virtual void enter(); + virtual void step(); + virtual void preActions() {}; + virtual void actions(); + virtual void postActions() {}; +}; + class Scene711: public SceneTeleporter { public: Scene711(MADSEngine *vm) : SceneTeleporter(vm) {} -- cgit v1.2.3