aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2012-01-03 15:39:16 +0100
committerStrangerke2012-01-03 15:39:16 +0100
commit44b3120b81526f214818c4cdbed83a7260a1d60b (patch)
tree795d942136d4f0c081bc281611aa3caa95bb709a
parent79328a393f9f42b006ab46b7da4a2919e710b539 (diff)
downloadscummvm-rg350-44b3120b81526f214818c4cdbed83a7260a1d60b.tar.gz
scummvm-rg350-44b3120b81526f214818c4cdbed83a7260a1d60b.tar.bz2
scummvm-rg350-44b3120b81526f214818c4cdbed83a7260a1d60b.zip
TSAGE: R2R - Add missing custom VisualSpeaker in scene 3600
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.h2
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.cpp61
-rw-r--r--engines/tsage/ringworld2/ringworld2_speakers.h10
3 files changed, 72 insertions, 1 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index cd8ebc87e4..163008739f 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -600,7 +600,7 @@ public:
SpeakerSeeker3600 _seekerSpeaker;
SpeakerMiranda3600 _mirandaSpeaker;
SpeakerTeal3600 _tealSpeaker;
- VisualSpeaker _protectorSpeaker;
+ SpeakerProtector3600 _protectorSpeaker;
NamedHotspot _item1;
NamedHotspot _item2;
NamedHotspot _item3;
diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp
index b6fed884ca..26ed818819 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.cpp
+++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp
@@ -923,6 +923,67 @@ void SpeakerPrivate3210::proc15() {
}
//----------------------------------------------------------------------------
+// Classes related to PROTECTOR
+//----------------------------------------------------------------------------
+
+SpeakerProtector3600::SpeakerProtector3600() {
+ _speakerName = "Protector";
+ _color1 = 170;
+ _color2 = 0;
+ _fieldF6 = 0;
+ _textWidth = 300;
+ _hideObjects = false;
+ _object2 = NULL;
+ _displayMode = 7;
+ _numFrames = 0;
+}
+
+void SpeakerProtector3600::proc15() {
+ int v = _fieldF6;
+ Scene3600 *scene = (Scene3600 *)R2_GLOBALS._sceneManager._scene;
+
+ if (!_object2) {
+ _object2 = &scene->_actor13;
+ _object2->hide();
+ _object1.postInit();
+ _object1.setPosition(_object2->_position);
+ _object1._numFrames = 7;
+ _object1._effect = 1;
+ _object1.changeZoom(-1);
+
+ R2_GLOBALS._player.disableControl();
+ R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
+
+ if (_object2->_mover)
+ _object2->addMover(NULL);
+ }
+
+ _object1.setPosition(_object2->_position);
+
+ switch (v) {
+ case 0:
+ _object1.animate(ANIM_MODE_2, NULL);
+ break;
+ case 1:
+ ((SceneItem *)_action)->_sceneRegionId = 0;
+ if (scene->_sceneMode != 3324) {
+ _object1.setup(4125, 3, 1);
+ _object1.animate(ANIM_MODE_5, this);
+ } else {
+ _object1.setup(3258, 6, 1);
+ _object1.animate(ANIM_MODE_2, NULL);
+ _object1.hide();
+ _object2->setup(3258, 6, 1);
+ _object2->show();
+ }
+ break;
+ default:
+ signal();
+ break;
+ }
+}
+
+//----------------------------------------------------------------------------
// Classes related to QUINN
//----------------------------------------------------------------------------
diff --git a/engines/tsage/ringworld2/ringworld2_speakers.h b/engines/tsage/ringworld2/ringworld2_speakers.h
index a4c93a131c..cbd440e1a9 100644
--- a/engines/tsage/ringworld2/ringworld2_speakers.h
+++ b/engines/tsage/ringworld2/ringworld2_speakers.h
@@ -229,6 +229,16 @@ public:
virtual void proc15();
};
+// Classes related to Protector
+
+class SpeakerProtector3600 : public VisualSpeaker {
+public:
+ SpeakerProtector3600();
+
+ virtual Common::String getClassName() { return "SpeakerProtector3600"; }
+ virtual void proc15();
+};
+
// Classes related to Quinn
class SpeakerQuinn : public VisualSpeaker {