From 2dc3111bbefbd1233db08e1d05d5eab90e1e264d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 8 Jan 2012 21:50:32 +0100 Subject: TSAGE: R2R - Implement scene 1525 --- engines/tsage/ringworld2/ringworld2_logic.cpp | 3 ++ engines/tsage/ringworld2/ringworld2_scenes1.cpp | 44 ++++++++++++++++++++++++- engines/tsage/ringworld2/ringworld2_scenes1.h | 8 +++++ 3 files changed, 54 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index ee49c238ee..5eccafefdf 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -107,8 +107,11 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { case 1330: error("Missing scene %d from group 1", sceneNumber); case 1500: + // Cutscene: Ship landing return new Scene1500(); case 1525: + // Cutscene - Ship + return new Scene1525(); case 1530: case 1550: case 1575: diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 17422019b0..1afb1b6509 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -858,7 +858,7 @@ void Scene1100::saveCharacter(int characterIndex) { } /*-------------------------------------------------------------------------- - * Scene 1500 - + * Scene 1500 - Cutscene: Ship landing * *--------------------------------------------------------------------------*/ void Scene1500::postInit(SceneObjectList *OwnerList) { @@ -1015,5 +1015,47 @@ void Scene1500::dispatch() { Scene::dispatch(); } +/*-------------------------------------------------------------------------- + * Scene 1525 - Cutscene - Ship + * + *--------------------------------------------------------------------------*/ +void Scene1525::postInit(SceneObjectList *OwnerList) { + loadScene(1525); + R2_GLOBALS._v58CE2 = 0; + SceneExt::postInit(); + + R2_GLOBALS._player.postInit(); + if (R2_GLOBALS._sceneManager._previousScene == 525) + R2_GLOBALS._player.setup(1525, 1, 1); + else + R2_GLOBALS._player.setup(1525, 1, 16); + R2_GLOBALS._player.setPosition(Common::Point(244, 148)); + R2_GLOBALS._player.disableControl(); + + _sceneMode = 0; + setAction(&_sequenceManager, this, 2, &R2_GLOBALS._player, NULL); +} + +void Scene1525::signal() { + switch (_sceneMode++) { + case 0: + if (R2_GLOBALS._sceneManager._previousScene == 525) + setAction(&_sequenceManager, this, 1525, &R2_GLOBALS._player, NULL); + else + setAction(&_sequenceManager, this, 1526, &R2_GLOBALS._player, NULL); + break; + case 1: + setAction(&_sequenceManager, this, 2, &R2_GLOBALS._player, NULL); + break; + case 2: + if (R2_GLOBALS._sceneManager._previousScene == 1530) + R2_GLOBALS._sceneManager.changeScene(1550); + else + R2_GLOBALS._sceneManager.changeScene(1530); + default: + break; + } +} + } // End of namespace Ringworld2 } // End of namespace TsAGE diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h index a88451e406..4c6d3ba6dc 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.h +++ b/engines/tsage/ringworld2/ringworld2_scenes1.h @@ -130,6 +130,14 @@ public: virtual void signal(); virtual void dispatch(); }; + +class Scene1525 : public SceneExt { +public: + SequenceManager _sequenceManager; + + virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void signal(); +}; } // End of namespace Ringworld2 } // End of namespace TsAGE -- cgit v1.2.3