aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2011-02-27 21:42:19 +1100
committerPaul Gilbert2011-02-27 21:42:19 +1100
commitb702cd0fdf2b7e39825be6bad9a548529af5d760 (patch)
tree2a259aeae1f6ce9274f483f93f59365a52520c25 /engines
parent685c47f63f115d561bd16a5f2edb4b18c3ddf68d (diff)
downloadscummvm-rg350-b702cd0fdf2b7e39825be6bad9a548529af5d760.tar.gz
scummvm-rg350-b702cd0fdf2b7e39825be6bad9a548529af5d760.tar.bz2
scummvm-rg350-b702cd0fdf2b7e39825be6bad9a548529af5d760.zip
TSAGE: Implemented Scene #1500 - Ringworld Space-port
Diffstat (limited to 'engines')
-rw-r--r--engines/tsage/ringworld_logic.cpp5
-rw-r--r--engines/tsage/ringworld_scenes2.cpp140
-rw-r--r--engines/tsage/ringworld_scenes2.h22
3 files changed, 165 insertions, 2 deletions
diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp
index bcaf2dc1b7..ab81b7fd25 100644
--- a/engines/tsage/ringworld_logic.cpp
+++ b/engines/tsage/ringworld_logic.cpp
@@ -61,9 +61,10 @@ Scene *SceneFactory::createScene(int sceneNumber) {
case 1000: return new Scene1000();
// Fleeing planet cutscene
case 1001: return new Scene1001();
- //
+ // Unused
case 1250: return new Scene1250();
-
+ // Ringworld Space-port
+ case 1500: return new Scene1500();
default:
error("Unknown scene number - %d", sceneNumber);
diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp
index 441f879e39..e52331e775 100644
--- a/engines/tsage/ringworld_scenes2.cpp
+++ b/engines/tsage/ringworld_scenes2.cpp
@@ -654,6 +654,146 @@ void Scene1250::postInit(SceneObjectList *OwnerList) {
}
}
+/*--------------------------------------------------------------------------
+ * Scene 1500 - Ringworld Space-port
+ *
+ *--------------------------------------------------------------------------*/
+void Scene1500::Action1::signal() {
+ Scene1500 *scene = (Scene1500 *)_globals->_sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0: {
+ scene->_object1.postInit();
+ scene->_object1.setVisage(1501);
+ scene->_object1._moveDiff = Common::Point(2, 1);
+ scene->_object1.setPosition(Common::Point(204, 85));
+ scene->_object1.animate(ANIM_MODE_2, NULL);
+ scene->_object1._numFrames = 3;
+ scene->_object1.changeZoom(-1);
+
+ Common::Point pt(238, 121);
+ PlayerMover *mover = new PlayerMover();
+ scene->_object1.addMover(mover, &pt, this);
+ break;
+ }
+ case 1: {
+ Common::Point pt(312, 145);
+ PlayerMover *mover = new PlayerMover();
+ scene->_object1.addMover(mover, &pt, this);
+ break;
+ }
+ case 2: {
+ scene->_object1.setStrip(2);
+ scene->_object1.setFrame(1);
+ scene->_object1._moveDiff.y = 2;
+ scene->_object1._numFrames = 5;
+
+ Common::Point pt(310, 150);
+ PlayerMover *mover = new PlayerMover();
+ scene->_object1.addMover(mover, &pt, this);
+ break;
+ }
+ case 3: {
+ Common::Point pt(304, 165);
+ PlayerMover *mover = new PlayerMover();
+ scene->_object1.addMover(mover, &pt, this);
+ break;
+ }
+ case 4: {
+ scene->_object1._numFrames = 3;
+ scene->_object1.setStrip2(3);
+ scene->_object1.animate(ANIM_MODE_2, this);
+
+ Common::Point pt(94, 175);
+ PlayerMover *mover = new PlayerMover();
+ scene->_object1.addMover(mover, &pt, this);
+ break;
+ }
+ case 5:
+ setDelay(30);
+ break;
+ case 6:
+ scene->_soundHandler.startSound(123);
+ scene->_object1.setStrip2(4);
+ scene->_object1.setFrame(1);
+ scene->_object1.animate(ANIM_MODE_5, this);
+ break;
+ case 7:
+ scene->_object1.setStrip2(5);
+ scene->_object1.animate(ANIM_MODE_2, NULL);
+ scene->_soundHandler.startSound(124, this);
+ break;
+ case 8:
+ _globals->_soundHandler.startSound(126, this);
+ break;
+ case 9:
+ _globals->_soundHandler.startSound(127);
+ _globals->_sceneManager.changeScene(2000);
+ break;
+ }
+}
+
+void Scene1500::Action2::signal() {
+ Scene1500 *scene = (Scene1500 *)_globals->_sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(6);
+ break;
+ case 1: {
+ scene->_object2.postInit();
+ scene->_object2.setVisage(1502);
+ scene->_object2.setPriority2(255);
+ scene->_object2.changeZoom(5);
+ scene->_object2._frame = 1;
+ scene->_object2._moveDiff = Common::Point(1, 1);
+ scene->_object2.setPosition(Common::Point(104, 184));
+ scene->_object2.animate(ANIM_MODE_2, NULL);
+
+ Common::Point pt(118, 147);
+ NpcMover *mover = new NpcMover();
+ scene->_object2.addMover(mover, &pt, this);
+ break;
+ }
+ case 2: {
+ scene->_object2._moveDiff.x = 5;
+ scene->_object2.changeZoom(-1);
+ Common::Point pt(-55, 200);
+ NpcMover *mover = new NpcMover();
+ scene->_object2.addMover(mover, &pt, this);
+ break;
+ }
+ case 3:
+ scene->_soundHandler.proc4();
+ _globals->_stripNum = 1505;
+ _globals->_sceneManager.changeScene(1505);
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene1500::postInit(SceneObjectList *OwnerList) {
+ loadScene(1500);
+ Scene::postInit();
+
+ if ((_globals->_stripNum == 1500) || ((_globals->_stripNum != 1504) && (_globals->_stripNum != 2751))) {
+ _globals->_soundHandler.startSound(120);
+ setZoomPercents(105, 20, 145, 100);
+
+ setAction(&_action1);
+ } else {
+ setZoomPercents(150, 5, 200, 100);
+
+ _object1.postInit();
+ _object1.setVisage(1501);
+ _object1.setStrip2(5);
+ _object1.setPosition(Common::Point(94, 175));
+ _object1.animate(ANIM_MODE_2, NULL);
+
+ setAction(&_action2);
+ }
+}
} // End of namespace tSage
diff --git a/engines/tsage/ringworld_scenes2.h b/engines/tsage/ringworld_scenes2.h
index b5f368f015..52b4a290fb 100644
--- a/engines/tsage/ringworld_scenes2.h
+++ b/engines/tsage/ringworld_scenes2.h
@@ -110,6 +110,28 @@ public:
virtual void postInit(SceneObjectList *OwnerList = NULL);
};
+class Scene1500: public Scene {
+public:
+ /* Actions */
+ class Action1: public Action {
+ public:
+ virtual void signal();
+ };
+ class Action2: public Action {
+ public:
+ virtual void signal();
+ };
+public:
+ SoundHandler _soundHandler;
+ Action1 _action1;
+ Action2 _action2;
+ SceneObject _object1, _object2, _object3;
+
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+};
+
+
+
} // End of namespace tSage
#endif