aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorStrangerke2011-12-22 07:44:58 +0100
committerStrangerke2011-12-22 07:44:58 +0100
commit877b6e9b1d5ca0cb47e1845c57cc7340b924a5eb (patch)
treedaf0c41bc9a22059d7e7977932a967173fb639fb /engines/tsage
parentc40df9a6edc320ad2f3c8187e4b0c2d1eb9c6aa8 (diff)
downloadscummvm-rg350-877b6e9b1d5ca0cb47e1845c57cc7340b924a5eb.tar.gz
scummvm-rg350-877b6e9b1d5ca0cb47e1845c57cc7340b924a5eb.tar.bz2
scummvm-rg350-877b6e9b1d5ca0cb47e1845c57cc7340b924a5eb.zip
TSAGE: R2R - Implement scene 3210
Diffstat (limited to 'engines/tsage')
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp4
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.cpp27
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.h12
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.cpp70
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.h16
5 files changed, 127 insertions, 2 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 386d09f6db..0844a48ed8 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -184,9 +184,11 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
// Autopsy room
return new Scene3175();
case 3200:
- // Cutscene : Guard discussion
+ // Cutscene : Cutscene : Rocko & co - Discussion
return new Scene3200();
case 3210:
+ // Cutscene : Captain and Private - Discussion
+ return new Scene3210();
case 3220:
case 3230:
case 3240:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index c73cb8547e..8ea83a2527 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -924,7 +924,7 @@ void Scene3175::signal() {
}
/*--------------------------------------------------------------------------
- * Scene 3200 - Cutscene : Guard discussion
+ * Scene 3200 - Cutscene : Rocko & co - Discussion
*
*--------------------------------------------------------------------------*/
void Scene3200::postInit(SceneObjectList *OwnerList) {
@@ -951,5 +951,30 @@ void Scene3200::signal() {
R2_GLOBALS._sceneManager.changeScene(1200);
}
+/*--------------------------------------------------------------------------
+ * Scene 3210 - Cutscene : Captain and Private - Discussion
+ *
+ *--------------------------------------------------------------------------*/
+void Scene3210::postInit(SceneObjectList *OwnerList) {
+ loadScene(3210);
+ R2_GLOBALS._v58CE2 = 0;
+ SceneExt::postInit();
+
+ _stripManager.addSpeaker(&_privateSpeaker);
+ _stripManager.addSpeaker(&_captainSpeaker);
+
+ R2_GLOBALS._player.postInit();
+ R2_GLOBALS._player.hide();
+ R2_GLOBALS._player.disableControl();
+
+ _actor1.postInit();
+ _actor2.postInit();
+
+ setAction(&_sequenceManager, this, 3210 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, NULL);
+}
+
+void Scene3210::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 58ba4cc590..fbb6392be4 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -199,6 +199,18 @@ public:
virtual void postInit(SceneObjectList *OwnerList = NULL);
virtual void signal();
};
+
+class Scene3210 : public SceneExt {
+public:
+ SpeakerCaptain3210 _captainSpeaker;
+ SpeakerPrivate3210 _privateSpeaker;
+ 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 b3a15a84d3..80ac04c403 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.cpp
+++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp
@@ -1158,5 +1158,75 @@ void SpeakerSocko3200::proc15() {
}
}
+SpeakerCaptain3210::SpeakerCaptain3210() {
+ _speakerName = "Captain";
+ _color1 = 5;
+ _color2 = 0;
+ _fieldF6 = 0;
+ _textWidth = 300;
+ _hideObjects = false;
+ _object2 = NULL;
+ _displayMode = 1;
+ _numFrames = 0;
+}
+
+void SpeakerCaptain3210::proc15() {
+ int v = _fieldF6;
+ Scene3210 *scene = (Scene3210 *)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);
+ }
+}
+
+SpeakerPrivate3210::SpeakerPrivate3210() {
+ _speakerName = "Private";
+ _color1 = 45;
+ _color2 = 0;
+ _fieldF6 = 0;
+ _textWidth = 300;
+ _hideObjects = false;
+ _object2 = NULL;
+ _displayMode = 1;
+ _numFrames = 0;
+}
+
+void SpeakerPrivate3210::proc15() {
+ int v = _fieldF6;
+ Scene3210 *scene = (Scene3210 *)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);
+ }
+}
+
} // 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 38a097bc61..66edd67276 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.h
+++ b/engines/tsage/ringworld2/ringworld2_speakers.h
@@ -293,6 +293,22 @@ public:
virtual void proc15();
};
+class SpeakerCaptain3210 : public VisualSpeaker {
+public:
+ SpeakerCaptain3210();
+
+ virtual Common::String getClassName() { return "SpeakerCaptain3210"; }
+ virtual void proc15();
+};
+
+class SpeakerPrivate3210 : public VisualSpeaker {
+public:
+ SpeakerPrivate3210();
+
+ virtual Common::String getClassName() { return "SpeakerPrivate3210"; }
+ virtual void proc15();
+};
+
} // End of namespace Ringworld2
} // End of namespace TsAGE