aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-09-10 11:21:57 +1000
committerPaul Gilbert2011-09-10 11:21:57 +1000
commitc75da8051cd81548d112201c347c422fa570ea0b (patch)
tree5604c9c056f786ac82fdedf4e6fb5b985c828994
parent39f3ea90b7465b063d55658bd0384566876e26d9 (diff)
downloadscummvm-rg350-c75da8051cd81548d112201c347c422fa570ea0b.tar.gz
scummvm-rg350-c75da8051cd81548d112201c347c422fa570ea0b.tar.bz2
scummvm-rg350-c75da8051cd81548d112201c347c422fa570ea0b.zip
TSAGE: Implemented Scene 325 - Police Conference Room
-rw-r--r--engines/tsage/blue_force/blueforce_logic.cpp2
-rw-r--r--engines/tsage/blue_force/blueforce_scenes3.cpp89
-rw-r--r--engines/tsage/blue_force/blueforce_scenes3.h23
-rw-r--r--engines/tsage/blue_force/blueforce_speakers.cpp21
-rw-r--r--engines/tsage/blue_force/blueforce_speakers.h9
5 files changed, 136 insertions, 8 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index c91007e768..73467d86ac 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -87,6 +87,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Inside Police Station
return new Scene315();
case 325:
+ // Police Station Conference Room
+ return new Scene325();
case 330:
case 340:
case 342:
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index 7ceb9bdbd3..7ab62956e8 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -45,8 +45,8 @@ void Scene300::Object::startAction(CursorType action, Event &event) {
}
}
-void Scene300::Object17::startAction(CursorType action, Event &event) {
- if ((action != CURSOR_USE) || !BF_GLOBALS.getFlag(3)) {
+void Scene300::Object19::startAction(CursorType action, Event &event) {
+ if ((action != CURSOR_USE) || !BF_GLOBALS.getFlag(onDuty)) {
NamedObject::startAction(action, event);
} else if ((BF_GLOBALS._dayNumber != 2) || (BF_GLOBALS._bookmark >= bEndDayOne)) {
Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene;
@@ -175,7 +175,7 @@ void Scene300::Action4::signal() {
setAction(&scene->_sequenceManager1, this, 316, &BF_GLOBALS._player, &scene->_object19, NULL);
break;
case 2:
- BF_GLOBALS._sceneManager.changeScene(15);
+ BF_GLOBALS._sceneManager.changeScene(60);
break;
case 3:
setAction(&scene->_sequenceManager1, this, 319, &scene->_object19, NULL);
@@ -203,7 +203,6 @@ void Scene300::Action5::signal() {
break;
case 2:
scene->_stripManager.start(3004, this);
- BF_GLOBALS._sceneManager.changeScene(15);
break;
case 3: {
ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 186, 140);
@@ -1075,7 +1074,8 @@ void Scene315::postInit(SceneObjectList *OwnerList) {
_object7.postInit();
_object8.setFrame(8);
_sceneMode = (BF_GLOBALS._dayNumber == 1) ? 3152 : 3155;
- setAction(&_sequenceManager, this, _sceneMode, &_object6, &_object7, &_object8, NULL);
+ setAction(&_sequenceManager, this, _sceneMode, &BF_GLOBALS._player, &_object6,
+ &_object7, &_object8, NULL);
break;
case 300:
default:
@@ -1341,6 +1341,85 @@ void Scene315::dispatch() {
}
}
+/*--------------------------------------------------------------------------
+ * Scene 325 - Police Station Conference Room
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene325::Item1::startAction(CursorType action, Event &event) {
+ if (action == CURSOR_EXIT) {
+ BF_GLOBALS._events.setCursor(CURSOR_WALK);
+ BF_GLOBALS._player.disableControl();
+ BF_GLOBALS._sceneManager.changeScene(315);
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene325::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(325);
+ BF_GLOBALS._interfaceY = 200;
+ BF_GLOBALS.clearFlag(fCanDrawGun);
+
+ if (BF_GLOBALS._dayNumber == 0)
+ BF_GLOBALS._dayNumber = 1;
+
+ // Add the speakers
+ _stripManager.addSpeaker(&_gameTextSpeaker);
+ _stripManager.addSpeaker(&_PSutterSpeaker);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player.hide();
+
+ if (BF_GLOBALS._dayNumber == 1) {
+ _object1.postInit();
+ _object1.setVisage(325);
+ _object1.setStrip(8);
+ _object1.setPosition(Common::Point(128, 44));
+ } else {
+ _object1.postInit();
+ _object1.setVisage(325);
+ _object1.setStrip(8);
+ _object1.setFrame(2);
+ _object1.setPosition(Common::Point(132, 28));
+
+ _object2.postInit();
+ _object2.setVisage(325);
+ _object2.setStrip(8);
+ _object2.setFrame(3);
+ _object2.setPosition(Common::Point(270, 24));
+ }
+
+ _object3.postInit();
+ _object3.setVisage(335);
+ _object3.setStrip(4);
+ _object3.setPosition(Common::Point(202, 122));
+
+ _object4.postInit();
+ _object4.setVisage(335);
+ _object4.setStrip(2);
+ _object4.setPosition(Common::Point(283, 102));
+
+ _object5.postInit();
+ _object5.setVisage(335);
+ _object5.setStrip(1);
+ _object5.setPosition(Common::Point(135, 167));
+
+ _item1.setup(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 560, -1, -1, -1, 1, NULL);
+ BF_GLOBALS._player.disableControl();
+
+ _sceneMode = (BF_GLOBALS._dayNumber == 1) ? 3250 : 3251;
+ setAction(&_sequenceManager, this, _sceneMode, &_object3, &_object4, &_object5, NULL);
+}
+
+void Scene325::signal() {
+ BF_GLOBALS._player._uiEnabled = 0;
+ BF_GLOBALS._player._canWalk = true;
+ BF_GLOBALS._player._enabled = true;
+ BF_GLOBALS._events.setCursor(CURSOR_EXIT);
+}
+
} // 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 e0e7d78afa..df03057af2 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.h
+++ b/engines/tsage/blue_force/blueforce_scenes3.h
@@ -49,7 +49,7 @@ class Scene300: public SceneExt {
virtual void startAction(CursorType action, Event &event);
};
- class Object17: public NamedObject {
+ class Object19: public NamedObject {
public:
virtual void startAction(CursorType action, Event &event);
};
@@ -103,8 +103,8 @@ public:
SceneObject _object8, _object9, _object10;
NamedObject _object11, _object12;
Object _object13, _object14, _object15, _object16;
- Object17 _object17;
- NamedObject _object18, _object19;
+ NamedObject _object17, _object18;
+ Object19 _object19;
Item1 _item1;
Item2 _item2;
NamedHotspot _item3, _item4, _item5, _item6, _item7;
@@ -226,6 +226,23 @@ public:
virtual void dispatch();
};
+class Scene325: public SceneExt {
+ /* Items */
+ class Item1: public NamedHotspot {
+ public:
+ virtual void startAction(CursorType action, Event &event);
+ };
+public:
+ SequenceManager _sequenceManager;
+ SpeakerGameText _gameTextSpeaker;
+ SpeakerPSutter _PSutterSpeaker;
+ Item1 _item1;
+ NamedObject _object1, _object2, _object3, _object4, _object5;
+
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void signal();
+};
+
} // End of namespace BlueForce
} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp
index 58db8659b6..f35fa22390 100644
--- a/engines/tsage/blue_force/blueforce_speakers.cpp
+++ b/engines/tsage/blue_force/blueforce_speakers.cpp
@@ -286,6 +286,27 @@ void SpeakerJailer::setText(const Common::String &msg) {
_object2.fixCountdown(8, _numFrames);
}
+/*--------------------------------------------------------------------------*/
+
+SpeakerPSutter::SpeakerPSutter(): VisualSpeaker() {
+ _color1 = 20;
+ _color2 = 22;
+ _speakerName = "PSUTTER";
+}
+
+void SpeakerPSutter::setText(const Common::String &msg) {
+ _removeObject2 = true;
+
+ _object2.postInit();
+ _object2.setVisage(335);
+ _object2.setStrip2(3);
+ _object2.fixPriority(200);
+ _object2.setPosition(Common::Point(202, 48));
+
+ 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
index 9db0dd2126..1bb56ece96 100644
--- a/engines/tsage/blue_force/blueforce_speakers.h
+++ b/engines/tsage/blue_force/blueforce_speakers.h
@@ -116,6 +116,15 @@ public:
virtual void setText(const Common::String &msg);
};
+class SpeakerPSutter: public VisualSpeaker {
+public:
+ SpeakerPSutter();
+
+ virtual Common::String getClassName() { return "SpeakerPSutter"; }
+ virtual void setText(const Common::String &msg);
+};
+
+
} // End of namespace BlueForce
} // End of namespace TsAGE