[Scummvm-cvs-logs] scummvm master -> 6ef18187de22de775c5e440e57ca62648be865b2
dreammaster
dreammaster at scummvm.org
Thu Sep 8 12:50:31 CEST 2011
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
88e68abd4b TSAGE: Separated speaker classes for both games into separate files
8b17e8a9b8 TSAGE: More core functionality needed for Blue Force
6ef18187de TSAGE: Implemented Scene 315 (Inside Police Station)
Commit: 88e68abd4b0e2b8430395cc0ad87dac45ef974c6
https://github.com/scummvm/scummvm/commit/88e68abd4b0e2b8430395cc0ad87dac45ef974c6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-08T03:40:23-07:00
Commit Message:
TSAGE: Separated speaker classes for both games into separate files
Changed paths:
A engines/tsage/blue_force/blueforce_speakers.cpp
A engines/tsage/blue_force/blueforce_speakers.h
A engines/tsage/ringworld/ringworld_speakers.cpp
A engines/tsage/ringworld/ringworld_speakers.h
engines/tsage/ringworld/ringworld_logic.cpp
engines/tsage/ringworld/ringworld_logic.h
engines/tsage/ringworld/ringworld_scenes1.h
engines/tsage/ringworld/ringworld_scenes10.h
engines/tsage/ringworld/ringworld_scenes2.h
engines/tsage/ringworld/ringworld_scenes3.h
engines/tsage/ringworld/ringworld_scenes4.h
engines/tsage/ringworld/ringworld_scenes5.h
engines/tsage/ringworld/ringworld_scenes6.h
engines/tsage/ringworld/ringworld_scenes8.h
diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp
new file mode 100644
index 0000000..95a7372
--- /dev/null
+++ b/engines/tsage/blue_force/blueforce_speakers.cpp
@@ -0,0 +1,291 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "tsage/blue_force/blueforce_speakers.h"
+#include "tsage/scenes.h"
+#include "tsage/tsage.h"
+#include "tsage/graphics.h"
+#include "tsage/staticres.h"
+
+namespace TsAGE {
+
+namespace BlueForce {
+
+VisualSpeaker::VisualSpeaker(): Speaker() {
+ _textWidth = 312;
+ _color1 = 19;
+ _hideObjects = false;
+ _removeObject1 = false;
+ _removeObject2 = false;
+ _xp = 160;
+ _fontNumber = 4;
+ _color2 = 82;
+ _offsetPos = Common::Point(4, 170);
+ _numFrames = 0;
+}
+
+void VisualSpeaker::remove() {
+ if (_removeObject2)
+ _object2.remove();
+ if (_removeObject1)
+ _object1.remove();
+
+ Speaker::remove();
+}
+
+void VisualSpeaker::synchronize(Serializer &s) {
+ Speaker::synchronize(s);
+
+ s.syncAsByte(_removeObject1);
+ s.syncAsByte(_removeObject2);
+ s.syncAsSint16LE(_xp);
+ s.syncAsSint16LE(_numFrames);
+ s.syncAsSint16LE(_offsetPos.x);
+ s.syncAsSint16LE(_offsetPos.y);
+}
+
+void VisualSpeaker::proc12(Action *action) {
+ Speaker::proc12(action);
+ _textPos = Common::Point(_offsetPos.x + BF_GLOBALS._sceneManager._scene->_sceneBounds.left,
+ _offsetPos.y + BF_GLOBALS._sceneManager._scene->_sceneBounds.top);
+ _numFrames = 0;
+}
+
+void VisualSpeaker::setText(const Common::String &msg) {
+ _objectList.draw();
+ BF_GLOBALS._sceneObjects->draw();
+
+ _sceneText._color1 = _color1;
+ _sceneText._color2 = _color2;
+ _sceneText._color3 = _color3;
+ _sceneText._width = _textWidth;
+ _sceneText._fontNumber = _fontNumber;
+ _sceneText._textMode = _textMode;
+ _sceneText.setup(msg);
+
+ // Get the string bounds
+ GfxFont f;
+ f.setFontNumber(_fontNumber);
+ Rect bounds;
+ f.getStringBounds(msg.c_str(), bounds, _textWidth);
+
+ // Set the position for the text
+ switch (_textMode) {
+ case ALIGN_LEFT:
+ case ALIGN_JUSTIFIED:
+ _sceneText.setPosition(_textPos);
+ break;
+ case ALIGN_CENTER:
+ _sceneText.setPosition(Common::Point(_textPos.x + (_textWidth - bounds.width()) / 2, _textPos.y));
+ break;
+ case ALIGN_RIGHT:
+ _sceneText.setPosition(Common::Point(_textPos.x + _textWidth - bounds.width(), _textPos.y));
+ break;
+ default:
+ break;
+ }
+
+ // Ensure the text is in the foreground
+ _sceneText.fixPriority(256);
+
+ // Count the number of words (by spaces) in the string
+ const char *s = msg.c_str();
+ int spaceCount = 0;
+ while (*s) {
+ if (*s++ == ' ')
+ ++spaceCount;
+ }
+
+ _numFrames = spaceCount * 3 + 2;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerGameText::SpeakerGameText(): VisualSpeaker() {
+ _speakerName = "GAMETEXT";
+ _color1 = 8;
+ _color2 = 19;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSutter::SpeakerSutter() {
+ _speakerName = "SUTTER";
+ _color1 = 20;
+ _color2 = 22;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerSutter::setText(const Common::String &msg) {
+ _removeObject1 = _removeObject2 = true;
+
+ _object1.postInit();
+ _object1.setVisage(329);
+ _object1.setStrip2(2);
+ _object1.fixPriority(254);
+ _object1.changeZoom(100);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ _object2.postInit();
+ _object2.setVisage(329);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ VisualSpeaker::setText(msg);
+ _object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerDoug::SpeakerDoug(): VisualSpeaker() {
+ _color1 = 32;
+ _speakerName = "DOUG";
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerJakeNoHead::SpeakerJakeNoHead(): VisualSpeaker() {
+ _color1 = 13;
+ _speakerName = "JAKE_NO_HEAD";
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerHarrison::SpeakerHarrison(): VisualSpeaker() {
+ _color1 = 32;
+ _speakerName = "HARRISON";
+}
+
+void SpeakerHarrison::setText(const Common::String &msg) {
+ _removeObject1 = _removeObject2 = true;
+
+ _object1.postInit();
+ _object1.setVisage(325);
+ _object1.setStrip2(7);
+ _object1.fixPriority(254);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 277,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ _object2.postInit();
+ _object2.fixPriority(255);
+ _object2.setVisage(325);
+ _object2.setStrip2(6);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 277,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ VisualSpeaker::setText(msg);
+ _object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerJakeJacket::SpeakerJakeJacket(): VisualSpeaker() {
+ _color1 = 13;
+ _color2 = 7;
+ _speakerName = "JAKEJACKET";
+}
+
+void SpeakerJakeJacket::setText(const Common::String &msg) {
+ _removeObject1 = _removeObject2 = true;
+
+ _object1.postInit();
+ _object1.setVisage(1001);
+ _object1.setStrip2(4);
+ _object1.fixPriority(254);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + _xp,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ _object2.postInit();
+ _object2.setVisage(1001);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + _xp,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ VisualSpeaker::setText(msg);
+ _object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerJakeUniform::SpeakerJakeUniform(): VisualSpeaker() {
+ _color1 = 13;
+ _color2 = 7;
+ _speakerName = "JAKEUNIFORM";
+}
+
+void SpeakerJakeUniform::setText(const Common::String &msg) {
+ _removeObject1 = _removeObject2 = true;
+
+ _object1.postInit();
+ _object1.setVisage(1001);
+ _object1.setStrip2(3);
+ _object1.fixPriority(254);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ _object2.postInit();
+ _object2.setVisage(1001);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ VisualSpeaker::setText(msg);
+ _object2.fixCountdown(8, _numFrames);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerJailer::SpeakerJailer(): VisualSpeaker() {
+ _color1 = 13;
+ _color2 = 7;
+ _speakerName = "JAILER";
+}
+
+void SpeakerJailer::setText(const Common::String &msg) {
+ _removeObject1 = _removeObject2 = true;
+
+ _object1.postInit();
+ _object1.setVisage(395);
+ _object1.setStrip(6);
+ _object1.fixPriority(254);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 40,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ _object2.postInit();
+ _object2.setVisage(395);
+ _object2.setStrip(5);
+ _object2.fixPriority(255);
+ _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 40,
+ BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
+
+ VisualSpeaker::setText(msg);
+ _object2.fixCountdown(8, _numFrames);
+}
+
+} // End of namespace BlueForce
+
+} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_speakers.h b/engines/tsage/blue_force/blueforce_speakers.h
new file mode 100644
index 0000000..9db0dd2
--- /dev/null
+++ b/engines/tsage/blue_force/blueforce_speakers.h
@@ -0,0 +1,123 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TSAGE_BLUEFORCE_SPEAKERS_H
+#define TSAGE_BLUEFORCE_SPEAKERS_H
+
+#include "common/scummsys.h"
+#include "tsage/converse.h"
+#include "tsage/events.h"
+#include "tsage/core.h"
+#include "tsage/scenes.h"
+#include "tsage/globals.h"
+#include "tsage/blue_force/blueforce_logic.h"
+
+namespace TsAGE {
+
+namespace BlueForce {
+
+using namespace TsAGE;
+
+class VisualSpeaker: public Speaker {
+public:
+ NamedObject _object1;
+ CountdownObject _object2;
+ bool _removeObject1, _removeObject2;
+ int _xp;
+ int _numFrames;
+ Common::Point _offsetPos;
+public:
+ VisualSpeaker();
+
+ virtual Common::String getClassName() { return "VisualSpeaker"; }
+ virtual void synchronize(Serializer &s);
+ virtual void remove();
+ virtual void proc12(Action *action);
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerGameText: public VisualSpeaker {
+public:
+ SpeakerGameText();
+
+ virtual Common::String getClassName() { return "SpeakerGameText"; }
+};
+
+class SpeakerSutter: public VisualSpeaker {
+public:
+ SpeakerSutter();
+
+ virtual Common::String getClassName() { return "SpeakerSutter"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerDoug: public VisualSpeaker {
+public:
+ SpeakerDoug();
+
+ virtual Common::String getClassName() { return "SpeakerDoug"; }
+};
+
+class SpeakerJakeNoHead: public VisualSpeaker {
+public:
+ SpeakerJakeNoHead();
+
+ virtual Common::String getClassName() { return "SpeakerJakeNoHead"; }
+};
+
+class SpeakerHarrison: public VisualSpeaker {
+public:
+ SpeakerHarrison();
+
+ virtual Common::String getClassName() { return "SpeakerHarrison"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerJakeJacket: public VisualSpeaker {
+public:
+ SpeakerJakeJacket();
+
+ virtual Common::String getClassName() { return "SpeakerJakeJacket"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerJakeUniform: public VisualSpeaker {
+public:
+ SpeakerJakeUniform();
+
+ virtual Common::String getClassName() { return "SpeakerJakeUniform"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerJailer: public VisualSpeaker {
+public:
+ SpeakerJailer();
+
+ virtual Common::String getClassName() { return "SpeakerJailer"; }
+ virtual void setText(const Common::String &msg);
+};
+
+} // End of namespace BlueForce
+
+} // End of namespace TsAGE
+
+#endif
diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp
index 72c5697..4bd0b0a 100644
--- a/engines/tsage/ringworld/ringworld_logic.cpp
+++ b/engines/tsage/ringworld/ringworld_logic.cpp
@@ -331,878 +331,6 @@ void SceneArea::synchronize(Serializer &s) {
/*--------------------------------------------------------------------------*/
-SpeakerGText::SpeakerGText() {
- _speakerName = "GTEXT";
- _textWidth = 160;
- _textPos = Common::Point(130, 10);
- _color1 = 42;
- _hideObjects = false;
-}
-
-void SpeakerGText::setText(const Common::String &msg) {
- // Set the animation properties
- _sceneObject.postInit();
- _sceneObject.setVisage(9405);
- _sceneObject.setStrip2(3);
- _sceneObject.fixPriority(255);
- _sceneObject.changeZoom(100);
- _sceneObject._frame = 1;
- _sceneObject.setPosition(Common::Point(183, 71));
- _sceneObject.animate(ANIM_MODE_7, 0, NULL);
-
- // Set the text
- Rect textRect;
- _globals->gfxManager()._font.getStringBounds(msg.c_str(), textRect, _textWidth);
- textRect.center(_sceneObject._position.x, _sceneObject._position.y);
- _textPos.x = textRect.left;
- Speaker::setText(msg);
-}
-
-void SpeakerGText::removeText() {
- _sceneObject.remove();
- Speaker::removeText();
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerPOR::SpeakerPOR() {
- _speakerName = "POR";
- _newSceneNumber = 7221;
- _textPos = Common::Point(10, 30);
- _color1 = 41;
-}
-
-void SpeakerPOR::SpeakerAction1::signal(){
- switch (_actionIndex++) {
- case 0:
- setDelay(_globals->_randomSource.getRandomNumber(60) + 60);
- break;
- case 1:
- static_cast<SceneObject *>(_owner)->animate(ANIM_MODE_5, this, NULL);
- break;
- case 2:
- setDelay(_globals->_randomSource.getRandomNumber(10));
- _actionIndex = 0;
- break;
- default:
- break;
- }
-}
-
-void SpeakerPOR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(7223);
- _object1.setStrip2(2);
- _object1.setPosition(Common::Point(191, 166));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(7223);
- _object2.setPosition(Common::Point(159, 86));
- _object2.setAction(&_speakerAction, NULL);
-
- _object3.postInit(&_objectList);
- _object3.setVisage(7223);
- _object3.setStrip(3);
- _object3.setPosition(Common::Point(119, 107));
- _object3.fixPriority(199);
- _object3.setAction(&_action2);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerOR::SpeakerOR() {
- _speakerName = "OR";
- _newSceneNumber = 9430;
- _textPos = Common::Point(8, 36);
- _color1 = 42;
- _textWidth = 136;
-}
-
-void SpeakerOR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(9431);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(202, 147));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(9431);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.setZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(199, 85));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerOText::SpeakerOText() : SpeakerGText() {
- _speakerName = "OTEXT";
- _textWidth = 240;
- _textPos = Common::Point(130, 10);
- _color1 = 42;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerQText::SpeakerQText() : ScreenSpeaker() {
- _speakerName = "QTEXT";
- _textPos = Common::Point(160, 40);
- _color1 = 35;
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSText::SpeakerSText() : ScreenSpeaker() {
- _speakerName = "STEXT";
- _color1 = 13;
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerPOText::SpeakerPOText() : ScreenSpeaker() {
- _speakerName = "POTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 41;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerMText::SpeakerMText() {
- _speakerName = "MTEXT";
- _color1 = 22;
- _textWidth = 230;
- _textMode = ALIGN_CENTER;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCText::SpeakerCText() {
- _speakerName = "CTEXT";
- _color1 = 4;
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerEText::SpeakerEText() {
- _speakerName = "ETEXT";
- _textPos = Common::Point(20, 20);
- _color1 = 22;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerGR::SpeakerGR() : AnimatedSpeaker() {
- _speakerName = "GR";
- _newSceneNumber = 9220;
- _textWidth = 136;
- _textPos = Common::Point(168, 36);
- _color1 = 14;
-}
-
-void SpeakerGR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(9221);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(101, 70));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerHText::SpeakerHText() {
- _speakerName = "HTEXT";
- _textPos = Common::Point(160, 40);
- _color1 = 52;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSKText::SpeakerSKText() : ScreenSpeaker() {
- _speakerName = "SKTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 9;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerPText::SpeakerPText() {
- _speakerName = "PTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 5;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCHFText::SpeakerCHFText() {
- _speakerName = "CHFTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 56;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCDRText::SpeakerCDRText() {
- _speakerName = "CDRTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 52;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerFLText::SpeakerFLText() {
- _speakerName = "FLTEXT";
- _textPos = Common::Point(10, 40);
- _color1 = 17;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerBatText::SpeakerBatText() {
- _speakerName = "BATTEXT";
- _textWidth = 240;
- _textMode = ALIGN_CENTER;
- _color1 = 3;
- _hideObjects = false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSKL::SpeakerSKL() : AnimatedSpeaker() {
- _speakerName = "SKL";
- _newSceneNumber = 7011;
- _textPos = Common::Point(10, 30);
- _color1 = 9;
-}
-
-void SpeakerSKL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(7013);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(203, 120));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(7013);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(197, 80));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerQL::SpeakerQL() : AnimatedSpeaker() {
- _speakerName = "QL";
- _newSceneNumber = 2610;
- _textPos = Common::Point(160, 30);
- _color1 = 35;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerQL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2612);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(128, 146));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2612);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(122, 84));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSR::SpeakerSR() {
- _speakerName = "SR";
- _newSceneNumber = 2811;
- _textPos = Common::Point(10, 30);
- _color1 = 13;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerSR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2813);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(224, 198));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2813);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(203, 96));
- _object2.setAction(&_speakerAction, NULL);
-
- _object3.postInit(&_objectList);
- _object3.setVisage(2813);
- _object3.setStrip(3);
- _object3.setPosition(Common::Point(204, 91));
- _object3.fixPriority(199);
- _object3._numFrames = 3;
- _object3.animate(ANIM_MODE_7, 0, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSL::SpeakerSL() {
- _speakerName = "SL";
- _newSceneNumber = 2810;
- _textPos = Common::Point(140, 30);
- _textWidth = 160;
- _color1 = 13;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerSL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2812);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(95, 198));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2812);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(116, 96));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerQR::SpeakerQR() {
- _speakerName = "QR";
- _newSceneNumber = 2611;
- _textPos = Common::Point(10, 30);
- _color1 = 35;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerQR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2613);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(191, 146));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2613);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(197, 84));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerQU::SpeakerQU() {
- _speakerName = "QU";
- _newSceneNumber = 7020;
- _textPos = Common::Point(160, 30);
- _color1 = 35;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerQU::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(7021);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(116, 120));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(7021);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(111, 84));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCR::SpeakerCR() {
- _speakerName = "CR";
- _newSceneNumber = 9010;
- _textPos = Common::Point(20, 40);
- _color1 = 4;
-}
-
-void SpeakerCR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(9011);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.setPosition(Common::Point(219, 168));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(9011);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.setPosition(Common::Point(232, 81));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerMR::SpeakerMR() {
- _speakerName = "MR";
- _newSceneNumber = 2711;
- _textPos = Common::Point(10, 40);
- _color1 = 22;
-}
-
-void SpeakerMR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2713);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(220, 143));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2713);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(215, 99));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSAL::SpeakerSAL() {
- _speakerName = "SAL";
- _newSceneNumber = 2851;
- _textPos = Common::Point(10, 30);
- _color1 = 13;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerSAL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2853);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(185, 200));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2853);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(170, 92));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerML::SpeakerML() {
- _speakerName = "ML";
- _newSceneNumber = 2710;
- _textPos = Common::Point(160, 40);
- _color1 = 22;
-}
-
-void SpeakerML::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(2712);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(99, 143));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(2712);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(105, 99));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCHFL::SpeakerCHFL() {
- _speakerName = "CHFL";
- _newSceneNumber = 4111;
- _textPos = Common::Point(10, 40);
- _color1 = 56;
-}
-
-void SpeakerCHFL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4113);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(205, 116));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4113);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(202, 71));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCHFR::SpeakerCHFR() {
- _speakerName = "CHFR";
- _newSceneNumber = 4110;
- _textPos = Common::Point(160, 40);
- _color1 = 56;
-}
-
-void SpeakerCHFR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4112);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(103, 116));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4112);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(106, 71));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerPL::SpeakerPL() {
- _speakerName = "PL";
- _newSceneNumber = 4060;
- _textPos = Common::Point(160, 40);
- _color1 = 5;
-}
-
-void SpeakerPL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4062);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(107, 117));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4062);
- _object2.setStrip2(1);
- _object2.fixPriority(200);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(105, 62));
- _object2.setAction(&_speakerAction, NULL);
-
- _object3.postInit(&_objectList);
- _object3.setVisage(4062);
- _object3.setStrip2(3);
- _object3.fixPriority(255);
- _object3.changeZoom(100);
- _object3._frame = 1;
- _object3.setPosition(Common::Point(105, 59));
- _object3.setAction(&_speakerAction2, NULL);
-
- Speaker::setText(msg);
-}
-
-void SpeakerPL::removeText() {
- _object3.remove();
- AnimatedSpeaker::removeText();
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerPR::SpeakerPR() {
- _speakerName = "PR";
- _newSceneNumber = 4061;
- _textPos = Common::Point(10, 40);
- _color1 = 5;
-}
-
-void SpeakerPR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4063);
- _object1.setStrip2(1);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(212, 117));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4063);
- _object2.setStrip2(2);
- _object2.fixPriority(200);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(214, 62));
- _object2.setAction(&_speakerAction, NULL);
-
- _object3.postInit(&_objectList);
- _object3.setVisage(4063);
- _object3.setStrip2(3);
- _object3.fixPriority(255);
- _object3.changeZoom(100);
- _object3._frame = 1;
- _object3.setPosition(Common::Point(214, 59));
- _object3.setAction(&_speakerAction2, NULL);
-
- Speaker::setText(msg);
-}
-
-void SpeakerPR::removeText() {
- _object3.remove();
- AnimatedSpeaker::removeText();
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCDR::SpeakerCDR() {
- _speakerName = "CDR";
- _newSceneNumber = 4161;
- _textPos = Common::Point(10, 40);
- _color1 = 52;
-}
-
-void SpeakerCDR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4163);
- _object1.setStrip2(1);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(208, 97));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4163);
- _object2.setStrip2(2);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(200, 57));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerCDL::SpeakerCDL() {
- _speakerName = "CDL";
- _newSceneNumber = 4160;
- _textPos = Common::Point(160, 40);
- _color1 = 52;
-}
-
-void SpeakerCDL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(4162);
- _object1.setStrip2(1);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(112, 97));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(4162);
- _object2.setStrip2(2);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(115, 57));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerFLL::SpeakerFLL() {
- _speakerName = "FLL";
- _newSceneNumber = 5221;
- _textPos = Common::Point(10, 40);
- _color1 = 17;
-}
-
-void SpeakerFLL::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(5223);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(216, 129));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(5223);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(210, 67));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerBatR::SpeakerBatR() {
- _speakerName = "BATR";
- _newSceneNumber = 5360;
- _textPos = Common::Point(140, 40);
- _color1 = 3;
-}
-
-void SpeakerBatR::setText(const Common::String &msg) {
- _object1.postInit(&_objectList);
- _object1.setVisage(5361);
- _object1.setStrip2(2);
- _object1.fixPriority(255);
- _object1.changeZoom(100);
- _object1._frame = 1;
- _object1.setPosition(Common::Point(137, 122));
- _object1.animate(ANIM_MODE_7, 0, NULL);
-
- _object2.postInit(&_objectList);
- _object2.setVisage(5361);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object2.changeZoom(100);
- _object2._frame = 1;
- _object2.setPosition(Common::Point(137, 104));
- _object2.setAction(&_speakerAction, NULL);
-
- Speaker::setText(msg);
-}
-
-/*--------------------------------------------------------------------------*/
-
RingworldInvObjectList::RingworldInvObjectList() :
_stunner(2280, 1, 2, OBJECT_STUNNER, "This is your stunner."),
_scanner(1, 1, 3, OBJECT_SCANNER, "A combination scanner comm unit."),
diff --git a/engines/tsage/ringworld/ringworld_logic.h b/engines/tsage/ringworld/ringworld_logic.h
index 830b283..286abd3 100644
--- a/engines/tsage/ringworld/ringworld_logic.h
+++ b/engines/tsage/ringworld/ringworld_logic.h
@@ -102,302 +102,6 @@ public:
};
/*--------------------------------------------------------------------------*/
-// Ringworld specific game speakers
-
-class SpeakerGText : public Speaker {
-public:
- SceneObject _sceneObject;
-public:
- SpeakerGText();
-
- virtual Common::String getClassName() { return "SpeakerGText"; }
- virtual void setText(const Common::String &msg);
- virtual void removeText();
-};
-
-class SpeakerPOR : public AnimatedSpeaker {
- class SpeakerAction1 : public SpeakerAction {
- public:
- virtual void signal();
- };
-
-public:
- SceneObject _object3;
- SpeakerAction1 _action2;
-public:
- SpeakerPOR();
- virtual Common::String getClassName() { return "SpeakerPOR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerOR : public AnimatedSpeaker {
-public:
- SpeakerOR();
- virtual Common::String getClassName() { return "SpeakerOR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerOText : public SpeakerGText {
-public:
- SpeakerOText();
-
- virtual Common::String getClassName() { return "SpeakerOText"; }
-};
-
-class SpeakerPOText : public ScreenSpeaker {
-public:
- SpeakerPOText();
-
- virtual Common::String getClassName() { return "SpeakerPOText"; }
-};
-
-class SpeakerSText : public ScreenSpeaker {
-public:
- SpeakerSText();
-
- virtual Common::String getClassName() { return "SpeakerSText"; }
-};
-
-class SpeakerQText : public ScreenSpeaker {
-public:
- SpeakerQText();
-
- virtual Common::String getClassName() { return "SpeakerQText"; }
-};
-
-class SpeakerMText : public ScreenSpeaker {
-public:
- SpeakerMText();
-
- virtual Common::String getClassName() { return "SpeakerMText"; }
-};
-
-class SpeakerCText : public ScreenSpeaker {
-public:
- SpeakerCText();
-
- virtual Common::String getClassName() { return "SpeakerCText"; }
-};
-
-class SpeakerEText : public ScreenSpeaker {
-public:
- SpeakerEText();
-
- virtual Common::String getClassName() { return "SpeakerEText"; }
-};
-
-class SpeakerGR : public AnimatedSpeaker {
-public:
- SpeakerGR();
-
- virtual Common::String getClassName() { return "SpeakerGR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerHText : public ScreenSpeaker {
-public:
- SpeakerHText();
-
- virtual Common::String getClassName() { return "SpeakerHText"; }
-};
-
-class SpeakerPText : public ScreenSpeaker {
-public:
- SpeakerPText();
-
- virtual Common::String getClassName() { return "SpeakerPText"; }
-};
-
-class SpeakerCHFText : public ScreenSpeaker {
-public:
- SpeakerCHFText();
-
- virtual Common::String getClassName() { return "SpeakerCHFText"; }
-};
-
-class SpeakerSKText : public ScreenSpeaker {
-public:
- SpeakerSKText();
-
- virtual Common::String getClassName() { return "SpeakerSKText"; }
-};
-
-class SpeakerCDRText : public ScreenSpeaker {
-public:
- SpeakerCDRText();
-
- virtual Common::String getClassName() { return "SpeakerCDRText"; }
-};
-
-class SpeakerFLText : public ScreenSpeaker {
-public:
- SpeakerFLText();
-
- virtual Common::String getClassName() { return "SpeakerFLText"; }
-};
-
-class SpeakerBatText : public ScreenSpeaker {
-public:
- SpeakerBatText();
-
- virtual Common::String getClassName() { return "SpeakerFLText"; }
-};
-
-class SpeakerQR : public AnimatedSpeaker {
-public:
- SpeakerQR();
-
- virtual Common::String getClassName() { return "SpeakerQR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerQU : public AnimatedSpeaker {
-public:
- SpeakerQU();
-
- virtual Common::String getClassName() { return "SpeakerQU"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerSKL : public AnimatedSpeaker {
-public:
- SpeakerSKL();
-
- virtual Common::String getClassName() { return "SpeakerQL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerQL : public AnimatedSpeaker {
-public:
- SpeakerQL();
-
- virtual Common::String getClassName() { return "SpeakerQL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerSR : public AnimatedSpeaker {
-public:
- SceneObject _object3;
-public:
- SpeakerSR();
-
- virtual Common::String getClassName() { return "SpeakerSR"; }
- void setText(const Common::String &msg);
-};
-
-class SpeakerSL : public AnimatedSpeaker {
-public:
- SpeakerSL();
-
- virtual Common::String getClassName() { return "SpeakerSL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerCR : public AnimatedSpeaker {
-public:
- SpeakerCR();
-
- virtual Common::String getClassName() { return "SpeakerCR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerMR : public AnimatedSpeaker {
-public:
- SpeakerMR();
-
- virtual Common::String getClassName() { return "SpeakerMR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerSAL : public AnimatedSpeaker {
-public:
- SpeakerSAL();
-
- virtual Common::String getClassName() { return "SpeakerSAL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerML : public AnimatedSpeaker {
-public:
- SpeakerML();
-
- virtual Common::String getClassName() { return "SpeakerML"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerCHFL : public AnimatedSpeaker {
-public:
- SpeakerCHFL();
-
- virtual Common::String getClassName() { return "SpeakerCHFL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerCHFR : public AnimatedSpeaker {
-public:
- SpeakerCHFR();
-
- virtual Common::String getClassName() { return "SpeakerCHFR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerPL : public AnimatedSpeaker {
-public:
- SceneObject _object3;
- SpeakerAction _speakerAction2;
-
- SpeakerPL();
-
- virtual Common::String getClassName() { return "SpeakerPL"; }
- virtual void setText(const Common::String &msg);
- virtual void removeText();
-};
-
-class SpeakerPR : public AnimatedSpeaker {
-public:
- SceneObject _object3;
- SpeakerAction _speakerAction2;
-
- SpeakerPR();
-
- virtual Common::String getClassName() { return "SpeakerPR"; }
- virtual void setText(const Common::String &msg);
- virtual void removeText();
-};
-
-class SpeakerCDR : public AnimatedSpeaker {
-public:
- SpeakerCDR();
-
- virtual Common::String getClassName() { return "SpeakerCDR"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerCDL : public AnimatedSpeaker {
-public:
- SpeakerCDL();
-
- virtual Common::String getClassName() { return "SpeakerCDL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerFLL : public AnimatedSpeaker {
-public:
- SpeakerFLL();
-
- virtual Common::String getClassName() { return "SpeakerFLL"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerBatR : public AnimatedSpeaker {
-public:
- SpeakerBatR();
-
- virtual Common::String getClassName() { return "SpeakerBatR"; }
- virtual void setText(const Common::String &msg);
-};
-
-/*--------------------------------------------------------------------------*/
class RingworldInvObjectList : public InvObjectList {
public:
diff --git a/engines/tsage/ringworld/ringworld_scenes1.h b/engines/tsage/ringworld/ringworld_scenes1.h
index 49ea65e..bb98c89 100644
--- a/engines/tsage/ringworld/ringworld_scenes1.h
+++ b/engines/tsage/ringworld/ringworld_scenes1.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
#include "tsage/converse.h"
#include "tsage/events.h"
#include "tsage/core.h"
diff --git a/engines/tsage/ringworld/ringworld_scenes10.h b/engines/tsage/ringworld/ringworld_scenes10.h
index 02c42f3..6bca487 100644
--- a/engines/tsage/ringworld/ringworld_scenes10.h
+++ b/engines/tsage/ringworld/ringworld_scenes10.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
diff --git a/engines/tsage/ringworld/ringworld_scenes2.h b/engines/tsage/ringworld/ringworld_scenes2.h
index 3502aea..382d9d4 100644
--- a/engines/tsage/ringworld/ringworld_scenes2.h
+++ b/engines/tsage/ringworld/ringworld_scenes2.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
diff --git a/engines/tsage/ringworld/ringworld_scenes3.h b/engines/tsage/ringworld/ringworld_scenes3.h
index 2dbdc27..682ef44 100644
--- a/engines/tsage/ringworld/ringworld_scenes3.h
+++ b/engines/tsage/ringworld/ringworld_scenes3.h
@@ -27,6 +27,7 @@
#include "tsage/core.h"
#include "tsage/converse.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
namespace TsAGE {
diff --git a/engines/tsage/ringworld/ringworld_scenes4.h b/engines/tsage/ringworld/ringworld_scenes4.h
index af31de8..6470680 100644
--- a/engines/tsage/ringworld/ringworld_scenes4.h
+++ b/engines/tsage/ringworld/ringworld_scenes4.h
@@ -27,6 +27,7 @@
#include "tsage/core.h"
#include "tsage/converse.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
namespace TsAGE {
diff --git a/engines/tsage/ringworld/ringworld_scenes5.h b/engines/tsage/ringworld/ringworld_scenes5.h
index 6c6b6b6..80e6775 100644
--- a/engines/tsage/ringworld/ringworld_scenes5.h
+++ b/engines/tsage/ringworld/ringworld_scenes5.h
@@ -27,6 +27,7 @@
#include "tsage/core.h"
#include "tsage/converse.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
namespace TsAGE {
diff --git a/engines/tsage/ringworld/ringworld_scenes6.h b/engines/tsage/ringworld/ringworld_scenes6.h
index 79e604a..bf353de 100644
--- a/engines/tsage/ringworld/ringworld_scenes6.h
+++ b/engines/tsage/ringworld/ringworld_scenes6.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
diff --git a/engines/tsage/ringworld/ringworld_scenes8.h b/engines/tsage/ringworld/ringworld_scenes8.h
index 4878db5..84178c3 100644
--- a/engines/tsage/ringworld/ringworld_scenes8.h
+++ b/engines/tsage/ringworld/ringworld_scenes8.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/ringworld/ringworld_logic.h"
+#include "tsage/ringworld/ringworld_speakers.h"
#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
diff --git a/engines/tsage/ringworld/ringworld_speakers.cpp b/engines/tsage/ringworld/ringworld_speakers.cpp
new file mode 100644
index 0000000..c56639a
--- /dev/null
+++ b/engines/tsage/ringworld/ringworld_speakers.cpp
@@ -0,0 +1,905 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "tsage/ringworld/ringworld_speakers.h"
+#include "tsage/scenes.h"
+#include "tsage/tsage.h"
+#include "tsage/graphics.h"
+#include "tsage/staticres.h"
+
+namespace TsAGE {
+
+namespace Ringworld {
+
+SpeakerGText::SpeakerGText() {
+ _speakerName = "GTEXT";
+ _textWidth = 160;
+ _textPos = Common::Point(130, 10);
+ _color1 = 42;
+ _hideObjects = false;
+}
+
+void SpeakerGText::setText(const Common::String &msg) {
+ // Set the animation properties
+ _sceneObject.postInit();
+ _sceneObject.setVisage(9405);
+ _sceneObject.setStrip2(3);
+ _sceneObject.fixPriority(255);
+ _sceneObject.changeZoom(100);
+ _sceneObject._frame = 1;
+ _sceneObject.setPosition(Common::Point(183, 71));
+ _sceneObject.animate(ANIM_MODE_7, 0, NULL);
+
+ // Set the text
+ Rect textRect;
+ _globals->gfxManager()._font.getStringBounds(msg.c_str(), textRect, _textWidth);
+ textRect.center(_sceneObject._position.x, _sceneObject._position.y);
+ _textPos.x = textRect.left;
+ Speaker::setText(msg);
+}
+
+void SpeakerGText::removeText() {
+ _sceneObject.remove();
+ Speaker::removeText();
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerPOR::SpeakerPOR() {
+ _speakerName = "POR";
+ _newSceneNumber = 7221;
+ _textPos = Common::Point(10, 30);
+ _color1 = 41;
+}
+
+void SpeakerPOR::SpeakerAction1::signal(){
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(_globals->_randomSource.getRandomNumber(60) + 60);
+ break;
+ case 1:
+ static_cast<SceneObject *>(_owner)->animate(ANIM_MODE_5, this, NULL);
+ break;
+ case 2:
+ setDelay(_globals->_randomSource.getRandomNumber(10));
+ _actionIndex = 0;
+ break;
+ default:
+ break;
+ }
+}
+
+void SpeakerPOR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(7223);
+ _object1.setStrip2(2);
+ _object1.setPosition(Common::Point(191, 166));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(7223);
+ _object2.setPosition(Common::Point(159, 86));
+ _object2.setAction(&_speakerAction, NULL);
+
+ _object3.postInit(&_objectList);
+ _object3.setVisage(7223);
+ _object3.setStrip(3);
+ _object3.setPosition(Common::Point(119, 107));
+ _object3.fixPriority(199);
+ _object3.setAction(&_action2);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerOR::SpeakerOR() {
+ _speakerName = "OR";
+ _newSceneNumber = 9430;
+ _textPos = Common::Point(8, 36);
+ _color1 = 42;
+ _textWidth = 136;
+}
+
+void SpeakerOR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(9431);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(202, 147));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(9431);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.setZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(199, 85));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerOText::SpeakerOText() : SpeakerGText() {
+ _speakerName = "OTEXT";
+ _textWidth = 240;
+ _textPos = Common::Point(130, 10);
+ _color1 = 42;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerQText::SpeakerQText() : ScreenSpeaker() {
+ _speakerName = "QTEXT";
+ _textPos = Common::Point(160, 40);
+ _color1 = 35;
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSText::SpeakerSText() : ScreenSpeaker() {
+ _speakerName = "STEXT";
+ _color1 = 13;
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerPOText::SpeakerPOText() : ScreenSpeaker() {
+ _speakerName = "POTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 41;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerMText::SpeakerMText() {
+ _speakerName = "MTEXT";
+ _color1 = 22;
+ _textWidth = 230;
+ _textMode = ALIGN_CENTER;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCText::SpeakerCText() {
+ _speakerName = "CTEXT";
+ _color1 = 4;
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerEText::SpeakerEText() {
+ _speakerName = "ETEXT";
+ _textPos = Common::Point(20, 20);
+ _color1 = 22;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerGR::SpeakerGR() : AnimatedSpeaker() {
+ _speakerName = "GR";
+ _newSceneNumber = 9220;
+ _textWidth = 136;
+ _textPos = Common::Point(168, 36);
+ _color1 = 14;
+}
+
+void SpeakerGR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(9221);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(101, 70));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerHText::SpeakerHText() {
+ _speakerName = "HTEXT";
+ _textPos = Common::Point(160, 40);
+ _color1 = 52;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSKText::SpeakerSKText() : ScreenSpeaker() {
+ _speakerName = "SKTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 9;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerPText::SpeakerPText() {
+ _speakerName = "PTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 5;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCHFText::SpeakerCHFText() {
+ _speakerName = "CHFTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 56;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCDRText::SpeakerCDRText() {
+ _speakerName = "CDRTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 52;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerFLText::SpeakerFLText() {
+ _speakerName = "FLTEXT";
+ _textPos = Common::Point(10, 40);
+ _color1 = 17;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerBatText::SpeakerBatText() {
+ _speakerName = "BATTEXT";
+ _textWidth = 240;
+ _textMode = ALIGN_CENTER;
+ _color1 = 3;
+ _hideObjects = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSKL::SpeakerSKL() : AnimatedSpeaker() {
+ _speakerName = "SKL";
+ _newSceneNumber = 7011;
+ _textPos = Common::Point(10, 30);
+ _color1 = 9;
+}
+
+void SpeakerSKL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(7013);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(203, 120));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(7013);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(197, 80));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerQL::SpeakerQL() : AnimatedSpeaker() {
+ _speakerName = "QL";
+ _newSceneNumber = 2610;
+ _textPos = Common::Point(160, 30);
+ _color1 = 35;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerQL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2612);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(128, 146));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2612);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(122, 84));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSR::SpeakerSR() {
+ _speakerName = "SR";
+ _newSceneNumber = 2811;
+ _textPos = Common::Point(10, 30);
+ _color1 = 13;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerSR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2813);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(224, 198));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2813);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(203, 96));
+ _object2.setAction(&_speakerAction, NULL);
+
+ _object3.postInit(&_objectList);
+ _object3.setVisage(2813);
+ _object3.setStrip(3);
+ _object3.setPosition(Common::Point(204, 91));
+ _object3.fixPriority(199);
+ _object3._numFrames = 3;
+ _object3.animate(ANIM_MODE_7, 0, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSL::SpeakerSL() {
+ _speakerName = "SL";
+ _newSceneNumber = 2810;
+ _textPos = Common::Point(140, 30);
+ _textWidth = 160;
+ _color1 = 13;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerSL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2812);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(95, 198));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2812);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(116, 96));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerQR::SpeakerQR() {
+ _speakerName = "QR";
+ _newSceneNumber = 2611;
+ _textPos = Common::Point(10, 30);
+ _color1 = 35;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerQR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2613);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(191, 146));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2613);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(197, 84));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerQU::SpeakerQU() {
+ _speakerName = "QU";
+ _newSceneNumber = 7020;
+ _textPos = Common::Point(160, 30);
+ _color1 = 35;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerQU::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(7021);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(116, 120));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(7021);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(111, 84));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCR::SpeakerCR() {
+ _speakerName = "CR";
+ _newSceneNumber = 9010;
+ _textPos = Common::Point(20, 40);
+ _color1 = 4;
+}
+
+void SpeakerCR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(9011);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.setPosition(Common::Point(219, 168));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(9011);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.setPosition(Common::Point(232, 81));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerMR::SpeakerMR() {
+ _speakerName = "MR";
+ _newSceneNumber = 2711;
+ _textPos = Common::Point(10, 40);
+ _color1 = 22;
+}
+
+void SpeakerMR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2713);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(220, 143));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2713);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(215, 99));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerSAL::SpeakerSAL() {
+ _speakerName = "SAL";
+ _newSceneNumber = 2851;
+ _textPos = Common::Point(10, 30);
+ _color1 = 13;
+ _textMode = ALIGN_CENTER;
+}
+
+void SpeakerSAL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2853);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(185, 200));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2853);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(170, 92));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerML::SpeakerML() {
+ _speakerName = "ML";
+ _newSceneNumber = 2710;
+ _textPos = Common::Point(160, 40);
+ _color1 = 22;
+}
+
+void SpeakerML::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(2712);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(99, 143));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(2712);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(105, 99));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCHFL::SpeakerCHFL() {
+ _speakerName = "CHFL";
+ _newSceneNumber = 4111;
+ _textPos = Common::Point(10, 40);
+ _color1 = 56;
+}
+
+void SpeakerCHFL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4113);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(205, 116));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4113);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(202, 71));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCHFR::SpeakerCHFR() {
+ _speakerName = "CHFR";
+ _newSceneNumber = 4110;
+ _textPos = Common::Point(160, 40);
+ _color1 = 56;
+}
+
+void SpeakerCHFR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4112);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(103, 116));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4112);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(106, 71));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerPL::SpeakerPL() {
+ _speakerName = "PL";
+ _newSceneNumber = 4060;
+ _textPos = Common::Point(160, 40);
+ _color1 = 5;
+}
+
+void SpeakerPL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4062);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(107, 117));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4062);
+ _object2.setStrip2(1);
+ _object2.fixPriority(200);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(105, 62));
+ _object2.setAction(&_speakerAction, NULL);
+
+ _object3.postInit(&_objectList);
+ _object3.setVisage(4062);
+ _object3.setStrip2(3);
+ _object3.fixPriority(255);
+ _object3.changeZoom(100);
+ _object3._frame = 1;
+ _object3.setPosition(Common::Point(105, 59));
+ _object3.setAction(&_speakerAction2, NULL);
+
+ Speaker::setText(msg);
+}
+
+void SpeakerPL::removeText() {
+ _object3.remove();
+ AnimatedSpeaker::removeText();
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerPR::SpeakerPR() {
+ _speakerName = "PR";
+ _newSceneNumber = 4061;
+ _textPos = Common::Point(10, 40);
+ _color1 = 5;
+}
+
+void SpeakerPR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4063);
+ _object1.setStrip2(1);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(212, 117));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4063);
+ _object2.setStrip2(2);
+ _object2.fixPriority(200);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(214, 62));
+ _object2.setAction(&_speakerAction, NULL);
+
+ _object3.postInit(&_objectList);
+ _object3.setVisage(4063);
+ _object3.setStrip2(3);
+ _object3.fixPriority(255);
+ _object3.changeZoom(100);
+ _object3._frame = 1;
+ _object3.setPosition(Common::Point(214, 59));
+ _object3.setAction(&_speakerAction2, NULL);
+
+ Speaker::setText(msg);
+}
+
+void SpeakerPR::removeText() {
+ _object3.remove();
+ AnimatedSpeaker::removeText();
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCDR::SpeakerCDR() {
+ _speakerName = "CDR";
+ _newSceneNumber = 4161;
+ _textPos = Common::Point(10, 40);
+ _color1 = 52;
+}
+
+void SpeakerCDR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4163);
+ _object1.setStrip2(1);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(208, 97));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4163);
+ _object2.setStrip2(2);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(200, 57));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerCDL::SpeakerCDL() {
+ _speakerName = "CDL";
+ _newSceneNumber = 4160;
+ _textPos = Common::Point(160, 40);
+ _color1 = 52;
+}
+
+void SpeakerCDL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(4162);
+ _object1.setStrip2(1);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(112, 97));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(4162);
+ _object2.setStrip2(2);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(115, 57));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerFLL::SpeakerFLL() {
+ _speakerName = "FLL";
+ _newSceneNumber = 5221;
+ _textPos = Common::Point(10, 40);
+ _color1 = 17;
+}
+
+void SpeakerFLL::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(5223);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(216, 129));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(5223);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(210, 67));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+/*--------------------------------------------------------------------------*/
+
+SpeakerBatR::SpeakerBatR() {
+ _speakerName = "BATR";
+ _newSceneNumber = 5360;
+ _textPos = Common::Point(140, 40);
+ _color1 = 3;
+}
+
+void SpeakerBatR::setText(const Common::String &msg) {
+ _object1.postInit(&_objectList);
+ _object1.setVisage(5361);
+ _object1.setStrip2(2);
+ _object1.fixPriority(255);
+ _object1.changeZoom(100);
+ _object1._frame = 1;
+ _object1.setPosition(Common::Point(137, 122));
+ _object1.animate(ANIM_MODE_7, 0, NULL);
+
+ _object2.postInit(&_objectList);
+ _object2.setVisage(5361);
+ _object2.setStrip2(1);
+ _object2.fixPriority(255);
+ _object2.changeZoom(100);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(137, 104));
+ _object2.setAction(&_speakerAction, NULL);
+
+ Speaker::setText(msg);
+}
+
+} // End of namespace Ringworld
+
+} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld/ringworld_speakers.h b/engines/tsage/ringworld/ringworld_speakers.h
new file mode 100644
index 0000000..305984a
--- /dev/null
+++ b/engines/tsage/ringworld/ringworld_speakers.h
@@ -0,0 +1,337 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TSAGE_RINGWORLD_SPEAKERS_H
+#define TSAGE_RINGWORLD_SPEAKERS_H
+
+#include "common/scummsys.h"
+#include "tsage/converse.h"
+#include "tsage/events.h"
+#include "tsage/core.h"
+#include "tsage/scenes.h"
+#include "tsage/globals.h"
+#include "tsage/ringworld/ringworld_logic.h"
+
+namespace TsAGE {
+
+namespace Ringworld {
+
+using namespace TsAGE;
+
+class SpeakerGText : public Speaker {
+public:
+ SceneObject _sceneObject;
+public:
+ SpeakerGText();
+
+ virtual Common::String getClassName() { return "SpeakerGText"; }
+ virtual void setText(const Common::String &msg);
+ virtual void removeText();
+};
+
+class SpeakerPOR : public AnimatedSpeaker {
+ class SpeakerAction1 : public SpeakerAction {
+ public:
+ virtual void signal();
+ };
+
+public:
+ SceneObject _object3;
+ SpeakerAction1 _action2;
+public:
+ SpeakerPOR();
+ virtual Common::String getClassName() { return "SpeakerPOR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerOR : public AnimatedSpeaker {
+public:
+ SpeakerOR();
+ virtual Common::String getClassName() { return "SpeakerOR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerOText : public SpeakerGText {
+public:
+ SpeakerOText();
+
+ virtual Common::String getClassName() { return "SpeakerOText"; }
+};
+
+class SpeakerPOText : public ScreenSpeaker {
+public:
+ SpeakerPOText();
+
+ virtual Common::String getClassName() { return "SpeakerPOText"; }
+};
+
+class SpeakerSText : public ScreenSpeaker {
+public:
+ SpeakerSText();
+
+ virtual Common::String getClassName() { return "SpeakerSText"; }
+};
+
+class SpeakerQText : public ScreenSpeaker {
+public:
+ SpeakerQText();
+
+ virtual Common::String getClassName() { return "SpeakerQText"; }
+};
+
+class SpeakerMText : public ScreenSpeaker {
+public:
+ SpeakerMText();
+
+ virtual Common::String getClassName() { return "SpeakerMText"; }
+};
+
+class SpeakerCText : public ScreenSpeaker {
+public:
+ SpeakerCText();
+
+ virtual Common::String getClassName() { return "SpeakerCText"; }
+};
+
+class SpeakerEText : public ScreenSpeaker {
+public:
+ SpeakerEText();
+
+ virtual Common::String getClassName() { return "SpeakerEText"; }
+};
+
+class SpeakerGR : public AnimatedSpeaker {
+public:
+ SpeakerGR();
+
+ virtual Common::String getClassName() { return "SpeakerGR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerHText : public ScreenSpeaker {
+public:
+ SpeakerHText();
+
+ virtual Common::String getClassName() { return "SpeakerHText"; }
+};
+
+class SpeakerPText : public ScreenSpeaker {
+public:
+ SpeakerPText();
+
+ virtual Common::String getClassName() { return "SpeakerPText"; }
+};
+
+class SpeakerCHFText : public ScreenSpeaker {
+public:
+ SpeakerCHFText();
+
+ virtual Common::String getClassName() { return "SpeakerCHFText"; }
+};
+
+class SpeakerSKText : public ScreenSpeaker {
+public:
+ SpeakerSKText();
+
+ virtual Common::String getClassName() { return "SpeakerSKText"; }
+};
+
+class SpeakerCDRText : public ScreenSpeaker {
+public:
+ SpeakerCDRText();
+
+ virtual Common::String getClassName() { return "SpeakerCDRText"; }
+};
+
+class SpeakerFLText : public ScreenSpeaker {
+public:
+ SpeakerFLText();
+
+ virtual Common::String getClassName() { return "SpeakerFLText"; }
+};
+
+class SpeakerBatText : public ScreenSpeaker {
+public:
+ SpeakerBatText();
+
+ virtual Common::String getClassName() { return "SpeakerFLText"; }
+};
+
+class SpeakerQR : public AnimatedSpeaker {
+public:
+ SpeakerQR();
+
+ virtual Common::String getClassName() { return "SpeakerQR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerQU : public AnimatedSpeaker {
+public:
+ SpeakerQU();
+
+ virtual Common::String getClassName() { return "SpeakerQU"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerSKL : public AnimatedSpeaker {
+public:
+ SpeakerSKL();
+
+ virtual Common::String getClassName() { return "SpeakerQL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerQL : public AnimatedSpeaker {
+public:
+ SpeakerQL();
+
+ virtual Common::String getClassName() { return "SpeakerQL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerSR : public AnimatedSpeaker {
+public:
+ SceneObject _object3;
+public:
+ SpeakerSR();
+
+ virtual Common::String getClassName() { return "SpeakerSR"; }
+ void setText(const Common::String &msg);
+};
+
+class SpeakerSL : public AnimatedSpeaker {
+public:
+ SpeakerSL();
+
+ virtual Common::String getClassName() { return "SpeakerSL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerCR : public AnimatedSpeaker {
+public:
+ SpeakerCR();
+
+ virtual Common::String getClassName() { return "SpeakerCR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerMR : public AnimatedSpeaker {
+public:
+ SpeakerMR();
+
+ virtual Common::String getClassName() { return "SpeakerMR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerSAL : public AnimatedSpeaker {
+public:
+ SpeakerSAL();
+
+ virtual Common::String getClassName() { return "SpeakerSAL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerML : public AnimatedSpeaker {
+public:
+ SpeakerML();
+
+ virtual Common::String getClassName() { return "SpeakerML"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerCHFL : public AnimatedSpeaker {
+public:
+ SpeakerCHFL();
+
+ virtual Common::String getClassName() { return "SpeakerCHFL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerCHFR : public AnimatedSpeaker {
+public:
+ SpeakerCHFR();
+
+ virtual Common::String getClassName() { return "SpeakerCHFR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerPL : public AnimatedSpeaker {
+public:
+ SceneObject _object3;
+ SpeakerAction _speakerAction2;
+
+ SpeakerPL();
+
+ virtual Common::String getClassName() { return "SpeakerPL"; }
+ virtual void setText(const Common::String &msg);
+ virtual void removeText();
+};
+
+class SpeakerPR : public AnimatedSpeaker {
+public:
+ SceneObject _object3;
+ SpeakerAction _speakerAction2;
+
+ SpeakerPR();
+
+ virtual Common::String getClassName() { return "SpeakerPR"; }
+ virtual void setText(const Common::String &msg);
+ virtual void removeText();
+};
+
+class SpeakerCDR : public AnimatedSpeaker {
+public:
+ SpeakerCDR();
+
+ virtual Common::String getClassName() { return "SpeakerCDR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerCDL : public AnimatedSpeaker {
+public:
+ SpeakerCDL();
+
+ virtual Common::String getClassName() { return "SpeakerCDL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerFLL : public AnimatedSpeaker {
+public:
+ SpeakerFLL();
+
+ virtual Common::String getClassName() { return "SpeakerFLL"; }
+ virtual void setText(const Common::String &msg);
+};
+
+class SpeakerBatR : public AnimatedSpeaker {
+public:
+ SpeakerBatR();
+
+ virtual Common::String getClassName() { return "SpeakerBatR"; }
+ virtual void setText(const Common::String &msg);
+};
+
+} // End of namespace Ringworld
+
+} // End of namespace TsAGE
+
+#endif
Commit: 8b17e8a9b841bea6810c519143a7a3cd44521497
https://github.com/scummvm/scummvm/commit/8b17e8a9b841bea6810c519143a7a3cd44521497
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-08T03:41:10-07:00
Commit Message:
TSAGE: More core functionality needed for Blue Force
Changed paths:
engines/tsage/blue_force/blueforce_logic.cpp
engines/tsage/blue_force/blueforce_logic.h
engines/tsage/blue_force/blueforce_scenes1.cpp
engines/tsage/blue_force/blueforce_scenes1.h
engines/tsage/blue_force/blueforce_ui.cpp
engines/tsage/blue_force/blueforce_ui.h
engines/tsage/converse.cpp
engines/tsage/converse.h
engines/tsage/core.cpp
engines/tsage/core.h
engines/tsage/events.h
engines/tsage/globals.cpp
engines/tsage/globals.h
engines/tsage/module.mk
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 99e3c38..616a773 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -84,6 +84,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Outside Police Station
return new Scene300();
case 315:
+ // Inside Police Station
+ return new Scene315();
case 325:
case 330:
case 340:
@@ -360,7 +362,7 @@ void NamedObject::synchronize(Serializer &s) {
s.syncAsSint16LE(_useLineNum);
}
-void NamedObject::startAction(CursorType action) {
+void NamedObject::startAction(CursorType action, Event &event) {
bool handled = true;
switch (action) {
@@ -498,10 +500,13 @@ void FollowerObject::setup(SceneObject *object, int visage, int frameNum, int yD
/*--------------------------------------------------------------------------*/
SceneExt::SceneExt(): Scene() {
- warning("TODO: dword_503AA/dword_503AE/dword_53030");
+ _stripManager._onBegin = SceneExt::startStrip;
+ _stripManager._onEnd = SceneExt::endStrip;
- _field372 = 0;
- _field37A = 0;
+ _field372 = _field37A = 0;
+ _savedPlayerEnabled = false;
+ _savedUiEnabled = false;
+ _savedCanWalk = false;
_eventHandler = NULL;
_cursorVisage.setVisage(1, 8);
}
@@ -599,6 +604,35 @@ void SceneExt::gunDisplay() {
}
}
+void SceneExt::startStrip() {
+ SceneExt *scene = (SceneExt *)BF_GLOBALS._sceneManager._scene;
+ scene->_field372 = 1;
+ scene->_savedPlayerEnabled = BF_GLOBALS._player._enabled;
+
+ if (scene->_savedPlayerEnabled) {
+ scene->_savedUiEnabled = BF_GLOBALS._player._uiEnabled;
+ scene->_savedCanWalk = BF_GLOBALS._player._canWalk;
+ BF_GLOBALS._player.disableControl();
+
+ if (!BF_GLOBALS._v50696 && BF_GLOBALS._uiElements._active)
+ BF_GLOBALS._uiElements.hide();
+ }
+}
+
+void SceneExt::endStrip() {
+ SceneExt *scene = (SceneExt *)BF_GLOBALS._sceneManager._scene;
+ scene->_field372 = 0;
+
+ if (scene->_savedPlayerEnabled) {
+ BF_GLOBALS._player.enableControl();
+ BF_GLOBALS._player._uiEnabled = scene->_savedUiEnabled;
+ BF_GLOBALS._player._canWalk = scene->_savedCanWalk;
+
+ if (!BF_GLOBALS._v50696 && BF_GLOBALS._uiElements._active)
+ BF_GLOBALS._uiElements.show();
+ }
+}
+
/*--------------------------------------------------------------------------*/
GroupedScene::GroupedScene() {
@@ -644,145 +678,17 @@ void SceneHandlerExt::process(Event &event) {
return;
}
- SceneHandler::process(event);
-
- // TODO: All the new stuff from Blue Force
-}
-
-/*--------------------------------------------------------------------------*/
-
-VisualSpeaker::VisualSpeaker(): Speaker() {
- _textWidth = 312;
- _color1 = 19;
- _hideObjects = false;
- _removeObject1 = false;
- _removeObject2 = false;
- _field20E = 160;
- _fontNumber = 4;
- _color2 = 82;
- _offsetPos = Common::Point(4, 170);
- _numFrames = 0;
-}
-
-void VisualSpeaker::remove() {
- if (_removeObject2)
- _object2.remove();
- if (_removeObject1)
- _object1.remove();
-
- Speaker::remove();
-}
-
-void VisualSpeaker::synchronize(Serializer &s) {
- Speaker::synchronize(s);
-
- s.syncAsByte(_removeObject1);
- s.syncAsByte(_removeObject2);
- s.syncAsSint16LE(_field20C);
- s.syncAsSint16LE(_field20E);
- s.syncAsSint16LE(_numFrames);
- s.syncAsSint16LE(_offsetPos.x);
- s.syncAsSint16LE(_offsetPos.y);
-}
-
-void VisualSpeaker::proc12(Action *action) {
- Speaker::proc12(action);
- _textPos = Common::Point(_offsetPos.x + BF_GLOBALS._sceneManager._scene->_sceneBounds.left,
- _offsetPos.y + BF_GLOBALS._sceneManager._scene->_sceneBounds.top);
- _numFrames = 0;
-}
-
-void VisualSpeaker::setText(const Common::String &msg) {
- _objectList.draw();
- BF_GLOBALS._sceneObjects->draw();
-
- _sceneText._color1 = _color1;
- _sceneText._color2 = _color2;
- _sceneText._color3 = _color3;
- _sceneText._width = _textWidth;
- _sceneText._fontNumber = _fontNumber;
- _sceneText._textMode = _textMode;
- _sceneText.setup(msg);
-
- // Get the string bounds
- GfxFont f;
- f.setFontNumber(_fontNumber);
- Rect bounds;
- f.getStringBounds(msg.c_str(), bounds, _textWidth);
-
- // Set the position for the text
- switch (_textMode) {
- case ALIGN_LEFT:
- case ALIGN_JUSTIFIED:
- _sceneText.setPosition(_textPos);
- break;
- case ALIGN_CENTER:
- _sceneText.setPosition(Common::Point(_textPos.x + (_textWidth - bounds.width()) / 2, _textPos.y));
- break;
- case ALIGN_RIGHT:
- _sceneText.setPosition(Common::Point(_textPos.x + _textWidth - bounds.width(), _textPos.y));
- break;
- default:
- break;
- }
-
- // Ensure the text is in the foreground
- _sceneText.fixPriority(256);
-
- // Count the number of words (by spaces) in the string
- const char *s = msg.c_str();
- int spaceCount = 0;
- while (*s) {
- if (*s++ == ' ')
- ++spaceCount;
+ // If the strip proxy is currently being controlled by the strip manager,
+ // then pass all events to it first
+ if (BF_GLOBALS._stripProxy._action) {
+ BF_GLOBALS._stripProxy._action->process(event);
+ if (event.handled)
+ return;
}
- _numFrames = spaceCount * 3 + 2;
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerSutter::SpeakerSutter() {
- _speakerName = "SUTTER";
- _color1 = 20;
- _color2 = 22;
- _textMode = ALIGN_CENTER;
-}
-
-void SpeakerSutter::setText(const Common::String &msg) {
- _removeObject1 = _removeObject2 = true;
-
- _object1.postInit();
- _object1.setVisage(329);
- _object1.setStrip2(2);
- _object1.fixPriority(254);
- _object1.changeZoom(100);
- _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
- BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
-
- _object2.postInit();
- _object2.setVisage(329);
- _object2.setStrip2(1);
- _object2.fixPriority(255);
- _object1.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 45,
- BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166));
-
- VisualSpeaker::setText(msg);
- _object2.fixCountdown(8, _numFrames);
-}
-
-/*--------------------------------------------------------------------------*/
-
-SpeakerDoug::SpeakerDoug(): VisualSpeaker() {
- _color1 = 32;
- _speakerName = "DOUG";
-}
-
-/*--------------------------------------------------------------------------*/
+ SceneHandler::process(event);
-SpeakerJakeNoHead::SpeakerJakeNoHead(): VisualSpeaker() {
- _color1 = 13;
- _speakerName = "JAKE_NO_HEAD";
+ // TODO: All the new stuff from Blue Force
}
/*--------------------------------------------------------------------------*/
@@ -936,66 +842,66 @@ void BlueForceInvObjectList::reset() {
}
// Set up default inventory
- setObjectRoom(INV_COLT45, 1);
- setObjectRoom(INV_HANDCUFFS, 1);
- setObjectRoom(INV_AMMO_BELT, 1);
- setObjectRoom(INV_ID, 1);
+ setObjectScene(INV_COLT45, 1);
+ setObjectScene(INV_HANDCUFFS, 1);
+ setObjectScene(INV_AMMO_BELT, 1);
+ setObjectScene(INV_ID, 1);
// Set default room for other objects
- setObjectRoom(INV_TICKET_BOOK, 60);
- setObjectRoom(INV_MIRANDA_CARD, 60);
- setObjectRoom(INV_FOREST_RAP, 320);
- setObjectRoom(INV_GREEN_ID, 370);
- setObjectRoom(INV_BASEBALL_CARD, 840);
- setObjectRoom(INV_BOOKING_GREEN, 390);
- setObjectRoom(INV_FLARE, 355);
- setObjectRoom(INV_COBB_RAPP, 810);
- setObjectRoom(INV_22_BULLET, 415);
- setObjectRoom(INV_AUTO_RIFLE, 415);
- setObjectRoom(INV_WIG, 415);
- setObjectRoom(INV_FRANKIE_ID, 410);
- setObjectRoom(INV_TYRONE_ID, 410);
- setObjectRoom(INV_22_SNUB, 410);
- setObjectRoom(INV_FBI_TELETYPE, 320);
- setObjectRoom(INV_DA_NOTE, 320);
- setObjectRoom(INV_PRINT_OUT, 570);
- setObjectRoom(INV_WHAREHOUSE_KEYS, 360);
- setObjectRoom(INV_CENTER_PUNCH, 0);
- setObjectRoom(INV_TRANQ_GUN, 830);
- setObjectRoom(INV_HOOK, 350);
- setObjectRoom(INV_RAGS, 870);
- setObjectRoom(INV_JAR, 870);
- setObjectRoom(INV_SCREWDRIVER, 355);
- setObjectRoom(INV_D_FLOPPY, 570);
- setObjectRoom(INV_BLANK_DISK, 560);
- setObjectRoom(INV_STICK, 710);
- setObjectRoom(INV_CRATE1, 710);
- setObjectRoom(INV_CRATE2, 870);
- setObjectRoom(INV_SHOEBOX, 270);
- setObjectRoom(INV_BADGE, 560);
- setObjectRoom(INV_RENTAL_COUPON, 0);
- setObjectRoom(INV_NICKEL, 560);
- setObjectRoom(INV_LYLE_CARD, 270);
- setObjectRoom(INV_CARTER_NOTE, 830);
- setObjectRoom(INV_MUG_SHOT, 810);
- setObjectRoom(INV_CLIPPING, 810);
- setObjectRoom(INV_MICROFILM, 810);
- setObjectRoom(INV_WAVE_KEYS, 840);
- setObjectRoom(INV_RENTAL_KEYS, 840);
- setObjectRoom(INV_NAPKIN, 115);
- setObjectRoom(INV_DMV_PRINTOUT, 810);
- setObjectRoom(INV_FISHING_NET, 830);
- setObjectRoom(INV_9MM_BULLETS, 930);
- setObjectRoom(INV_SCHEDULE, 930);
- setObjectRoom(INV_GRENADES, 355);
- setObjectRoom(INV_GREENS_KNIFE, 370);
- setObjectRoom(INV_JACKET, 880);
- setObjectRoom(INV_DOG_WHISTLE, 880);
- setObjectRoom(INV_YELLOW_CORD, 910);
- setObjectRoom(INV_BLACK_CORD, 910);
-}
-
-void BlueForceInvObjectList::setObjectRoom(int objectNum, int sceneNumber) {
+ setObjectScene(INV_TICKET_BOOK, 60);
+ setObjectScene(INV_MIRANDA_CARD, 60);
+ setObjectScene(INV_FOREST_RAP, 320);
+ setObjectScene(INV_GREEN_ID, 370);
+ setObjectScene(INV_BASEBALL_CARD, 840);
+ setObjectScene(INV_BOOKING_GREEN, 390);
+ setObjectScene(INV_FLARE, 355);
+ setObjectScene(INV_COBB_RAP, 810);
+ setObjectScene(INV_22_BULLET, 415);
+ setObjectScene(INV_AUTO_RIFLE, 415);
+ setObjectScene(INV_WIG, 415);
+ setObjectScene(INV_FRANKIE_ID, 410);
+ setObjectScene(INV_TYRONE_ID, 410);
+ setObjectScene(INV_22_SNUB, 410);
+ setObjectScene(INV_FBI_TELETYPE, 320);
+ setObjectScene(INV_DA_NOTE, 320);
+ setObjectScene(INV_PRINT_OUT, 570);
+ setObjectScene(INV_WHAREHOUSE_KEYS, 360);
+ setObjectScene(INV_CENTER_PUNCH, 0);
+ setObjectScene(INV_TRANQ_GUN, 830);
+ setObjectScene(INV_HOOK, 350);
+ setObjectScene(INV_RAGS, 870);
+ setObjectScene(INV_JAR, 870);
+ setObjectScene(INV_SCREWDRIVER, 355);
+ setObjectScene(INV_D_FLOPPY, 570);
+ setObjectScene(INV_BLANK_DISK, 560);
+ setObjectScene(INV_STICK, 710);
+ setObjectScene(INV_CRATE1, 710);
+ setObjectScene(INV_CRATE2, 870);
+ setObjectScene(INV_SHOEBOX, 270);
+ setObjectScene(INV_BADGE, 560);
+ setObjectScene(INV_RENTAL_COUPON, 0);
+ setObjectScene(INV_NICKEL, 560);
+ setObjectScene(INV_LYLE_CARD, 270);
+ setObjectScene(INV_CARTER_NOTE, 830);
+ setObjectScene(INV_MUG_SHOT, 810);
+ setObjectScene(INV_CLIPPING, 810);
+ setObjectScene(INV_MICROFILM, 810);
+ setObjectScene(INV_WAVE_KEYS, 840);
+ setObjectScene(INV_RENTAL_KEYS, 840);
+ setObjectScene(INV_NAPKIN, 115);
+ setObjectScene(INV_DMV_PRINTOUT, 810);
+ setObjectScene(INV_FISHING_NET, 830);
+ setObjectScene(INV_9MM_BULLETS, 930);
+ setObjectScene(INV_SCHEDULE, 930);
+ setObjectScene(INV_GRENADES, 355);
+ setObjectScene(INV_GREENS_KNIFE, 370);
+ setObjectScene(INV_JACKET, 880);
+ setObjectScene(INV_DOG_WHISTLE, 880);
+ setObjectScene(INV_YELLOW_CORD, 910);
+ setObjectScene(INV_BLACK_CORD, 910);
+}
+
+void BlueForceInvObjectList::setObjectScene(int objectNum, int sceneNumber) {
// Find the appropriate object
int num = objectNum;
SynchronizedList<InvObject *>::iterator i = _itemList.begin();
@@ -1010,6 +916,8 @@ void BlueForceInvObjectList::setObjectRoom(int objectNum, int sceneNumber) {
BF_GLOBALS._uiElements.updateInventory();
}
+/*--------------------------------------------------------------------------*/
+
} // End of namespace BlueForce
} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h
index c4c1b22..b2cab69 100644
--- a/engines/tsage/blue_force/blueforce_logic.h
+++ b/engines/tsage/blue_force/blueforce_logic.h
@@ -35,7 +35,7 @@ namespace BlueForce {
using namespace TsAGE;
-#define BLUE_INVENTORY (*((::TsAGE::BlueForce::BlueForceInvObjectList *)_globals->_inventory))
+#define BF_INVENTORY (*((::TsAGE::BlueForce::BlueForceInvObjectList *)_globals->_inventory))
class BlueForceGame: public Game {
public:
@@ -107,7 +107,7 @@ public:
virtual Common::String getClassName() { return "NamedObject"; }
virtual void synchronize(Serializer &s);
virtual void postInit(SceneObjectList *OwnerList = NULL);
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
void setup(int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode, SceneItem *item);
};
@@ -137,15 +137,22 @@ public:
void setup(SceneObject *object, int visage, int frameNum, int yDiff);
};
-enum ExitFrame { EXITFRAME_NE = 2, EXITFRAME_E = 3 };
+enum ExitFrame { EXITFRAME_N = 1, EXITFRAME_NE = 2, EXITFRAME_E = 3, EXITFRAME_SE = 4,
+ EXITFRAME_S = 5, EXITFRAME_SW = 6, EXITFRAME_W = 7, EXITFRAME_NW = 8 };
class SceneExt: public Scene {
private:
void gunDisplay();
+ static void startStrip();
+ static void endStrip();
public:
AObjectArray _timerList, _objArray2;
int _field372;
+ bool _savedPlayerEnabled;
+ bool _savedUiEnabled;
+ bool _savedCanWalk;
int _field37A;
+
EventHandler *_eventHandler;
Visage _cursorVisage;
@@ -182,46 +189,6 @@ public:
virtual void process(Event &event);
};
-class VisualSpeaker: public Speaker {
-public:
- NamedObject _object1;
- CountdownObject _object2;
- bool _removeObject1, _removeObject2;
- int _field20C, _field20E;
- int _numFrames;
- Common::Point _offsetPos;
-public:
- VisualSpeaker();
-
- virtual Common::String getClassName() { return "VisualSpeaker"; }
- virtual void synchronize(Serializer &s);
- virtual void remove();
- virtual void proc12(Action *action);
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerSutter: public VisualSpeaker {
-public:
- SpeakerSutter();
-
- virtual Common::String getClassName() { return "SpeakerSutter"; }
- virtual void setText(const Common::String &msg);
-};
-
-class SpeakerDoug: public VisualSpeaker {
-public:
- SpeakerDoug();
-
- virtual Common::String getClassName() { return "SpeakerDoug"; }
-};
-
-class SpeakerJakeNoHead: public VisualSpeaker {
-public:
- SpeakerJakeNoHead();
-
- virtual Common::String getClassName() { return "SpeakerJakeNoHead"; }
-};
-
class BlueForceInvObjectList : public InvObjectList {
public:
InvObject _none;
@@ -295,7 +262,7 @@ public:
BlueForceInvObjectList();
void reset();
- void setObjectRoom(int objectNum, int sceneNumber);
+ void setObjectScene(int objectNum, int sceneNumber);
virtual Common::String getClassName() { return "BlueForceInvObjectList"; }
};
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index acb1592..3ff8296 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -432,7 +432,7 @@ void Scene109::signal() {
*
*--------------------------------------------------------------------------*/
-void Scene190::Object4::startAction(CursorType action) {
+void Scene190::Object4::startAction(CursorType action, Event &event) {
Scene190 *scene = (Scene190 *)BF_GLOBALS._sceneManager._scene;
switch (action) {
@@ -445,14 +445,14 @@ void Scene190::Object4::startAction(CursorType action) {
break;
}
default:
- NamedObject::startAction(action);
+ NamedObject::startAction(action, event);
break;
}
}
/*--------------------------------------------------------------------------*/
-void Scene190::Item1::startAction(CursorType action) {
+void Scene190::Item1::startAction(CursorType action, Event &event) {
Scene190 *scene = (Scene190 *)BF_GLOBALS._sceneManager._scene;
switch (action) {
@@ -460,12 +460,12 @@ void Scene190::Item1::startAction(CursorType action) {
scene->setAction(&scene->_action1);
break;
default:
- NamedHotspot::startAction(action);
+ NamedHotspot::startAction(action, event);
break;
}
}
-void Scene190::Item2::startAction(CursorType action) {
+void Scene190::Item2::startAction(CursorType action, Event &event) {
Scene190 *scene = (Scene190 *)BF_GLOBALS._sceneManager._scene;
switch (action) {
@@ -473,12 +473,12 @@ void Scene190::Item2::startAction(CursorType action) {
scene->_stripManager.start(1900, scene);
break;
default:
- NamedHotspot::startAction(action);
+ NamedHotspot::startAction(action, event);
break;
}
}
-void Scene190::Exit::startAction(CursorType action) {
+void Scene190::Exit::startAction(CursorType action, Event &event) {
Scene190 *scene = (Scene190 *)BF_GLOBALS._sceneManager._scene;
Common::Point pt(316, 91);
diff --git a/engines/tsage/blue_force/blueforce_scenes1.h b/engines/tsage/blue_force/blueforce_scenes1.h
index 3f4d1cb..6eeeff9 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.h
+++ b/engines/tsage/blue_force/blueforce_scenes1.h
@@ -128,21 +128,21 @@ class Scene190: public SceneExt {
/* Objects */
class Object4: public NamedObject {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
/* Items */
class Item1: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Item2: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Exit: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
/* Actions */
diff --git a/engines/tsage/blue_force/blueforce_ui.cpp b/engines/tsage/blue_force/blueforce_ui.cpp
index 8fc6860..81411b1 100644
--- a/engines/tsage/blue_force/blueforce_ui.cpp
+++ b/engines/tsage/blue_force/blueforce_ui.cpp
@@ -30,6 +30,13 @@ namespace TsAGE {
namespace BlueForce {
+void StripProxy::process(Event &event) {
+ if (_action)
+ _action->process(event);
+}
+
+/*--------------------------------------------------------------------------*/
+
void UIElement::synchronize(Serializer &s) {
AltSceneObject::synchronize(s);
s.syncAsSint16LE(_field88);
@@ -85,12 +92,16 @@ void UIQuestion::setEnabled(bool flag) {
void UIScore::postInit(SceneObjectList *OwnerList) {
int xp = 266;
_digit3.setup(1, 6, 1, xp, 180, 255);
+ _digit3.reposition();
xp += 7;
_digit2.setup(1, 6, 1, xp, 180, 255);
+ _digit2.reposition();
xp += 7;
_digit1.setup(1, 6, 1, xp, 180, 255);
+ _digit1.reposition();
xp += 7;
_digit0.setup(1, 6, 1, xp, 180, 255);
+ _digit0.reposition();
}
void UIScore::draw() {
@@ -355,7 +366,7 @@ void UIElements::updateInventory() {
// Loop through the inventory objects
SynchronizedList<InvObject *>::iterator i;
int objIndex = 0;
- for (i = BLUE_INVENTORY._itemList.begin(); i != BLUE_INVENTORY._itemList.end(); ++i, ++objIndex) {
+ for (i = BF_INVENTORY._itemList.begin(); i != BF_INVENTORY._itemList.end(); ++i, ++objIndex) {
InvObject *obj = *i;
// Check whether the object is in any of the four inventory slots
@@ -396,6 +407,15 @@ void UIElements::updateInvList() {
}
}
+/**
+ * Set the game score
+ */
+void UIElements::addScore(int amount) {
+ _scoreValue += amount;
+ BF_GLOBALS._sound2.play(0);
+ updateInventory();
+}
+
} // End of namespace BlueForce
} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_ui.h b/engines/tsage/blue_force/blueforce_ui.h
index 766f7dd..8dae914 100644
--- a/engines/tsage/blue_force/blueforce_ui.h
+++ b/engines/tsage/blue_force/blueforce_ui.h
@@ -33,6 +33,11 @@ namespace BlueForce {
using namespace TsAGE;
+class StripProxy: public EventHandler {
+public:
+ virtual void process(Event &event);
+};
+
class UIElement: public AltSceneObject {
public:
int _field88;
@@ -132,6 +137,7 @@ public:
void setup(const Common::Point &pt);
void updateInventory();
+ void addScore(int amount);
};
} // End of namespace BlueForce
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp
index af9bca2..32a4861 100644
--- a/engines/tsage/converse.cpp
+++ b/engines/tsage/converse.cpp
@@ -40,6 +40,7 @@ SequenceManager::SequenceManager() : Action() {
_field26 = 0;
_objectIndex = 0;
_keepActive = false;
+ _onCallback = NULL;
setup();
}
@@ -295,7 +296,8 @@ void SequenceManager::signal() {
case 37:
v1 = getNextValue();
v2 = getNextValue();
- warning("TODO: dword_53030(%d,%d)", v1, v2);
+ if (_onCallback)
+ _onCallback(v1, v2);
break;
case 38: {
int resNum = getNextValue();
@@ -558,6 +560,8 @@ void Obj44::synchronize(Serializer &s) {
StripManager::StripManager() {
_callbackObject = NULL;
_activeSpeaker = NULL;
+ _onBegin = NULL;
+ _onEnd = NULL;
reset();
}
@@ -565,6 +569,8 @@ StripManager::~StripManager() {
}
void StripManager::start(int stripNum, EventHandler *owner, StripCallback *callback) {
+ if (_onBegin)
+ _onBegin();
reset();
_stripNum = stripNum;
@@ -678,6 +684,9 @@ void StripManager::remove() {
_globals->_sceneManager._scene->loadScene(_sceneNumber);
}
+ if (_onEnd)
+ _onEnd();
+
Action::remove();
}
diff --git a/engines/tsage/converse.h b/engines/tsage/converse.h
index e263a12..f82c07a 100644
--- a/engines/tsage/converse.h
+++ b/engines/tsage/converse.h
@@ -34,6 +34,8 @@ public:
virtual void stripCallback(int v) = 0;
};
+typedef void (*SequenceCallback)(int v1, int v2);
+
class SequenceManager : public Action {
private:
void setup();
@@ -54,6 +56,7 @@ public:
SceneObject *_sceneObject;
SceneObject *_objectList[6];
ASound _soundHandler;
+ SequenceCallback _onCallback;
public:
SequenceManager();
@@ -187,6 +190,8 @@ public:
virtual void synchronize(Serializer &s);
};
+typedef void (*StripProc)();
+
class StripManager : public Action {
private:
void reset();
@@ -208,6 +213,8 @@ public:
int _field2E8;
Common::Array<Obj44> _obj44List;
Common::Array<byte> _script;
+ StripProc _onBegin;
+ StripProc _onEnd;
public:
StripManager();
virtual ~StripManager();
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 21d5390..7dff8c0 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -106,6 +106,19 @@ int InvObjectList::indexOf(InvObject *obj) const {
return -1;
}
+InvObject *InvObjectList::getItem(int objectNum) {
+ SynchronizedList<InvObject *>::const_iterator i = _itemList.begin();
+ while (objectNum-- > 0)
+ ++i;
+
+ return *i;
+}
+
+int InvObjectList::getObjectScene(int objectNum) {
+ InvObject *obj = getItem(objectNum);
+ return obj->_sceneNumber;
+}
+
/*--------------------------------------------------------------------------*/
void EventHandler::dispatch() {
@@ -3781,7 +3794,7 @@ void SceneHandler::process(Event &event) {
if (i != _globals->_sceneItems.end()) {
// Pass the action to the item
- (*i)->startAction(_globals->_events.getCursor());
+ (*i)->startAction(_globals->_events.getCursor(), event);
event.handled = _globals->_events.getCursor() != CURSOR_WALK;
if (_globals->_player._uiEnabled && _globals->_player._canWalk &&
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index 5496087..0ea9936 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -79,6 +79,8 @@ public:
InvObjectList();
int indexOf(InvObject *obj) const;
+ InvObject *getItem(int objectNum);
+ int getObjectScene(int objectNum);
virtual Common::String getClassName() { return "InvObjectList"; }
virtual void synchronize(Serializer &s);
@@ -413,7 +415,7 @@ public:
virtual Common::String getClassName() { return "SceneItem"; }
virtual void remove();
virtual void destroy() {}
- virtual void startAction(CursorType action) { doAction(action); }
+ virtual void startAction(CursorType action, Event &event) { doAction(action); }
virtual void doAction(int action);
bool contains(const Common::Point &pt);
@@ -820,6 +822,7 @@ public:
assert((idx >= 1) && (idx <= (int)_regionList.size()));
return _regionList[idx - 1];
}
+ void proc1(int v) { warning("TODO: WalkRegions::proc1"); }
};
/*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/events.h b/engines/tsage/events.h
index ee77c6f..3680250 100644
--- a/engines/tsage/events.h
+++ b/engines/tsage/events.h
@@ -68,7 +68,7 @@ enum CursorType {
INV_NONE = 0, INV_COLT45 = 1, INV_AMMO_CLIP = 2, INV_SPARE_CLIP = 3, INV_HANDCUFFS = 4,
INV_GREENS_GUN = 5, INV_TICKET_BOOK = 6, INV_MIRANDA_CARD = 7, INV_FOREST_RAP = 8,
INV_GREEN_ID = 9, INV_BASEBALL_CARD = 10, INV_BOOKING_GREEN = 11, INV_FLARE = 12,
- INV_COBB_RAPP = 13, INV_22_BULLET = 14, INV_AUTO_RIFLE = 15, INV_WIG = 16, INV_FRANKIE_ID = 17,
+ INV_COBB_RAP = 13, INV_22_BULLET = 14, INV_AUTO_RIFLE = 15, INV_WIG = 16, INV_FRANKIE_ID = 17,
INV_TYRONE_ID = 18, INV_22_SNUB = 19, INV_BOOKING_FRANKIE = 21, INV_BOOKING_GANG = 22,
INV_FBI_TELETYPE = 23, INV_DA_NOTE = 24, INV_PRINT_OUT = 25, INV_WHAREHOUSE_KEYS = 26,
INV_CENTER_PUNCH = 27, INV_TRANQ_GUN = 28, INV_HOOK = 29, INV_RAGS = 30, INV_JAR = 31,
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index c1b4285..050ad49 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -214,6 +214,7 @@ void BlueForceGlobals::reset() {
_v4CEA8 = 0;
_v4CF9E = 0;
_v4E238 = 0;
+ _v50696 = 0;
_v501FC = 0;
_v51C42 = 0;
_clip1Bullets = 8;
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index 3148225..9938802 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -173,6 +173,7 @@ public:
int _driveToScene;
int _v4CF9E;
int _v4E238;
+ int _v50696;
int _v501FC;
int _v51C42;
int _v51C44;
@@ -180,6 +181,7 @@ public:
Bookmark _bookmark;
int _mapLocationId;
int _clip1Bullets, _clip2Bullets;
+ StripProxy _stripProxy;
BlueForceGlobals();
void reset();
diff --git a/engines/tsage/module.mk b/engines/tsage/module.mk
index ef71533..cd42b5b 100644
--- a/engines/tsage/module.mk
+++ b/engines/tsage/module.mk
@@ -6,6 +6,7 @@ MODULE_OBJS := \
blue_force/blueforce_scenes0.o \
blue_force/blueforce_scenes1.o \
blue_force/blueforce_scenes3.o \
+ blue_force/blueforce_speakers.o \
blue_force/blueforce_ui.o \
converse.o \
core.o \
@@ -27,6 +28,7 @@ MODULE_OBJS := \
ringworld/ringworld_scenes6.o \
ringworld/ringworld_scenes8.o \
ringworld/ringworld_scenes10.o \
+ ringworld/ringworld_speakers.o \
saveload.o \
scenes.o \
sound.o \
Commit: 6ef18187de22de775c5e440e57ca62648be865b2
https://github.com/scummvm/scummvm/commit/6ef18187de22de775c5e440e57ca62648be865b2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-08T03:42:14-07:00
Commit Message:
TSAGE: Implemented Scene 315 (Inside Police Station)
Changed paths:
engines/tsage/blue_force/blueforce_scenes3.cpp
engines/tsage/blue_force/blueforce_scenes3.h
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index d9d7590..f52b3b5 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -36,18 +36,18 @@ namespace BlueForce {
*
*--------------------------------------------------------------------------*/
-void Scene300::Object::startAction(CursorType action) {
+void Scene300::Object::startAction(CursorType action, Event &event) {
if (action == CURSOR_TALK) {
Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
scene->_stripManager.start(_stripNumber, scene);
} else {
- NamedObject::startAction(action);
+ NamedObject::startAction(action, event);
}
}
-void Scene300::Object17::startAction(CursorType action) {
+void Scene300::Object17::startAction(CursorType action, Event &event) {
if ((action != CURSOR_USE) || !BF_GLOBALS.getFlag(3)) {
- NamedObject::startAction(action);
+ NamedObject::startAction(action, event);
} else if ((BF_GLOBALS._dayNumber != 2) || (BF_GLOBALS._bookmark >= bEndDayOne)) {
Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
setAction(&scene->_action4);
@@ -56,7 +56,7 @@ void Scene300::Object17::startAction(CursorType action) {
}
}
-void Scene300::Item1::startAction(CursorType action) {
+void Scene300::Item1::startAction(CursorType action, Event &event) {
if (action == CURSOR_USE) {
Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
BF_GLOBALS._player.disableControl();
@@ -64,24 +64,24 @@ void Scene300::Item1::startAction(CursorType action) {
scene->setAction(&scene->_sequenceManager1, scene, 305, &BF_GLOBALS._player,
&scene->_object8, NULL);
} else {
- NamedHotspot::startAction(action);
+ NamedHotspot::startAction(action, event);
}
}
-void Scene300::Item2::startAction(CursorType action) {
+void Scene300::Item2::startAction(CursorType action, Event &event) {
if ((action == CURSOR_LOOK) || (action == CURSOR_USE)) {
Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
scene->setAction(&scene->_sequenceManager1, scene, 304, &scene->_object11, NULL);
} else {
- NamedHotspot::startAction(action);
+ NamedHotspot::startAction(action, event);
}
}
-void Scene300::Item14::startAction(CursorType action) {
+void Scene300::Item14::startAction(CursorType action, Event &event) {
ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 151, 54);
}
-void Scene300::Item15::startAction(CursorType action) {
+void Scene300::Item15::startAction(CursorType action, Event &event) {
ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 316, 90);
}
@@ -621,6 +621,724 @@ void Scene300::setup() {
_field2762 = 1;
}
+/*--------------------------------------------------------------------------
+ * Scene 315 - Inside Police Station
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene315::Item1::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+ scene->_currentCursor = action;
+
+ switch (action) {
+ case CURSOR_USE:
+ if (scene->_field1B60 || scene->_field1B64)
+ SceneItem::display2(320, 51);
+ else
+ NamedHotspot::startAction(action, event);
+ break;
+ case CURSOR_TALK:
+ if ((BF_GLOBALS._dayNumber == 2) && (BF_GLOBALS._sceneManager._previousScene == 325))
+ NamedHotspot::startAction(action, event);
+ else {
+ if (!BF_GLOBALS.getFlag(onDuty))
+ scene->_stripNumber = 3172;
+ else if (BF_GLOBALS.getFlag(fTalkedToBarry))
+ scene->_stripNumber = 3166;
+ else if (BF_GLOBALS.getFlag(fTalkedToLarry))
+ scene->_stripNumber = 3164;
+ else
+ scene->_stripNumber = 3165;
+
+ scene->setAction(&scene->_action1);
+ BF_GLOBALS.setFlag(fTalkedToBarry);
+ }
+ break;
+ case INV_GREENS_GUN:
+ case INV_GREENS_KNIFE:
+ BF_GLOBALS._player.disableControl();
+ if (BF_INVENTORY._bookingGreen._sceneNumber != 390) {
+ scene->_stripNumber = 3174;
+ scene->setAction(&scene->_action1);
+ } else {
+ ++scene->_field1B62;
+ scene->_stripNumber = (action == INV_GREENS_GUN) ? 3168 : 0;
+ scene->_sceneMode = 3152;
+ scene->setAction(&scene->_sequenceManager, scene, 3153, 1888, NULL);
+ }
+ case INV_FOREST_RAP:
+ BF_GLOBALS._player.disableControl();
+ scene->_stripNumber = BF_GLOBALS.getFlag(onDuty) ? 3178 : 3173;
+ scene->setAction(&scene->_action1);
+ break;
+ case INV_GREEN_ID:
+ case INV_FRANKIE_ID:
+ case INV_TYRONE_ID:
+ BF_GLOBALS._player.disableControl();
+ scene->_stripNumber = 3175;
+ scene->setAction(&scene->_action1);
+ break;
+ case INV_BOOKING_GREEN:
+ case INV_BOOKING_FRANKIE:
+ case INV_BOOKING_GANG:
+ BF_GLOBALS._player.disableControl();
+ scene->_stripNumber = 3167;
+ scene->setAction(&scene->_action1);
+ break;
+ case INV_COBB_RAP:
+ if (BF_INVENTORY._mugshot._sceneNumber == 1)
+ NamedHotspot::startAction(action, event);
+ else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 3169;
+ if (BF_GLOBALS._dayNumber > 2)
+ scene->_stripNumber = 3176;
+ else if (BF_GLOBALS.getFlag(onDuty))
+ scene->_stripNumber = 3177;
+ else
+ scene->_stripNumber = 3170;
+ scene->setAction(&scene->_action1);
+ }
+ break;
+ case INV_22_BULLET:
+ case INV_AUTO_RIFLE:
+ case INV_WIG:
+ case INV_22_SNUB:
+ BF_GLOBALS._player.disableControl();
+ if ((BF_GLOBALS.getFlag(fCuffedFrankie) && (BF_INVENTORY._bookingFrankie._sceneNumber == 0)) ||
+ (!BF_GLOBALS.getFlag(fCuffedFrankie) && (BF_INVENTORY._bookingGang._sceneNumber == 0))) {
+ scene->_stripNumber = 3174;
+ scene->setAction(&scene->_action1);
+ } else {
+ if (!scene->_field1B6C & (scene->_field1B66 == 1)) {
+ scene->_field1B6C = 1;
+ scene->_stripNumber = 3169;
+ } else {
+ scene->_stripNumber = 0;
+ }
+
+ scene->_sceneMode = 3153;
+ scene->setAction(&scene->_sequenceManager, scene, 3153, &BF_GLOBALS._player, NULL);
+ }
+ break;
+ default:
+ NamedHotspot::startAction(action, event);
+ break;
+ }
+}
+
+void Scene315::Item2::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case INV_GREENS_GUN:
+ case INV_22_BULLET:
+ case INV_AUTO_RIFLE:
+ case INV_WIG:
+ case INV_22_SNUB:
+ SceneItem::display2(315, 30);
+ break;
+ case INV_GREEN_ID:
+ case INV_FRANKIE_ID:
+ case INV_TYRONE_ID:
+ BF_GLOBALS._player.disableControl();
+ scene->_stripNumber = 3175;
+ scene->setAction(&scene->_action1);
+ break;
+ case INV_BOOKING_GREEN:
+ case INV_BOOKING_FRANKIE:
+ case INV_BOOKING_GANG:
+ if (action == INV_BOOKING_GREEN)
+ ++scene->_field1B62;
+ else
+ ++scene->_field1B66;
+
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 12;
+ scene->setAction(&scene->_sequenceManager, scene, 3154, &BF_GLOBALS._player, NULL);
+ break;
+ default:
+ NamedHotspot::startAction(action, event);
+ break;
+ }
+}
+
+void Scene315::Item4::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ if (action == CURSOR_LOOK) {
+ BF_GLOBALS._player.disableControl();
+ BF_GLOBALS._player.addMover(NULL);
+ scene->_object9.postInit();
+ scene->_object9.hide();
+ scene->_sceneMode = 3167;
+ scene->setAction(&scene->_sequenceManager, scene, 3167, &scene->_object9, this, NULL);
+ } else {
+ NamedHotspot::startAction(action, event);
+ }
+}
+
+void Scene315::Item5::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ if (action == CURSOR_LOOK) {
+ BF_GLOBALS._player.addMover(NULL);
+ scene->_stripManager.start(3154, &BF_GLOBALS._stripProxy);
+ } else {
+ NamedHotspot::startAction(action, event);
+ }
+}
+
+void Scene315::Item14::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ if ((action == INV_COLT45) && BF_GLOBALS.getFlag(onDuty)) {
+ if (!BF_GLOBALS.getFlag(onDuty))
+ SceneItem::display2(315, 27);
+ else if (BF_GLOBALS.getHasBullets()) {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 3162;
+ scene->setAction(&scene->_sequenceManager, scene, 3162, &BF_GLOBALS._player, NULL);
+ } else if (BF_GLOBALS.getFlag(fGunLoaded))
+ SceneItem::display2(315, 46);
+ else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 3159;
+ scene->setAction(&scene->_sequenceManager, scene, 3159, &BF_GLOBALS._player, NULL);
+ }
+ } else {
+ NamedHotspot::startAction(action, event);
+ }
+}
+
+void Scene315::Item15::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ if (action != CURSOR_USE)
+ NamedHotspot::startAction(action, event);
+ else if (BF_INVENTORY._forestRap._sceneNumber == 1)
+ SceneItem::display2(315, 37);
+ else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 3158;
+ scene->setAction(&scene->_sequenceManager, scene, 3158, &BF_GLOBALS._player, NULL);
+ }
+}
+
+void Scene315::Item16::startAction(CursorType action, Event &event) {
+ ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 190, 75);
+}
+
+void Scene315::Item17::startAction(CursorType action, Event &event) {
+ ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, event.mousePos.x, event.mousePos.y);
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene315::Object1::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_LOOK:
+ scene->_stripManager.start(3157, &BF_GLOBALS._stripProxy);
+ break;
+ case CURSOR_USE:
+ if (!BF_GLOBALS.getFlag(fGotPointsForCleaningGun)) {
+ BF_GLOBALS._uiElements.addScore(10);
+ BF_GLOBALS.setFlag(fGotPointsForCleaningGun);
+ }
+ BF_GLOBALS._player.addMover(NULL);
+ scene->_stripManager.start(3159, &BF_GLOBALS._stripProxy);
+ break;
+ default:
+ NamedObject::startAction(action, event);
+ break;
+ }
+}
+
+void Scene315::Object2::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_LOOK:
+ BF_GLOBALS._player.disableControl();
+ scene->_object9.postInit();
+ scene->_object9.hide();
+ scene->_sceneMode = 3157;
+ scene->setAction(&scene->_sequenceManager, scene, 3157, &BF_GLOBALS._player, &scene->_object9, NULL);
+ break;
+ case CURSOR_USE:
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 3156;
+ scene->setAction(&scene->_sequenceManager, scene, BF_GLOBALS.getFlag(onDuty) ? 3156 : 3168,
+ this, NULL);
+ break;
+ default:
+ NamedObject::startAction(action, event);
+ break;
+ }
+}
+
+void Scene315::Object3::startAction(CursorType action, Event &event) {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_LOOK:
+ BF_GLOBALS._player.addMover(NULL);
+ scene->_stripManager.start(3156, &BF_GLOBALS._stripProxy);
+ break;
+ case CURSOR_USE:
+ if (!BF_GLOBALS.getFlag(fGotPointsForMemo)) {
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_GLOBALS.setFlag(fGotPointsForMemo);
+ }
+
+ BF_GLOBALS._player.addMover(NULL);
+ scene->_stripManager.start(3158, &BF_GLOBALS._stripProxy);
+ break;
+ default:
+ NamedObject::startAction(action, event);
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene315::Action1::signal() {
+ Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ BF_GLOBALS._player.disableControl();
+ ADD_PLAYER_MOVER_THIS(BF_GLOBALS._player, 128, 128);
+ break;
+ case 1:
+ BF_GLOBALS._player.changeAngle(315);
+ setDelay(2);
+ break;
+ case 2:
+ scene->_stripManager.start(scene->_stripNumber, this);
+ break;
+ case 3:
+ if (scene->_sceneMode == 3169) {
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_INVENTORY._mugshot._sceneNumber = 1;
+ }
+
+ remove();
+ BF_GLOBALS._player.enableControl();
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+Scene315::Scene315() {
+ BF_GLOBALS._v51C44 = 1;
+ _field1B6C = _field139C = 0;
+ if (BF_GLOBALS._dayNumber == 0)
+ BF_GLOBALS._dayNumber = 1;
+
+ BF_GLOBALS.clearFlag(fCanDrawGun);
+ _field1B68 = true;
+ _field1B6A = false;
+ _field1B60 = _field1B62 = 0;
+ _field1B64 = _field1B66 = 0;
+}
+
+void Scene315::synchronize(Serializer &s) {
+ s.syncAsSint16LE(_field1390);
+ s.syncAsSint16LE(_stripNumber);
+ s.syncAsSint16LE(_field1398);
+ s.syncAsSint16LE(_field1B60);
+ s.syncAsSint16LE(_field1B62);
+ s.syncAsSint16LE(_field1B64);
+ s.syncAsSint16LE(_field1B66);
+ s.syncAsSint16LE(_field1B6C);
+ s.syncAsSint16LE(_field139C);
+ s.syncAsByte(_field1B68);
+ s.syncAsByte(_field1B6A);
+ s.syncAsSint16LE(_currentCursor);
+}
+
+void Scene315::postInit(SceneObjectList *OwnerList) {
+ loadScene(315);
+
+ if (BF_GLOBALS._sceneManager._previousScene != 325)
+ BF_GLOBALS._sound1.fadeSound(11);
+
+ setZoomPercents(67, 72, 124, 100);
+
+ _stripManager.addSpeaker(&_gameTextSpeaker);
+ _stripManager.addSpeaker(&_sutterSpeaker);
+ _stripManager.addSpeaker(&_harrisonSpeaker);
+ _stripManager.addSpeaker(&_jakeJacketSpeaker);
+ _stripManager.addSpeaker(&_jakeUniformSpeaker);
+ _stripManager.addSpeaker(&_jailerSpeaker);
+
+ _object8.postInit();
+ _object8.setVisage(315);
+ _object8.setPosition(Common::Point(272, 69));
+
+ if (BF_GLOBALS._bookmark >= bLauraToParamedics) {
+ _object3.postInit();
+ _object3.setVisage(315);
+ _object3.setPosition(Common::Point(167, 53));
+ _object3.setStrip(4);
+ _object3.setFrame(4);
+ _object3.fixPriority(82);
+ _object3.setup(315, -1, -1, -1, 1, NULL);
+ }
+
+ if ((BF_GLOBALS._dayNumber == 1) && (BF_GLOBALS._bookmark >= bLauraToParamedics)) {
+ _object1.postInit();
+ _object1.setVisage(315);
+ _object1.setPosition(Common::Point(156, 51));
+ _object1.setStrip(4);
+ _object1.setFrame(2);
+ _object1.fixPriority(82);
+ _object1.setup(315, -1, -1, -1, 1, NULL);
+ } else if ((BF_INVENTORY._daNote._sceneNumber != 1) && (BF_GLOBALS._dayNumber < 3)) {
+ _object2.postInit();
+ _object2.setVisage(315);
+ _object2.setStrip(3);
+ _object2.setFrame(2);
+ _object2.setPosition(Common::Point(304, 31));
+ _object2.fixPriority(70);
+ _object2.setup(315, 3, 4, -1, 1, NULL);
+ }
+
+ _item2.setup(12, 315, 35, -1, 36, 1);
+ _item5.setup(3, 315, -1, -1, -1, 1);
+ _item1.setup(4, 315, 10, 11, 12, 1);
+ _item3.setup(2, 315, 0, 1, 2, 1);
+ _item4.setup(Rect(190, 17, 208, 30), 315, -1, -1, -1, 1, NULL);
+ _item16.setup(Rect(184, 31, 211, 80), 315, -1, -1, -1, 1, NULL);
+ _item17.setup(Rect(0, 157, 190, 167), 315, -1, -1, -1, 1, NULL);
+
+ if (!BF_GLOBALS.getFlag(onDuty) && ((BF_GLOBALS._bookmark == bNone) || (BF_GLOBALS._bookmark == bLyleStoppedBy))) {
+ _field1398 = 1;
+ BF_GLOBALS.setFlag(onDuty);
+ } else {
+ _field1398 = 0;
+ }
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player.changeZoom(-1);
+ BF_GLOBALS._player.disableControl();
+
+ if ((BF_GLOBALS._dayNumber != 2) || (BF_GLOBALS._sceneManager._previousScene != 325)) {
+ _object4.postInit();
+ _object4.setVisage(316);
+ _object4.setPosition(Common::Point(99, 82));
+ _object4.fixPriority(95);
+
+ _object5.postInit();
+ _object5.setVisage(395);
+ _object5.setStrip(2);
+ _object5.setPosition(Common::Point(96, 86));
+ }
+
+ // Set up evidence objects in inventory
+ if (BF_INVENTORY._bookingGreen.inInventory())
+ ++_field1B60;
+ if (BF_INVENTORY._greensGun.inInventory())
+ ++_field1B60;
+ if (BF_INVENTORY._greensKnife.inInventory())
+ ++_field1B60;
+
+ if (BF_INVENTORY._bullet22.inInventory())
+ ++_field1B64;
+ if (BF_INVENTORY._autoRifle.inInventory())
+ ++_field1B64;
+ if (BF_INVENTORY._wig.inInventory())
+ ++_field1B64;
+ if (BF_INVENTORY._bookingFrankie.inInventory())
+ ++_field1B64;
+ if (BF_INVENTORY._bookingGang.inInventory())
+ ++_field1B64;
+ if (BF_INVENTORY._snub22.inInventory())
+ ++_field1B64;
+
+ switch (BF_GLOBALS._sceneManager._previousScene) {
+ case 190:
+ if (_field1398)
+ _field1B6A = true;
+ _sceneMode = BF_GLOBALS.getFlag(onDuty) ? 3150 : 3165;
+ setAction(&_sequenceManager, this, _sceneMode, &BF_GLOBALS._player, NULL);
+ break;
+ case 325:
+ BF_GLOBALS._uiElements._active = false;
+ _object6.postInit();
+ _object7.postInit();
+ _object8.setFrame(8);
+ _sceneMode = (BF_GLOBALS._dayNumber == 1) ? 3152 : 3155;
+ setAction(&_sequenceManager, this, _sceneMode, &_object6, &_object7, &_object8, NULL);
+ break;
+ case 300:
+ default:
+ if (_field1398)
+ _field1B6A = true;
+ if (!BF_GLOBALS.getFlag(onDuty))
+ _sceneMode = 3166;
+ else if (!_field1398)
+ _sceneMode = 3164;
+ else
+ _sceneMode = 3163;
+
+ setAction(&_sequenceManager, this, _sceneMode, &BF_GLOBALS._player, NULL);
+ break;
+ }
+
+ if (_field1B6A) {
+ _object8.setFrame(8);
+ } else {
+ BF_GLOBALS._walkRegions.proc1(4);
+ }
+
+ _item15.setup(24, 315, 38, 39, 40, 1);
+ _item14.setup(14, 315, 24, 25, 26, 1);
+ _item7.setup(5, 315, 8, 9, -1, 1);
+ _item6.setup(6, 315, 5, 6, 7, 1);
+ _item10.setup(8, 315, 13, -1, -1, 1);
+ _item11.setup(9, 315, 14, -1, -1, 1);
+ _item8.setup(7, 315, 15, 16, 17, 1);
+ _item9.setup(10, 315, 18, 19, 20, 1);
+}
+
+void Scene315::signal() {
+ int ctr = 0;
+
+ switch (_sceneMode) {
+ case 0:
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 10:
+ if (_field1B62) {
+ if (_field1B62 >= _field1B60)
+ BF_GLOBALS.setFlag(fLeftTraceIn910);
+ else
+ ++ctr;
+ }
+
+ if (_field1B66) {
+ if (_field1B66 < _field1B64)
+ ++ctr;
+ else if (BF_GLOBALS._bookmark < bBookedFrankieEvidence)
+ BF_GLOBALS._bookmark = bBookedFrankieEvidence;
+ }
+
+ if (ctr) {
+ BF_GLOBALS._v4CEA8 = 20;
+ BF_GLOBALS._sceneManager.changeScene(666);
+ } else {
+ BF_GLOBALS._sceneManager.changeScene(300);
+ }
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ break;
+ case 11:
+ if (_field1B62) {
+ if (_field1B62 >= _field1B60)
+ BF_GLOBALS.setFlag(fLeftTraceIn910);
+ else
+ ++ctr;
+ }
+
+ if (_field1B66) {
+ if (_field1B66 < _field1B64)
+ ++ctr;
+ else if (BF_GLOBALS._bookmark < bBookedFrankie)
+ BF_GLOBALS._bookmark = bBookedFrankie;
+ else if (BF_GLOBALS._bookmark < bBookedFrankieEvidence)
+ BF_GLOBALS._bookmark = bBookedFrankie;
+ }
+
+ if (ctr == 1) {
+ BF_GLOBALS._v4CEA8 = 20;
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ } else if ((BF_GLOBALS._bookmark != bBookedFrankie) || !BF_GLOBALS.getFlag(onDuty)) {
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(190);
+ } else {
+ BF_GLOBALS._bookmark = bBookedFrankieEvidence;
+ _field139C = 0;
+ BF_GLOBALS.clearFlag(onDuty);
+ BF_INVENTORY._ticketBook._sceneNumber = 60;
+ BF_INVENTORY._mirandaCard._sceneNumber = 60;
+ _sceneMode = 3165;
+ setAction(&_sequenceManager, this, 3165, &BF_GLOBALS._player, NULL);
+ }
+ break;
+ case 12:
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_INVENTORY.setObjectScene((int)_currentCursor, 315);
+
+ if (!_field1B64 || (_field1B66 != _field1B64))
+ BF_GLOBALS._player.enableControl();
+ else {
+ _field139C = 1;
+ _stripNumber = 3171;
+ setAction(&_action1);
+ }
+ break;
+ case 3150:
+ case 3164:
+ case 3165:
+ case 3166:
+ BF_GLOBALS._player.enableControl();
+ _field1B68 = false;
+ break;
+ case 3151:
+ BF_GLOBALS._sceneManager.changeScene(325);
+ break;
+ case 3152:
+ BF_GLOBALS._walkRegions.proc1(4);
+ _object7.remove();
+ _object6.remove();
+
+ BF_GLOBALS._player.enableControl();
+ _field1B68 = false;
+ BF_GLOBALS._walkRegions.proc1(4);
+ BF_GLOBALS._uiElements._active = true;
+ BF_GLOBALS._uiElements.show();
+ break;
+ case 3153:
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_INVENTORY.setObjectScene((int)_currentCursor, 315);
+
+ if (_stripNumber != 0)
+ setAction(&_action1);
+ else if (!_field1B64 || (_field1B66 != _field1B64))
+ BF_GLOBALS._player.enableControl();
+ else {
+ _stripNumber = 3171;
+ setAction(&_action1);
+ _field139C = 1;
+ }
+ break;
+ case 3155:
+ BF_GLOBALS._player.enableControl();
+ _field1B68 = false;
+ BF_GLOBALS._walkRegions.proc1(4);
+ BF_GLOBALS._uiElements._active = true;
+ BF_GLOBALS._uiElements.show();
+ break;
+ case 3156:
+ BF_GLOBALS._uiElements.addScore(10);
+ BF_INVENTORY._daNote._sceneNumber = 1;
+ _object2.remove();
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 3157:
+ BF_GLOBALS._player.enableControl();
+ _object9.remove();
+ break;
+ case 3158:
+ BF_GLOBALS._player.enableControl();
+ BF_GLOBALS._uiElements.addScore(10);
+ BF_INVENTORY._forestRap._sceneNumber = 1;
+ break;
+ case 3159:
+ if (!BF_GLOBALS.getFlag(fBookedGreenEvidence)) {
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_GLOBALS.setFlag(fBookedGreenEvidence);
+ }
+ BF_GLOBALS.setFlag(gunClean);
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 3161:
+ BF_GLOBALS._v4CEA8 = 21;
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(666);
+ break;
+ case 3162:
+ BF_GLOBALS._player.disableControl();
+ _sceneMode = 3161;
+ setAction(&_sequenceManager, this, 3161, &BF_GLOBALS._player, NULL);
+ BF_GLOBALS.setFlag(fShotSuttersDesk);
+ break;
+ case 3163:
+ _sceneMode = 3150;
+ setAction(&_sequenceManager, this, 3150, &BF_GLOBALS._player, NULL);
+ break;
+ case 3167:
+ BF_GLOBALS._player.enableControl();
+ _object9.remove();
+ break;
+ case 3154:
+ default:
+ break;
+ }
+}
+
+void Scene315::process(Event &event) {
+ SceneExt::process(event);
+
+ if (BF_GLOBALS._player._enabled && !_eventHandler && (event.mousePos.y < (BF_INTERFACE_Y - 1))) {
+ // Check if the cursor is on an exit
+ if (_item17.contains(event.mousePos)) {
+ GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_SW);
+ BF_GLOBALS._events.setCursor(surface);
+ } else if ((BF_GLOBALS._bookmark != bBookedFrankie) && _item16.contains(event.mousePos)) {
+ GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_W);
+ BF_GLOBALS._events.setCursor(surface);
+ } else {
+ // In case an exit cursor was being shown, restore the previously selected cursor
+ CursorType cursorId = BF_GLOBALS._events.getCursor();
+ BF_GLOBALS._events.setCursor(cursorId);
+ }
+ }
+}
+
+void Scene315::dispatch() {
+ SceneExt::dispatch();
+
+ if (_field1B68)
+ return;
+
+ if (_field1B6A) {
+ if (BF_GLOBALS._player._position.y < 69) {
+ BF_GLOBALS._player.disableControl();
+ _field1B68 = true;
+ _sceneMode = 3151;
+ setAction(&_sequenceManager, this, 3151, &BF_GLOBALS._player, NULL);
+ } else if (BF_GLOBALS._player.getRegionIndex() == 1) {
+ BF_GLOBALS._player.disableControl();
+ _field1B68 = true;
+ SceneItem::display2(315, 28);
+ _sceneMode = 3150;
+ ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x + 30,
+ BF_GLOBALS._player._position.y + 15);
+ } else if (BF_GLOBALS._player._position.y > 156) {
+ BF_GLOBALS._player.disableControl();
+ _field1B68 = true;
+ SceneItem::display2(315, 28);
+ _sceneMode = 3150;
+ ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x + 30,
+ BF_GLOBALS._player._position.y - 24);
+ }
+ } else if (BF_GLOBALS._player.getRegionIndex() == 1) {
+ BF_GLOBALS._player.disableControl();
+ _field1B68 = true;
+ _sceneMode = 11;
+ ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x - 30,
+ BF_GLOBALS._player._position.y - 5);
+ } else if (BF_GLOBALS._player._position.y > 156) {
+ BF_GLOBALS._player.disableControl();
+ _field1B68 = true;
+
+ if (_field139C) {
+ SceneItem::display2(315, 45);
+ _sceneMode = 3150;
+ ADD_MOVER(BF_GLOBALS._player, 112, 152);
+ } else {
+ _sceneMode = 10;
+ ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x - 150,
+ BF_GLOBALS._player._position.y + 120);
+ }
+ }
+}
+
} // End of namespace BlueForce
} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_scenes3.h b/engines/tsage/blue_force/blueforce_scenes3.h
index fba2d04..e0e7d78 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.h
+++ b/engines/tsage/blue_force/blueforce_scenes3.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/blue_force/blueforce_logic.h"
+#include "tsage/blue_force/blueforce_speakers.h"
#include "tsage/converse.h"
#include "tsage/events.h"
#include "tsage/core.h"
@@ -46,29 +47,29 @@ class Scene300: public SceneExt {
public:
Object(int stripNumber) { _stripNumber = stripNumber; }
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Object17: public NamedObject {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
/* Items */
class Item1: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Item2: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Item14: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
class Item15: public NamedHotspot {
public:
- virtual void startAction(CursorType action);
+ virtual void startAction(CursorType action, Event &event);
};
/* Actions */
@@ -130,6 +131,101 @@ public:
virtual void dispatch();
};
+class Scene315: public SceneExt {
+ /* Objects */
+ class Object1: public NamedObject {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Object2: public NamedObject {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Object3: public NamedObject {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+
+ /* Items */
+ class Item1: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item2: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item4: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item5: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item14: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item15: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item16: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+ class Item17: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+
+ /* Actions */
+ class Action1: public Action {
+ public:
+ virtual void signal();
+ };
+public:
+ SequenceManager _sequenceManager;
+ SpeakerGameText _gameTextSpeaker;
+ SpeakerSutter _sutterSpeaker;
+ SpeakerHarrison _harrisonSpeaker;
+ SpeakerJakeJacket _jakeJacketSpeaker;
+ SpeakerJakeUniform _jakeUniformSpeaker;
+ SpeakerJailer _jailerSpeaker;
+ Item1 _item1;
+ Item2 _item2;
+ NamedHotspot _item3;
+ Item4 _item4;
+ Item5 _item5;
+ Object1 _object1;
+ Object2 _object2;
+ Object3 _object3;
+ SceneObject _object4, _object5, _object6;
+ SceneObject _object7, _object8, _object9;
+ NamedHotspot _item6, _item7, _item8, _item9;
+ NamedHotspot _item10, _item11, _item12, _item13;
+ Item14 _item14;
+ Item15 _item15;
+ Item16 _item16;
+ Item17 _item17;
+ Action1 _action1;
+ int _field1390;
+ int _stripNumber;
+ int _field1398;
+ int _field1B60, _field1B62, _field1B64;
+ int _field1B66, _field1B6C, _field139C;
+ bool _field1B68, _field1B6A;
+ CursorType _currentCursor;
+
+ Scene315();
+ virtual void synchronize(Serializer &s);
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void signal();
+ virtual void process(Event &event);
+ virtual void dispatch();
+};
+
} // End of namespace BlueForce
} // End of namespace TsAGE
More information about the Scummvm-git-logs
mailing list