aboutsummaryrefslogtreecommitdiff
path: root/engines/mads
diff options
context:
space:
mode:
authorStrangerke2014-05-04 21:46:36 +0200
committerStrangerke2014-05-04 21:46:36 +0200
commitbc774144aaa170e20dc9e328eff47f719ba05214 (patch)
tree7d9dd27e2b0d7d203e5ca2f51b4c00dda1d13a24 /engines/mads
parent36a1b66c71543749cdf9276bb18f2e85b98a46e9 (diff)
downloadscummvm-rg350-bc774144aaa170e20dc9e328eff47f719ba05214.tar.gz
scummvm-rg350-bc774144aaa170e20dc9e328eff47f719ba05214.tar.bz2
scummvm-rg350-bc774144aaa170e20dc9e328eff47f719ba05214.zip
MADS: Implement scene 213
Diffstat (limited to 'engines/mads')
-rw-r--r--engines/mads/nebular/nebular_scenes.cpp3
-rw-r--r--engines/mads/nebular/nebular_scenes2.cpp60
-rw-r--r--engines/mads/nebular/nebular_scenes2.h11
3 files changed, 73 insertions, 1 deletions
diff --git a/engines/mads/nebular/nebular_scenes.cpp b/engines/mads/nebular/nebular_scenes.cpp
index da568ce1f7..795477d5e5 100644
--- a/engines/mads/nebular/nebular_scenes.cpp
+++ b/engines/mads/nebular/nebular_scenes.cpp
@@ -95,7 +95,8 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) {
return new Scene211(vm);
case 212:
return new Scene212(vm);
-
+ case 213:
+ return new Scene213(vm);
case 214:
return new Scene214(vm);
case 215:
diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp
index 44fac5a4df..9b36dbb156 100644
--- a/engines/mads/nebular/nebular_scenes2.cpp
+++ b/engines/mads/nebular/nebular_scenes2.cpp
@@ -4588,6 +4588,66 @@ void Scene212::actions() {
/*------------------------------------------------------------------------*/
+void Scene213::setup() {
+ _game._player._spritesPrefix = "";
+
+ // The original is calling Scene2xx::setAAName()
+ _game._aaName = Resources::formatAAName(2);
+}
+
+void Scene213::enter() {
+ if (_globals[kMeteorologistWatch] != 0)
+ _handSpriteId = _scene->_sprites.addSprites("*METHAND", false);
+ else if (_globals[kSexOfRex] == REX_MALE)
+ _handSpriteId = _scene->_sprites.addSprites("*REXHAND", false);
+ else
+ _handSpriteId = _scene->_sprites.addSprites("*ROXHAND", false);
+
+ teleporterEnter();
+
+ // The original is calling Scene2xx::sceneEntrySound()
+ if (_vm->_musicFlag) {
+ if (_globals[kMeteorologistWatch] == 0)
+ _vm->_sound->command(1);
+ else
+ _vm->_sound->command(9);
+ } else
+ _vm->_sound->command(2);
+}
+
+void Scene213::step() {
+ teleporterStep();
+}
+
+void Scene213::actions() {
+ if (teleporterActions()) {
+ _action._inProgress = false;
+ return;
+ }
+
+ if (_action.isAction(VERB_LOOK, 0x59))
+ _vm->_dialogs->show(21301);
+ else if (_action.isAction(VERB_LOOK, 0xC4) || _action.isAction (0xB7, 0xC4))
+ _vm->_dialogs->show(21302);
+ else if (_action.isAction(VERB_LOOK, 0x1CC))
+ _vm->_dialogs->show(21303);
+ else if (_action.isAction(VERB_LOOK, 0x181) || _action.isAction(0x103, 0x181))
+ _vm->_dialogs->show(21304);
+ else if (_action.isAction(VERB_LOOK, 0x1CF))
+ _vm->_dialogs->show(21305);
+ else if (_action.isAction(VERB_LOOK, 0x1D0) || _action.isAction(VERB_LOOK, 0x1D1)
+ || _action.isAction(VERB_LOOK, 0x1D2) || _action.isAction(VERB_LOOK, 0x1D3)
+ || _action.isAction(VERB_LOOK, 0x1D4) || _action.isAction(VERB_LOOK, 0x1D5)
+ || _action.isAction(VERB_LOOK, 0x1D6) || _action.isAction(VERB_LOOK, 0x1D7)
+ || _action.isAction(VERB_LOOK, 0x1D8) || _action.isAction(VERB_LOOK, 0x1D9)
+ || _action.isAction(VERB_LOOK, 0x1DB) || _action.isAction(VERB_LOOK, 0x7A)
+ || _action.isAction(VERB_LOOK, 0x1DA))
+ _vm->_dialogs->show(21306);
+ else
+ return;
+
+ _action._inProgress = false;
+}
/*------------------------------------------------------------------------*/
diff --git a/engines/mads/nebular/nebular_scenes2.h b/engines/mads/nebular/nebular_scenes2.h
index 886f7cf4ed..2f3512a61e 100644
--- a/engines/mads/nebular/nebular_scenes2.h
+++ b/engines/mads/nebular/nebular_scenes2.h
@@ -257,6 +257,17 @@ public:
virtual void actions();
};
+class Scene213: public SceneTeleporter {
+public:
+ Scene213(MADSEngine *vm) : SceneTeleporter(vm) {}
+
+ virtual void setup();
+ virtual void enter();
+ virtual void step();
+ virtual void preActions() {};
+ virtual void actions();
+};
+
class Scene214: public Scene2xx {
private:
uint32 _devilTime;