diff options
author | Filippos Karapetis | 2014-05-07 01:09:19 +0300 |
---|---|---|
committer | Filippos Karapetis | 2014-05-07 01:09:19 +0300 |
commit | b36b6185bee6c4a33dec43d6eb1e13a8bbfef18b (patch) | |
tree | a28ef0170adb21803886ca416f63f934499cf30d /engines/mads/nebular | |
parent | da3d8f746ca9bac36b995621c8b7d3be2068eecf (diff) | |
download | scummvm-rg350-b36b6185bee6c4a33dec43d6eb1e13a8bbfef18b.tar.gz scummvm-rg350-b36b6185bee6c4a33dec43d6eb1e13a8bbfef18b.tar.bz2 scummvm-rg350-b36b6185bee6c4a33dec43d6eb1e13a8bbfef18b.zip |
MADS: Implement Rex Nebular scene 710
Diffstat (limited to 'engines/mads/nebular')
-rw-r--r-- | engines/mads/nebular/nebular_scenes.cpp | 2 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes7.cpp | 43 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes7.h | 12 |
3 files changed, 56 insertions, 1 deletions
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) {} |