aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2014-05-11 23:50:52 +0200
committerStrangerke2014-05-11 23:50:52 +0200
commite21534ecc2d39864d2cb3ba67248ad0dadecf72e (patch)
treeeccde3b2cd884c81a587f8d1573e6e1ff2dfcc61
parent3b098867961e4d34fc93cac989d3bd5f69f71ed8 (diff)
downloadscummvm-rg350-e21534ecc2d39864d2cb3ba67248ad0dadecf72e.tar.gz
scummvm-rg350-e21534ecc2d39864d2cb3ba67248ad0dadecf72e.tar.bz2
scummvm-rg350-e21534ecc2d39864d2cb3ba67248ad0dadecf72e.zip
MADS: Implement scene 607
-rw-r--r--engines/mads/nebular/nebular_scenes.cpp2
-rw-r--r--engines/mads/nebular/nebular_scenes6.cpp435
-rw-r--r--engines/mads/nebular/nebular_scenes6.h27
3 files changed, 462 insertions, 2 deletions
diff --git a/engines/mads/nebular/nebular_scenes.cpp b/engines/mads/nebular/nebular_scenes.cpp
index 511be8e5ca..7c5700ad72 100644
--- a/engines/mads/nebular/nebular_scenes.cpp
+++ b/engines/mads/nebular/nebular_scenes.cpp
@@ -235,7 +235,7 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) {
case 605: // viewport closeup
return new Scene605(vm);
case 607: // outside Abdul's garage
- return new DummyScene(vm); // TODO
+ return new Scene607(vm);
case 608: // inside Abdul's garage
return new DummyScene(vm); // TODO
case 609: // outside Buckluster video store
diff --git a/engines/mads/nebular/nebular_scenes6.cpp b/engines/mads/nebular/nebular_scenes6.cpp
index ebface6e1f..46ef066c97 100644
--- a/engines/mads/nebular/nebular_scenes6.cpp
+++ b/engines/mads/nebular/nebular_scenes6.cpp
@@ -820,7 +820,7 @@ void Scene604::handleBombActions() {
case 1:
_globals._sequenceIndexes[6] = _scene->_sequences.startCycle(_globals._spriteIndexes[6], false, -1);
- _timebombHotspotId = _scene->_dynamicHotspots.add (0x171, VERB_WALKTO, _globals._sequenceIndexes[6], Common::Rect(0, 0, 0, 0));
+ _timebombHotspotId = _scene->_dynamicHotspots.add(0x171, VERB_WALKTO, _globals._sequenceIndexes[6], Common::Rect(0, 0, 0, 0));
_scene->_dynamicHotspots.setPosition(_timebombHotspotId, Common::Point(166, 118), FACING_NORTHEAST);
_game._objects.setRoom(OBJ_TIMEBOMB, _scene->_currentSceneId);
break;
@@ -985,5 +985,438 @@ void Scene605::actions() {
/*------------------------------------------------------------------------*/
+void Scene607::setup() {
+ setPlayerSpritesPrefix();
+ setAAName();
+ _scene->addActiveVocab(0x471);
+ _scene->addActiveVocab(VERB_WALKTO);
+}
+
+void Scene607::enter() {
+ _globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('c', 0));
+ _globals._spriteIndexes[3] = _scene->_sprites.addSprites("*RXCD_3");
+
+ if (!_game._visitedScenes._sceneRevisited && (_scene->_priorSceneId != 608))
+ _globals[kDogStatus] = 1;
+
+ if ((_scene->_priorSceneId == 608) && (_globals[kDogStatus] < 3))
+ _globals[kDogStatus] = 3;
+
+ _animationActive = 0;
+
+ if ((_globals[kDogStatus] == 1) && (_game._difficulty != DIFFICULTY_EASY)) {
+ _globals._spriteIndexes[4] = _scene->_sprites.addSprites(formAnimName('g', 3));
+ _globals._spriteIndexes[5] = _scene->_sprites.addSprites(formAnimName('g', 7));
+ _globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('g', 0));
+
+ _globals._sequenceIndexes[1] = _scene->_sequences.startCycle(_globals._spriteIndexes[1], false, 1);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[1], 6);
+ _dogBarking = false;
+ _dogLoop = false;
+ _shopAvailable = false;
+ _dogEatsRex = false;
+ _dogTimer = 0;
+ } else
+ _scene->_hotspots.activate(0x471, false);
+
+ _globals._sequenceIndexes[2] = _scene->_sequences.startCycle(_globals._spriteIndexes[2], false, -2);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 4);
+
+ if (_scene->_priorSceneId == 608) {
+ _game._player._playerPos = Common::Point(297, 50);
+ _game._player._facing = FACING_SOUTHEAST;
+ } else if (_scene->_priorSceneId != -2) {
+ _game._player._playerPos = Common::Point(40, 104);
+ _game._player._facing = FACING_SOUTHEAST;
+ _game._player._visible = false;
+ _game._player._stepEnabled = false;
+ _scene->_sequences.remove(_globals._sequenceIndexes[2]);
+ _globals._sequenceIndexes[2] = _scene->_sequences.startCycle(_globals._spriteIndexes[2], false, -1);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 4);
+ _scene->loadAnimation(formAnimName('R', 1), 80);
+ } else if (_globals[kDogStatus] == 2) {
+ _globals._spriteIndexes[4] = _scene->_sprites.addSprites(formAnimName('g', 3));
+ _globals._spriteIndexes[5] = _scene->_sprites.addSprites(formAnimName('g', 7));
+ _globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('g', 0));
+ }
+
+ sceneEntrySound();
+
+ if (_scene->_roomChanged)
+ _game._objects.addToInventory(OBJ_BONES);
+
+ _vm->_palette->setEntry(252, 63, 44, 30);
+ _vm->_palette->setEntry(253, 63, 20, 22);
+ _game.loadQuoteSet(0x2F8, 0x2F7, 0x2F6, 0x2F9, 0x2FA, 0);
+}
+
+void Scene607::step() {
+ if (_globals[kDogStatus] == 2) {
+ int32 diff = _scene->_frameStartTime - _lastFrameTime;
+ if ((diff >= 0) && (diff <= 4))
+ _dogTimer += diff;
+ else
+ _dogTimer++;
+
+ _lastFrameTime = _scene->_frameStartTime;
+ }
+
+ if ((_dogTimer >= 480) && !_dogLoop && !_shopAvailable && (_globals[kDogStatus] == 2) && !_game._player._special) {
+ _vm->_sound->command(14);
+ _dogLoop = true;
+ _globals._sequenceIndexes[5] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[5], false, 10, 1, 0, 0);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[5], 1);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[5], SEQUENCE_TRIGGER_EXPIRE, 0, 91);
+ _dogLoop = false;
+ _dogTimer = 0;
+ }
+
+ if (_game._trigger == 91) {
+ _globals._sequenceIndexes[1] = _scene->_sequences.startCycle(_globals._spriteIndexes[1], false, 1);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[1], 6);
+ _dogBarking = false;
+ _globals[kDogStatus] = 1;
+ _scene->_hotspots.activate(0x471, true);
+ }
+
+ if (!_dogEatsRex && (_game._difficulty != DIFFICULTY_EASY) && !_animationActive && (_globals[kDogStatus] == 1)
+ && !_dogBarking && (_vm->getRandomNumber(1, 50) == 10)) {
+ _dogBarking = true;
+ _scene->_sequences.remove(_globals._sequenceIndexes[1]);
+ _globals._sequenceIndexes[1] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[1], false, 5, 8, 0, 0);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[1], 6);
+ _scene->_kernelMessages.reset();
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[1], SEQUENCE_TRIGGER_SPRITE, 2, 100);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[1], SEQUENCE_TRIGGER_EXPIRE, 0, 70);
+ _counter = 0;
+ }
+
+ if ((_game._trigger == 70) && !_dogEatsRex && (_globals[kDogStatus] == 1) && !_animationActive) {
+ int syncIdx = _globals._sequenceIndexes[1];
+ _globals._sequenceIndexes[1] = _scene->_sequences.startCycle(_globals._spriteIndexes[1], false, 1);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[1], 6);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[1], syncIdx);
+ _scene->_kernelMessages.reset();
+ _dogBarking = false;
+ }
+
+ if (_game._trigger == 100) {
+ _counter++;
+ _vm->_sound->command(12);
+
+ if ((_counter >= 1) && (_counter <= 4)) {
+ Common::Point pos(0, 0);
+ switch (_counter) {
+ case 1:
+ pos = Common::Point(237, 5);
+ break;
+
+ case 2:
+ pos = Common::Point(270, 15);
+ break;
+
+ case 3:
+ pos = Common::Point(237, 25);
+ break;
+
+ case 4:
+ pos = Common::Point(270, 36);
+ break;
+
+ default:
+ break;
+ }
+ _scene->_kernelMessages.add(pos, 0xFDFC, 0, 0, 120, _game.getQuote(0x2F9));
+ }
+ }
+
+ if (_game._player._moving && (_game._difficulty != DIFFICULTY_EASY) && !_shopAvailable && (_globals[kDogStatus] == 1) && (_scene->_rails.getNext() > 0)) {
+ _game._player.cancelCommand();
+ _game._player.startWalking(Common::Point(268, 72), FACING_NORTHEAST);
+ _scene->_rails.resetNext();
+ }
+
+ if ((_game._player._special > 0) && (_game._difficulty != DIFFICULTY_EASY) && (_globals[kDogStatus] == 1) && _game._player._stepEnabled)
+ _game._player._stepEnabled = false;
+
+ if ((_game._difficulty != DIFFICULTY_EASY) && (_globals[kDogStatus] == 1) && (_game._player._playerPos == Common::Point(268, 72))
+ && (_game._trigger || !_dogEatsRex)) {
+ _dogEatsRex = true;
+ switch (_game._trigger) {
+ case 91:
+ case 0:
+ _animationActive = 1;
+ _game._player._visible = false;
+ _scene->_sequences.remove(_globals._sequenceIndexes[1]);
+ _globals._sequenceIndexes[4] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[4], false, 10, 1, 0, 0);
+ _scene->_sequences.setAnimRange(_globals._sequenceIndexes[4], -1, 7);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[4], 1);
+ _scene->_kernelMessages.reset();
+ _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 0, 120, _game.getQuote(0x2FA));
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[4], SEQUENCE_TRIGGER_EXPIRE, 0, 60);
+ _scene->_sequences.addTimer(10, 64);
+ break;
+
+ case 60: {
+ int syncIdx = _globals._sequenceIndexes[4];
+ _globals._sequenceIndexes[4] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[4], false, 5, 1, 0, 0);
+ _scene->_sequences.setAnimRange(_globals._sequenceIndexes[4], 8, 45);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[4], 1);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[4], syncIdx);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[4], SEQUENCE_TRIGGER_EXPIRE, 0, 61);
+ }
+ break;
+
+ case 61: {
+ int syncIdx = _globals._sequenceIndexes[4];
+ _globals._sequenceIndexes[4] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[4], false, 15, 3, 0, 0);
+ _scene->_sequences.setAnimRange(_globals._sequenceIndexes[4], 46, -2);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[4], 1);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[4], syncIdx);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[4], SEQUENCE_TRIGGER_EXPIRE, 0, 62);
+ }
+ break;
+
+ case 62: {
+ int syncIdx = _globals._sequenceIndexes[4];
+ _animationActive = 2;
+ _globals._sequenceIndexes[4] = _scene->_sequences.startCycle(_globals._spriteIndexes[4], false, -2);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[4], 1);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[4], syncIdx);
+ _scene->_sequences.addTimer(60, 63);
+ }
+ break;
+
+ case 63:
+ _vm->_dialogs->show(60729);
+ _animationActive = 0;
+ _dogEatsRex = false;
+ _scene->_reloadSceneFlag = true;
+ _game._player._stepEnabled = true;
+ break;
+
+ case 64:
+ if (_dogEatsRex && (_animationActive == 1)) {
+ _vm->_sound->command(12);
+ _scene->_sequences.addTimer(10, 64);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ switch (_game._trigger) {
+ case 80:
+ _game._player._visible = true;
+ _game._player._priorTimer = _scene->_activeAnimation->getNextFrameTimer() - _game._player._ticksAmount;
+ _scene->_sequences.addTimer(6, 81);
+ break;
+
+ case 81:
+ _scene->_sequences.remove(_globals._sequenceIndexes[2]);
+ _globals._sequenceIndexes[2] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[2], false, 6, 1, 0, 0);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 4);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[2], SEQUENCE_TRIGGER_EXPIRE, 0, 82);
+ break;
+
+ case 82:
+ _globals._sequenceIndexes[2] = _scene->_sequences.startCycle(_globals._spriteIndexes[2], false, -2);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 4);
+ _game._player._stepEnabled = true;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Scene607::handleThrowingBone() {
+ _animationActive = -1;
+ switch (_game._trigger) {
+ case 0:
+ _game._player._stepEnabled = false;
+ _scene->_sequences.remove(_globals._sequenceIndexes[1]);
+ _game._player._visible = false;
+ _scene->loadAnimation(formAnimName('D', _animationMode), 1);
+ break;
+
+ case 1:
+ _game._player._visible = true;
+ _game._player._priorTimer = _scene->_activeAnimation->getNextFrameTimer() - _game._player._ticksAmount;
+
+ if (_animationMode != 1)
+ _scene->_hotspots.activate(0x471, false);
+ else {
+ _globals._sequenceIndexes[1] = _scene->_sequences.startCycle(_globals._spriteIndexes[1], false, 1);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[1], 6);
+ }
+
+ _dogBarking = false;
+ if (_game._objects.isInInventory(OBJ_BONE)) {
+ _game._objects.setRoom(OBJ_BONE, NOWHERE);
+ if (_animationMode == 1)
+ _globals[kBone202Status] = 0;
+ } else {
+ _game._objects.setRoom(OBJ_BONES, NOWHERE);
+ _game._objects.addToInventory(OBJ_BONE);
+ }
+
+ _scene->_sequences.addTimer(60, 2);
+ break;
+
+ case 2: {
+ int quoteId = 0x2F8;
+ if (_animationMode == 1)
+ quoteId = 0x2F7;
+
+ if (_animationMode == 2) {
+ _globals[kDogStatus] = 2;
+ _dogTimer = 0;
+ }
+
+ _scene->_kernelMessages.reset();
+ _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 0, 120, _game.getQuote(quoteId));
+ _scene->_sequences.addTimer(60, 3);
+ }
+ break;
+
+ case 3:
+ _game._player._stepEnabled = true;
+ _animationActive = 0;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Scene607::preActions() {
+ if (_action.isAction(VERB_TALKTO, 0x471))
+ _game._player._needToWalk = false;
+
+ if (_action.isAction(0x18B, 0x478) && (_globals[kDogStatus] == 2) && (_game._difficulty != DIFFICULTY_EASY)) {
+ _shopAvailable = true;
+ _dogTimer = 0;
+ }
+
+ if (_action.isAction(VERB_THROW, 0x2D, 0x471) || _action.isAction(VERB_THROW, 0x2C, 0x471))
+ _game._player.walk(Common::Point(193, 100), FACING_NORTHEAST);
+
+ if (_action.isAction(VERB_THROW, 0x2D, 0x2C3) || _action.isAction(VERB_THROW, 0x2C, 0x2C3))
+ _game._player.walk(Common::Point(201, 107), FACING_SOUTHEAST);
+}
+
+void Scene607::actions() {
+ if (_action.isAction(0x18B, 0x478))
+ _scene->_nextSceneId = 608;
+ else if (_action.isAction(0x325, 0x324)) {
+ switch (_game._trigger) {
+ case 0:
+ _game._player._stepEnabled = false;
+ _scene->_sequences.remove(_globals._sequenceIndexes[2]);
+ _globals._sequenceIndexes[2] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[2], false, 6, 1, 0, 0);
+ _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 4);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[2], SEQUENCE_TRIGGER_EXPIRE, 0, 1);
+ break;
+
+ case 1: {
+ int syncIdx = _globals._sequenceIndexes[2];
+ _globals._sequenceIndexes[2] = _scene->_sequences.startCycle(_globals._spriteIndexes[2], false, -1);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[2], syncIdx);
+ _scene->_sequences.addTimer(6, 2);
+ }
+ break;
+
+ case 2:
+ _game._player._visible = false;
+ _globals._sequenceIndexes[3] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[3], false, 10, 1, 0, 0);
+ _scene->_sequences.setMsgLayout(_globals._sequenceIndexes[3]);
+ _scene->_sequences.addSubEntry(_globals._sequenceIndexes[3], SEQUENCE_TRIGGER_EXPIRE, 0, 3);
+ break;
+
+ case 3: {
+ int syncIdx = _globals._sequenceIndexes[3];
+ _globals._sequenceIndexes[3] = _scene->_sequences.startCycle(_globals._spriteIndexes[3], false, -2);
+ _scene->_sequences.setMsgLayout(_globals._sequenceIndexes[3]);
+ _scene->_sequences.updateTimeout(_globals._sequenceIndexes[3], syncIdx);
+ _scene->_nextSceneId = 504;
+ }
+ break;
+
+ default:
+ break;
+ }
+ } else if (_action.isAction(VERB_THROW, 0x2D, 0x471) || _action.isAction(VERB_THROW, 0x2C, 0x471)) {
+ if (_game._difficulty != DIFFICULTY_EASY) {
+ _animationMode = 1;
+ _scene->_kernelMessages.reset();
+ if (_game._trigger == 0)
+ _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 0, 120, _game.getQuote(0x2F6));
+
+ handleThrowingBone();
+ }
+ } else if ((_action.isAction(VERB_THROW, 0x2D, 0x2C3) || _action.isAction(VERB_THROW, 0x2C, 0x2C3)) && (_game._difficulty != DIFFICULTY_EASY)
+ && ((_globals[kDogStatus] == 1) || _game._trigger)) {
+ _animationMode = 2;
+ if (_game._trigger == 0) {
+ _scene->_kernelMessages.reset();
+ _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 0, 120, _game.getQuote(0x2F6));
+ }
+ handleThrowingBone();
+ } else if (_action._lookFlag || _action.isAction(VERB_LOOK, 0x31E)) {
+ if ((_globals[kDogStatus] == 1) || (_game._difficulty == DIFFICULTY_EASY))
+ _vm->_dialogs->show(60710);
+ else
+ _vm->_dialogs->show(60711);
+ } else if (_action.isAction(VERB_LOOK, 0x18D))
+ _vm->_dialogs->show(60712);
+ else if (_action.isAction(VERB_LOOK, 0x2C3))
+ _vm->_dialogs->show(60713);
+ else if (_action.isAction(VERB_LOOK, 0x324))
+ _vm->_dialogs->show(60714);
+ else if (_action.isAction(VERB_LOOK, 0x3FB))
+ _vm->_dialogs->show(60715);
+ else if (_action.isAction(VERB_LOOK, 0x1E6) && (_globals[kDogStatus] == 1))
+ _vm->_dialogs->show(60716);
+ else if (_action.isAction(VERB_LOOK, 0x244))
+ _vm->_dialogs->show(60717);
+ else if (_action.isAction(VERB_LOOK, 0x3FD))
+ _vm->_dialogs->show(60718);
+ else if (_action.isAction(VERB_LOOK, 0x3FF))
+ _vm->_dialogs->show(60719);
+ else if (_action.isAction(VERB_LOOK, 0x31D))
+ _vm->_dialogs->show(60720);
+ else if (_action.isAction(VERB_LOOK, 0x3F9))
+ _vm->_dialogs->show(60721);
+ else if (_action.isAction(VERB_LOOK, 0x3FA)) {
+ if (_globals[kDogStatus] == 1)
+ _vm->_dialogs->show(60723);
+ else
+ _vm->_dialogs->show(60722);
+ } else if (_action.isAction(VERB_LOOK, 0x478)) {
+ if (_globals[kDogStatus] == 1)
+ _vm->_dialogs->show(60725);
+ else
+ _vm->_dialogs->show(60724);
+ } else if (_action.isAction(VERB_LOOK, 0x471))
+ _vm->_dialogs->show(60726);
+ else if (_action.isAction(VERB_TALKTO, 0x471))
+ _vm->_dialogs->show(60727);
+ else if (_action.isAction(VERB_LOOK, 0x31F))
+ _vm->_dialogs->show(60728);
+ else if (_action.isAction(0x1AD, 0x31E))
+ _vm->_dialogs->show(60730);
+ else if (_action.isAction(0x3FF) && (_action.isAction(VERB_OPEN) || _action.isAction(VERB_PUSH) || _action.isAction(VERB_PULL)))
+ _vm->_dialogs->show(60731);
+ else
+ return;
+
+ _action._inProgress = false;
+}
+
+/*------------------------------------------------------------------------*/
+
} // End of namespace Nebular
} // End of namespace MADS
diff --git a/engines/mads/nebular/nebular_scenes6.h b/engines/mads/nebular/nebular_scenes6.h
index 9347b40092..0f7e7763ff 100644
--- a/engines/mads/nebular/nebular_scenes6.h
+++ b/engines/mads/nebular/nebular_scenes6.h
@@ -133,6 +133,33 @@ public:
virtual void actions();
virtual void postActions() {};
};
+
+class Scene607: public Scene6xx{
+private:
+ uint32 _dogTimer;
+ uint32 _lastFrameTime;
+
+ bool _dogLoop;
+ bool _dogEatsRex;
+ bool _dogBarking;
+ bool _shopAvailable;
+
+ int _animationMode;
+ int _animationActive;
+ int _counter;
+
+ void handleThrowingBone();
+
+public:
+ Scene607(MADSEngine *vm) : Scene6xx(vm) {}
+
+ virtual void setup();
+ virtual void enter();
+ virtual void step();
+ virtual void preActions();
+ virtual void actions();
+ virtual void postActions() {};
+};
} // End of namespace Nebular
} // End of namespace MADS