diff options
author | Strangerke | 2011-12-22 16:20:21 +0100 |
---|---|---|
committer | Strangerke | 2011-12-22 18:35:28 +0100 |
commit | e6a671b555500de4f870d73cbd785e40f76d0d33 (patch) | |
tree | e83964b92496f1724376d8fb2438f50583d44ce4 | |
parent | fc671351cf47c50f7cfc21b1f0ea38b81b105f38 (diff) | |
download | scummvm-rg350-e6a671b555500de4f870d73cbd785e40f76d0d33.tar.gz scummvm-rg350-e6a671b555500de4f870d73cbd785e40f76d0d33.tar.bz2 scummvm-rg350-e6a671b555500de4f870d73cbd785e40f76d0d33.zip |
TSAGE: R2R - Implement scene 3240
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes3.cpp | 28 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes3.h | 13 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_speakers.cpp | 70 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_speakers.h | 16 |
5 files changed, 129 insertions, 0 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index 3503765ef5..0f43704fa8 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -196,6 +196,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Cutscene : Guards on duty return new Scene3230(); case 3240: + // Cutscene : Teal monolog + return new Scene3240(); case 3245: case 3250: case 3255: diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp index a07076bcba..326591178d 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp @@ -1028,5 +1028,33 @@ void Scene3230::postInit(SceneObjectList *OwnerList) { void Scene3230::signal() { R2_GLOBALS._sceneManager.changeScene(1200); } + +/*-------------------------------------------------------------------------- + * Scene 3240 - Cutscene : Teal monolog + * + *--------------------------------------------------------------------------*/ +void Scene3240::postInit(SceneObjectList *OwnerList) { + loadScene(3240); + R2_GLOBALS._v58CE2 = 0; + SceneExt::postInit(); + + _stripManager.addSpeaker(&_tealSpeaker); + _stripManager.addSpeaker(&_webbsterSpeaker); + _stripManager.addSpeaker(&_mirandaSpeaker); + + R2_GLOBALS._player.postInit(); + R2_GLOBALS._player.hide(); + R2_GLOBALS._player.disableControl(); + + _actor1.postInit(); + _actor2.postInit(); + + setAction(&_sequenceManager, this, 3240 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, NULL); +} + +void Scene3240::signal() { + R2_GLOBALS._sceneManager.changeScene(1200); +} + } // End of namespace Ringworld2 } // End of namespace TsAGE diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h index 6bff8bc6d8..d652788e14 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.h +++ b/engines/tsage/ringworld2/ringworld2_scenes3.h @@ -236,6 +236,19 @@ public: virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; + +class Scene3240 : public SceneExt { +public: + SpeakerTeal3240 _tealSpeaker; + SpeakerWebbster3240 _webbsterSpeaker; + SpeakerMiranda2500 _mirandaSpeaker; + SceneActor _actor1; + SceneActor _actor2; + SequenceManager _sequenceManager; + + virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void signal(); +}; } // End of namespace Ringworld2 } // End of namespace TsAGE diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp index 4c0494c214..a14d3ea8ae 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.cpp +++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp @@ -1368,5 +1368,75 @@ void SpeakerJocko3230::proc15() { } } +SpeakerTeal3240::SpeakerTeal3240() { + _speakerName = "Teal"; + _color1 = 22; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerTeal3240::proc15() { + int v = _fieldF6; + Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; + + if (!_object2) { + _object2 = &scene->_actor1; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4070, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + +SpeakerWebbster3240::SpeakerWebbster3240() { + _speakerName = "Webbster"; + _color1 = 10; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerWebbster3240::proc15() { + int v = _fieldF6; + Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; + + if (!_object2) { + _object2 = &scene->_actor2; + _object2->hide(); + _object1.postInit(); + _object1.setPosition(_object2->_position); + + if (_object2->_mover) + _object2->addMover(NULL); + } + + if (v == 0) { + _object1.animate(ANIM_MODE_2, NULL); + } else { + ((SceneItem *)_action)->_sceneRegionId = 0; + _object1.setup(4110, 5, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + } // End of namespace Ringworld2 } // End of namespace TsAGE diff --git a/engines/tsage/ringworld2/ringworld2_speakers.h b/engines/tsage/ringworld2/ringworld2_speakers.h index 71933f3ec9..bb49b985dc 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.h +++ b/engines/tsage/ringworld2/ringworld2_speakers.h @@ -340,6 +340,22 @@ public: virtual Common::String getClassName() { return "SpeakerJocko3230"; } virtual void proc15(); }; + +class SpeakerTeal3240 : public VisualSpeaker { +public: + SpeakerTeal3240(); + + virtual Common::String getClassName() { return "SpeakerTeal3240"; } + virtual void proc15(); +}; + +class SpeakerWebbster3240 : public VisualSpeaker { +public: + SpeakerWebbster3240(); + + virtual Common::String getClassName() { return "SpeakerWebbster3240"; } + virtual void proc15(); +}; } // End of namespace Ringworld2 } // End of namespace TsAGE |