diff options
author | Strangerke | 2011-12-22 00:30:49 +0100 |
---|---|---|
committer | Strangerke | 2011-12-22 00:30:49 +0100 |
commit | d49ffde8eae1fd311e4c0f800e9a5bad57381204 (patch) | |
tree | 67cee6b775a9f0294118c0053db37a4df80131c0 /engines/tsage | |
parent | 53929044a66005031658657f5ede8931979f9104 (diff) | |
download | scummvm-rg350-d49ffde8eae1fd311e4c0f800e9a5bad57381204.tar.gz scummvm-rg350-d49ffde8eae1fd311e4c0f800e9a5bad57381204.tar.bz2 scummvm-rg350-d49ffde8eae1fd311e4c0f800e9a5bad57381204.zip |
TSAGE: R2R - Implement scene 3200
Diffstat (limited to 'engines/tsage')
-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 | 14 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_speakers.cpp | 106 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_speakers.h | 25 |
5 files changed, 175 insertions, 0 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index d84e4eb6e0..386d09f6db 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -184,6 +184,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Autopsy room return new Scene3175(); case 3200: + // Cutscene : Guard discussion + return new Scene3200(); case 3210: case 3220: case 3230: diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp index cdb4bee493..c73cb8547e 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp @@ -923,5 +923,33 @@ void Scene3175::signal() { R2_GLOBALS._player.enableControl(); } +/*-------------------------------------------------------------------------- + * Scene 3200 - Cutscene : Guard discussion + * + *--------------------------------------------------------------------------*/ +void Scene3200::postInit(SceneObjectList *OwnerList) { + loadScene(3200); + R2_GLOBALS._v58CE2 = 0; + SceneExt::postInit(); + + _stripManager.addSpeaker(&_rockoSpeaker); + _stripManager.addSpeaker(&_jockoSpeaker); + _stripManager.addSpeaker(&_sockoSpeaker); + + R2_GLOBALS._player.postInit(); + R2_GLOBALS._player.hide(); + R2_GLOBALS._player.disableControl(); + + _actor1.postInit(); + _actor3.postInit(); + _actor2.postInit(); + + setAction(&_sequenceManager, this, 3200 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, &_actor3, NULL); +} + +void Scene3200::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 67c430cdfd..58ba4cc590 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.h +++ b/engines/tsage/ringworld2/ringworld2_scenes3.h @@ -185,6 +185,20 @@ public: virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; + +class Scene3200 : public SceneExt { +public: + SpeakerRocko3200 _rockoSpeaker; + SpeakerJocko3200 _jockoSpeaker; + SpeakerSocko3200 _sockoSpeaker; + SceneActor _actor1; + SceneActor _actor2; + SceneActor _actor3; + 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 3ec1df41d0..b3a15a84d3 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.cpp +++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp @@ -27,6 +27,7 @@ #include "tsage/staticres.h" #include "tsage/ringworld2/ringworld2_scenes0.h" #include "tsage/ringworld2/ringworld2_scenes2.h" +#include "tsage/ringworld2/ringworld2_scenes3.h" namespace TsAGE { @@ -1052,5 +1053,110 @@ SpeakerGuard3100::SpeakerGuard3100() { _numFrames = 0; } +SpeakerRocko3200::SpeakerRocko3200() { + _speakerName = "Rocko"; + _color1 = 5; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerRocko3200::proc15() { + int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)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(4060, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + +SpeakerJocko3200::SpeakerJocko3200() { + _speakerName = "Jocko"; + _color1 = 45; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerJocko3200::proc15() { + int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)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(4060, (_object2->_strip * 2) - 1, 1); + _object1.animate(ANIM_MODE_5, this); + } +} + +SpeakerSocko3200::SpeakerSocko3200() { + _speakerName = "Socko"; + _color1 = 10; + _color2 = 0; + _fieldF6 = 0; + _textWidth = 300; + _hideObjects = false; + _object2 = NULL; + _displayMode = 1; + _numFrames = 0; +} + +void SpeakerSocko3200::proc15() { + int v = _fieldF6; + Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; + + if (!_object2) { + _object2 = &scene->_actor3; + _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(4060, (_object2->_strip * 2) - 1, 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 1d99a54e7c..38a097bc61 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.h +++ b/engines/tsage/ringworld2/ringworld2_speakers.h @@ -268,6 +268,31 @@ public: virtual Common::String getClassName() { return "SpeakerGuard3100"; } }; + +class SpeakerRocko3200 : public VisualSpeaker { +public: + SpeakerRocko3200(); + + virtual Common::String getClassName() { return "SpeakerRocko3200"; } + virtual void proc15(); +}; + +class SpeakerJocko3200 : public VisualSpeaker { +public: + SpeakerJocko3200(); + + virtual Common::String getClassName() { return "SpeakerJocko3200"; } + virtual void proc15(); +}; + +class SpeakerSocko3200 : public VisualSpeaker { +public: + SpeakerSocko3200(); + + virtual Common::String getClassName() { return "SpeakerSocko3200"; } + virtual void proc15(); +}; + } // End of namespace Ringworld2 } // End of namespace TsAGE |