aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp2
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes2.cpp41
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes2.h12
3 files changed, 55 insertions, 0 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index ef1cb76c91..b93e9c202a 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -147,6 +147,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
// Maze: Tannery
return new Scene2535();
case 2600:
+ // Maze: Exit
+ return new Scene2600();
case 2700:
case 2750:
case 2800:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.cpp b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
index d820784c45..b2e7b46420 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
@@ -2983,5 +2983,46 @@ void Scene2535::signal() {
}
}
+/*--------------------------------------------------------------------------
+ * Scene 2600 - Maze: Exit
+ *
+ *--------------------------------------------------------------------------*/
+Scene2600::Scene2600(): SceneExt() {
+ _rotation = NULL;
+}
+
+void Scene2600::synchronize(Serializer &s) {
+ SceneExt::synchronize(s);
+
+ SYNC_POINTER(_rotation);
+}
+
+void Scene2600::postInit(SceneObjectList *OwnerList) {
+ loadScene(2600);
+ R2_GLOBALS._v58CE2 = 0;
+ SceneExt::postInit();
+ R2_GLOBALS._sound1.fadeSound(214);
+ R2_GLOBALS._sound2.play(215);
+ _rotation = R2_GLOBALS._scenePalette.addRotation(176, 191, 1);
+ _rotation->setDelay(3);
+ _rotation->_countdown = 1;
+ R2_GLOBALS._player.postInit();
+ R2_GLOBALS._player.disableControl();
+ _sceneMode = 2600;
+ R2_GLOBALS._player.setAction(&_sequenceManager, this, 2600, &R2_GLOBALS._player, NULL);
+}
+
+void Scene2600::remove() {
+ R2_GLOBALS._sound1.fadeOut2(NULL);
+ R2_GLOBALS._sound2.fadeOut2(NULL);
+// _rotation->remove();
+ SceneExt::remove();
+}
+
+void Scene2600::signal() {
+ if (_sceneMode == 2600)
+ g_globals->_sceneManager.changeScene(3800);
+}
+
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.h b/engines/tsage/ringworld2/ringworld2_scenes2.h
index e655d1e8a8..8684078860 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.h
@@ -478,6 +478,18 @@ public:
virtual void signal();
};
+class Scene2600 : public SceneExt {
+public:
+ SequenceManager _sequenceManager;
+ PaletteRotation *_rotation;
+
+ Scene2600();
+ virtual void synchronize(Serializer &s);
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void remove();
+ virtual void signal();
+};
+
} // End of namespace Ringworld2
} // End of namespace TsAGE