aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorStrangerke2011-12-22 00:30:49 +0100
committerStrangerke2011-12-22 00:30:49 +0100
commitd49ffde8eae1fd311e4c0f800e9a5bad57381204 (patch)
tree67cee6b775a9f0294118c0053db37a4df80131c0 /engines/tsage
parent53929044a66005031658657f5ede8931979f9104 (diff)
downloadscummvm-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.cpp2
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.cpp28
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.h14
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.cpp106
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.h25
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