aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/blue_force/blueforce_logic.cpp4
-rw-r--r--engines/tsage/blue_force/blueforce_scenes1.cpp460
-rw-r--r--engines/tsage/blue_force/blueforce_scenes1.h36
3 files changed, 499 insertions, 1 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 1c50e7f079..1b82fdad76 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -63,9 +63,11 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Tsnunami Title Screen #2
return new Scene100();
case 109:
- // Introduction Bar Room
+ // Introduction - Bar Room
return new Scene109();
case 110:
+ // Introduction - Outside the bar
+ return new Scene110();
case 114:
case 115:
case 125:
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index d802a7e497..51d68d58a1 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -434,6 +434,466 @@ void Scene109::signal() {
}
/*--------------------------------------------------------------------------
+ * Scene 110 - Intro - Outside the bar
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene110::Action1::signal() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(5);
+ break;
+ case 1:
+ scene->_object8.show();
+ scene->_object7.show();
+ scene->_object1.show();
+ scene->_object4.show();
+ scene->_object5.show();
+ scene->_object6.show();
+ scene->_object9.show();
+ scene->_object10.show();
+ BF_GLOBALS._v51C44 = 1;
+ scene->loadScene(110);
+ setDelay(10);
+ break;
+ case 2:
+ BF_GLOBALS._v51C44 = 1;
+ scene->_object1.animate(ANIM_MODE_5, this);
+ break;
+ case 3: {
+ Common::Point pt(123, 121);
+ NpcMover *mover = new NpcMover();
+ scene->_object4.addMover(mover, &pt, this);
+ }
+ // No break on purpose
+ case 7:
+ setDelay(30);
+ break;
+ case 4:
+ // Guy running to the moto
+ scene->_object1.animate(ANIM_MODE_6, NULL);
+ break;
+ case 5:
+ scene->_object4.setStrip(2);
+ scene->_object4.setPosition(Common::Point(117, 106));
+ scene->_object4.animate(ANIM_MODE_5, this);
+ break;
+ case 6:
+ // Play "Vroum"
+ scene->_sound.play(31);
+ // The guy starts the engine
+ scene->_object4.setStrip(3);
+ scene->_object4._frame = 1;
+ scene->_object4.animate(ANIM_MODE_5, NULL);
+ // The guy looks behind him
+ scene->_object2.setPosition(Common::Point(227, 190));
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 8:
+ scene->_object2.animate(ANIM_MODE_6, this);
+ break;
+ case 9:
+ scene->_object2.remove();
+ scene->_object4.remove();
+ scene->_object5.setStrip(4);
+ scene->_object5.setFrame2(5);
+ scene->_object5.setPosition(Common::Point(105, 120));
+ setDelay(10);
+ scene->_object6.setPosition(Common::Point(127, 96));
+ scene->_object6.animate(ANIM_MODE_2, NULL);
+ scene->_object6.setAction(&scene->_action2);
+ scene->_sound.play(22);
+ break;
+ case 10:
+ scene->_object8.setAction(&scene->_action4);
+ scene->_object5.setFrame2(3);
+ scene->_object5.setPosition(Common::Point(87, 120));
+ setDelay(8);
+ break;
+ case 11:
+ scene->_object5.setFrame2(4);
+ scene->_object5.setPosition(Common::Point(62, 122));
+ setDelay(6);
+ break;
+ case 12:
+ scene->_object5.setFrame2(5);
+ scene->_object5.setPosition(Common::Point(35, 120));
+ scene->_object5.fixPriority(70);
+ setDelay(4);
+ break;
+ case 13:
+ scene->_object5.setFrame2(6);
+ scene->_object5.setPosition(Common::Point(22, 111));
+ setDelay(2);
+ break;
+ case 14:
+ scene->_object5.setFrame2(7);
+ scene->_object5.setPosition(Common::Point(19, 99));
+ setDelay(2);
+ break;
+ case 15:
+ scene->_object5.setFrame2(8);
+ scene->_object5.setPosition(Common::Point(54, 76));
+ setDelay(1);
+ break;
+ case 16: {
+ Common::Point pt(182, 54);
+ NpcMover *mover = new NpcMover();
+ scene->_object5.addMover(mover, &pt, this);
+ }
+ break;
+ case 17:
+ scene->_object5.remove();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene110::Action2::signal() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0: {
+ Common::Point pt(152, 94);
+ NpcMover *mover = new NpcMover();
+ scene->_object6.addMover(mover, &pt, this);
+ }
+ break;
+ case 1: {
+ Common::Point pt(167, 108);
+ NpcMover *mover = new NpcMover();
+ scene->_object6.addMover(mover, &pt, this);
+ }
+ break;
+ case 2: {
+ Common::Point pt(172, 109);
+ NpcMover *mover = new NpcMover();
+ scene->_object6.addMover(mover, &pt, this);
+ }
+ break;
+ case 3: {
+ Common::Point pt(179, 117);
+ NpcMover *mover = new NpcMover();
+ scene->_object6.addMover(mover, &pt, this);
+ }
+ break;
+ case 4:
+ setDelay(30);
+ break;
+ case 5:
+ scene->_object6.animate(ANIM_MODE_NONE, NULL);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene110::Action3::signal() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(3);
+ break;
+ case 1:
+ scene->_object7.setPosition(scene->_object7._position);
+ scene->_object1.setFrame(2);
+ setDelay(1);
+ break;
+ case 2:
+ scene->_object1.setFrame(3);
+ setDelay(1);
+ break;
+ case 3:
+ scene->_object1.setFrame(4);
+ scene->_object7.animate(ANIM_MODE_5, this);
+ break;
+ case 4: {
+ scene->_object1.animate(ANIM_MODE_6, NULL);
+ scene->_object7.setPosition(Common::Point(205, 99));
+ scene->_object7.setStrip(2);
+ scene->_object7.animate(ANIM_MODE_1, NULL);
+ scene->_object7.changeZoom(90);
+ Common::Point pt(151, 88);
+ NpcMover *mover = new NpcMover();
+ scene->_object7.addMover(mover, &pt, this);
+ }
+ break;
+ case 5:
+ scene->_object7.fixPriority(76);
+ scene->_object7.setStrip(3);
+ scene->_object7.changeZoom(90);
+ scene->_object7.setFrame(1);
+ scene->_object7.animate(ANIM_MODE_5, this);
+ scene->_object10.animate(ANIM_MODE_5, NULL);
+ break;
+ case 6:
+ scene->_object7.fixPriority(73);
+ scene->_object10.animate(ANIM_MODE_6, this);
+ break;
+ case 7: {
+ scene->_object7._yDiff = 1000;
+ scene->_object10.remove();
+ scene->_object9.setFrame2(2);
+ Common::Point pt(230, 53);
+ NpcMover *mover = new NpcMover();
+ scene->_object9.addMover(mover, &pt, this);
+ scene->_sound.play(23);
+ }
+ break;
+ case 8:
+ scene->_object9.remove();
+ BF_GLOBALS._sceneManager.changeScene(125);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene110::Action3::dispatch() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ Action::dispatch();
+ if ((_actionIndex == 5) && (scene->_object7._percent > 80))
+ scene->_object7.changeZoom(scene->_object7._percent - 1);
+}
+
+void Scene110::Action4::signal() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ scene->_object8.setPosition(scene->_object8._position);
+ scene->_object1.setFrame(2);
+ setDelay(1);
+ break;
+ case 1:
+ scene->_object1.setFrame(3);
+ setDelay(1);
+ break;
+ case 2: {
+ scene->_object1.setFrame(4);
+ scene->_object8.fixPriority(90);
+ Common::Point pt(194, 119);
+ NpcMover *mover = new NpcMover();
+ scene->_object8.addMover(mover, &pt, this);
+ }
+ break;
+ case 3:
+ scene->_object1.animate(ANIM_MODE_6, NULL);
+ scene->_object8.setPosition(Common::Point(186, 117));
+ scene->_object8.setStrip(2);
+ scene->_object8.setFrame(1);
+ scene->_object3.setPosition(scene->_object3._position);
+ scene->_object3.setFrame(1);
+ setDelay(7);
+ break;
+ case 4:
+ scene->_object8.setFrame2(2);
+ scene->_object3.setFrame(3);
+ setDelay(7);
+ break;
+ case 5:
+ scene->_object8.setFrame2(3);
+ scene->_object3.setFrame(3);
+ setDelay(7);
+ scene->_object6.remove();
+ break;
+ case 6:
+ scene->_object8.setFrame2(4);
+ scene->_object3.setFrame(4);
+ setDelay(7);
+ break;
+ case 7:
+ scene->_object8.setFrame2(5);
+ scene->_object3.setFrame(5);
+ setDelay(7);
+ break;
+ case 8:
+ scene->_object8.setFrame2(7);
+ scene->_object3.setFrame(6);
+ setDelay(30);
+ break;
+ case 9: {
+ scene->_object3.remove();
+ scene->_object8.setFrame2(-1);
+ scene->_object8.setPosition(Common::Point(176, 105));
+ scene->_object8.animate(ANIM_MODE_1, NULL);
+ scene->_object8.setStrip(3);
+ Common::Point pt(141, 94);
+ NpcMover *mover = new NpcMover();
+ scene->_object8.addMover(mover, &pt, this);
+ scene->_object7.setAction(&scene->_action3);
+ }
+ break;
+ case 10: {
+ scene->_object8.fixPriority(77);
+ Common::Point pt(78, 76);
+ NpcMover *mover = new NpcMover();
+ scene->_object8.addMover(mover, &pt, this);
+ }
+ break;
+ case 11: {
+ scene->_object8.setPosition(Common::Point(87, 76));
+ scene->_object8.fixPriority(71);
+ scene->_object8.setStrip(6);
+ scene->_object8.changeZoom(75);
+ Common::Point pt(103, 74);
+ NpcMover *mover = new NpcMover();
+ scene->_object8.addMover(mover, &pt, this);
+ }
+ break;
+ case 12:
+ scene->_object8.setPosition(Common::Point(119, 59));
+ scene->_object8.setStrip(5);
+ scene->_object8.changeZoom(100);
+ scene->_object8.animate(ANIM_MODE_5, this);
+ break;
+ case 13:
+ scene->_object8.setPosition(Common::Point(119, 59), 300);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene110::Action4::dispatch() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ Action::dispatch();
+ if ((_actionIndex > 9) && (_actionIndex < 12) && (scene->_object8._percent > 80))
+ scene->_object8.changeZoom(scene->_object8._percent - 1);
+}
+
+void Scene110::Action5::signal() {
+ Scene110 *scene = (Scene110 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ scene->_object3.setPosition(scene->_object3._position);
+ scene->_object3.animate(ANIM_MODE_5, this);
+ break;
+ case 1:
+ scene->_object3.remove();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene110::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(999);
+ _object8.postInit();
+ _object8.setVisage(112);
+ _object8.setPosition(Common::Point(239, 98), 300);
+ _object8.setFrame(1);
+ _object8.setStrip(1);
+ _object8.changeZoom(90);
+ _object8.fixPriority(90);
+ _object8.animate(ANIM_MODE_1, NULL);
+ _object8._moveDiff.x = 7;
+ _object8._moveDiff.y = 3;
+ _object8.hide();
+
+ _object3.postInit();
+ _object3.setVisage(112);
+ _object3.setPosition(Common::Point(247, 190), 300);
+ _object3.setFrame(1);
+ _object3.setStrip(4);
+ _object3.changeZoom(100);
+ _object3.fixPriority(255);
+
+ _object7.postInit();
+ _object7.setVisage(113);
+ _object7.setPosition(Common::Point(236, 86), 300);
+ _object7._frame = 1;
+ _object7.setStrip(1);
+ _object7.changeZoom(110);
+ _object7.fixPriority(89);
+ _object7._moveDiff.x = 7;
+ _object7._moveDiff.y = 3;
+ _object7.hide();
+
+ _object1.postInit();
+ _object1.setVisage(110);
+ _object1.setPosition(Common::Point(216, 88), 0);
+ _object1._frame = 1;
+ _object1.setStrip(1);
+ _object1.changeZoom(100);
+ _object1.fixPriority(83);
+ _object1.hide();
+
+ _object2.postInit();
+ _object2.setVisage(111);
+ _object2.setPosition(Common::Point(527, 190), 0);
+ _object2._frame = 1;
+ _object2.fixPriority(250);
+ _object2.setStrip(5);
+ _object2.changeZoom(100);
+
+ _object4.postInit();
+ _object4.setVisage(111);
+ _object4.setPosition(Common::Point(253, 98), 0);
+ _object4._frame = 1;
+ _object4.setStrip(1);
+ _object4.changeZoom(100);
+ _object4.fixPriority(90);
+ _object4.animate(ANIM_MODE_1, NULL);
+ _object4._moveDiff.x = 10;
+ _object4._moveDiff.y = 10;
+ _object4.hide();
+
+ _object5.postInit();
+ _object5.setVisage(111);
+ _object5.setPosition(Common::Point(114, 119), 0);
+ _object5.setFrame2(1);
+ _object5.setStrip(7);
+ _object5.fixPriority(70);
+ _object5.changeZoom(100);
+ _object5._moveDiff.x = 20;
+ _object5._moveDiff.y = 20;
+ _object5.hide();
+
+ _object6.postInit();
+ _object6.setVisage(111);
+ _object6.setPosition(Common::Point(527, 96), 0);
+ _object6._frame = 1;
+ _object6.setStrip(6);
+ _object6.changeZoom(100);
+ _object6.fixPriority(238);
+ _object6._moveDiff.x = 10;
+ _object6._moveDiff.y = 10;
+ _object6.hide();
+
+ _object9.postInit();
+ _object9.setVisage(110);
+ _object9.setPosition(Common::Point(148, 69), 0);
+ _object9._frame = 1;
+ _object9.setStrip(2);
+ _object9.changeZoom(100);
+ _object9.fixPriority(72);
+ _object9._moveDiff.x = 10;
+ _object9._moveDiff.y = 10;
+ _object9.hide();
+
+ _object10.postInit();
+ _object10.setVisage(110);
+ _object10._frame = 1;
+ _object10.setStrip(3);
+ _object10.changeZoom(100);
+ _object10.fixPriority(74);
+ _object10._moveDiff.x = 10;
+ _object10._moveDiff.y = 10;
+ _object10.setPosition(_object9._position);
+ _object10.hide();
+
+ 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 17f326ad07..439e561e98 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.h
+++ b/engines/tsage/blue_force/blueforce_scenes1.h
@@ -124,6 +124,42 @@ public:
virtual void signal();
};
+class Scene110: public SceneExt {
+ /* Actions */
+ class Action1: public Action {
+ public:
+ virtual void signal();
+ };
+ class Action2: public Action {
+ public:
+ virtual void signal();
+ };
+ class Action3: public Action {
+ public:
+ virtual void signal();
+ virtual void dispatch();
+ };
+ class Action4: public Action {
+ public:
+ virtual void signal();
+ virtual void dispatch();
+ };
+ class Action5: public Action {
+ public:
+ virtual void signal();
+ };
+public:
+ NamedObject _object1, _object2, _object3, _object4, _object5, _object6, _object7, _object8, _object9, _object10;
+ ASound _sound;
+ Action1 _action1;
+ Action2 _action2;
+ Action3 _action3;
+ Action4 _action4;
+ Action5 _action5;
+public:
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+};
+
class Scene180: public SceneExt {
/* Objects */
class Vechile: public NamedObject {