aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/blue_force/blueforce_logic.cpp6
-rw-r--r--engines/tsage/blue_force/blueforce_scenes1.cpp83
-rw-r--r--engines/tsage/blue_force/blueforce_scenes1.h14
3 files changed, 101 insertions, 2 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index ef2d1f9ce0..b8895add0a 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -75,12 +75,14 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Inside Tony's Bar
return new Scene115();
case 125:
- // Chase in the city
+ // Intro - Chase in the city
return new Scene125();
case 140:
- // Near the House
+ // Intro - Burglar near the House
return new Scene140();
case 150:
+ // Intro - Burglar inside the house
+ return new Scene150();
case 160:
error("Scene group 1 not implemented");
case 180:
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index ac824b1c62..7206974a24 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -2450,6 +2450,89 @@ void Scene140::postInit(SceneObjectList *OwnerList) {
}
/*--------------------------------------------------------------------------
+ * Scene 150 - Intro - Burglar inside the house
+ *
+ *--------------------------------------------------------------------------*/
+void Scene150::Action1::signal() {
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+ static uint32 v50B96 = 0;
+
+ switch (_actionIndex++) {
+ case 0:
+ _actionIndex = 5;
+ _object2.postInit();
+ _object2.setVisage(150);
+ _object2.setStrip(3);
+ _object2._frame = 1;
+ _object2.setPosition(Common::Point(148, 126));
+ _object2.changeZoom(100);
+ setDelay(10);
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->_frame = 1;
+ owner->setStrip(4);
+ owner->animate(ANIM_MODE_4, 3, 1, this);
+ break;
+ case 3:
+ owner->animate(ANIM_MODE_5, this);
+ _object2.animate(ANIM_MODE_5, this);
+ break;
+ case 4:
+ _object2.remove();
+ break;
+ case 5:
+ owner->_numFrames = 8;
+ owner->_frame = 1;
+ owner->setStrip(2);
+ owner->animate(ANIM_MODE_4, 14, 1, this);
+ break;
+ case 6:
+ owner->fixPriority(119);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 7:
+ setDelay(60);
+ break;
+ case 8:
+ BF_GLOBALS._sound1.stop();
+ // No break on purpose
+ case 9:
+ _sound1.play(8);
+ setDelay(30);
+ break;
+ case 10:
+ BF_GLOBALS._scenePalette.addFader((const byte *)&v50B96, 1, 2, this);
+ break;
+ case 11:
+ BF_GLOBALS._sound1.play(9);
+ BF_GLOBALS._sceneManager.changeScene(160);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene150::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(150);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player.setPosition(Common::Point(160, 100));
+ BF_GLOBALS._player._moveDiff.x = 15;
+ BF_GLOBALS._player.hide();
+
+ _object1.postInit();
+ _object1.setVisage(150);
+ _object1.setPosition(Common::Point(158, 119));
+ _object1._numFrames = 5;
+ _object1.fixPriority(121);
+ _object1.setAction(&_action1);
+}
+
+/*--------------------------------------------------------------------------
* Scene 180 - Front of Home
*
*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/blue_force/blueforce_scenes1.h b/engines/tsage/blue_force/blueforce_scenes1.h
index 0e8bd8e293..be82adf25c 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.h
+++ b/engines/tsage/blue_force/blueforce_scenes1.h
@@ -385,6 +385,20 @@ public:
void postInit(SceneObjectList *OwnerList);
};
+class Scene150: public SceneExt {
+ class Action1: public Action {
+ NamedObject _object2;
+ ASound _sound1;
+ public:
+ virtual void signal();
+ };
+public:
+ NamedObject _object1;
+ Action1 _action1;
+
+ void postInit(SceneObjectList *OwnerList);
+};
+
class Scene180: public SceneExt {
/* Objects */
class Vechile: public NamedObject {