aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/blue_force/blueforce_scenes2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/blue_force/blueforce_scenes2.cpp')
-rw-r--r--engines/tsage/blue_force/blueforce_scenes2.cpp1720
1 files changed, 1720 insertions, 0 deletions
diff --git a/engines/tsage/blue_force/blueforce_scenes2.cpp b/engines/tsage/blue_force/blueforce_scenes2.cpp
new file mode 100644
index 0000000000..7d66c7a52b
--- /dev/null
+++ b/engines/tsage/blue_force/blueforce_scenes2.cpp
@@ -0,0 +1,1720 @@
+/* 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_scenes2.h"
+#include "tsage/scenes.h"
+#include "tsage/tsage.h"
+
+namespace TsAGE {
+
+namespace BlueForce {
+
+/*--------------------------------------------------------------------------
+ * Scene 200 - Credits - Motorcycle Training
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene200::Action1::signal() {
+ Scene200 *scene = (Scene200 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ assert(owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(1);
+ break;
+ case 1:
+ BF_GLOBALS._scenePalette.loadPalette(235);
+ BF_GLOBALS._scenePalette.refresh();
+ _state = 0;
+ setDelay(30);
+ break;
+ case 2:
+ assert(_owner);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 3:
+ if (++_state < 2) {
+ scene->_action2.signal();
+ owner->setFrame(1);
+ _actionIndex = 2;
+ }
+ setDelay(2);
+ break;
+ case 4: {
+ PaletteRotation *rot;
+ rot = BF_GLOBALS._scenePalette.addRotation(64, 79, 1);
+ rot->setDelay(10);
+ rot = BF_GLOBALS._scenePalette.addRotation(96, 111, 1);
+ rot->setDelay(10);
+
+ scene->setAction(&scene->_sequenceManager, this, 201, &scene->_object1, &scene->_object2,
+ &scene->_object3, &scene->_object4, &scene->_object5, &scene->_object6, NULL);
+ break;
+ }
+ case 5:
+ BF_GLOBALS._sceneManager.changeScene(210);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene200::Action2::signal() {
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+ assert(owner);
+
+ switch (_actionIndex++) {
+ case 1:
+ owner->setPosition(owner->_position);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setPosition(owner->_position);
+ owner->setFrame(1);
+ break;
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+void Scene200::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(200);
+ setZoomPercents(0, 100, 200, 100);
+ BF_GLOBALS._sound1.play(3);
+
+ _object10.postInit();
+ _object10.setVisage(200);
+ _object10.setPosition(Common::Point(114, 102));
+ _object10.setStrip(2);
+ _object10.setFrame(1);
+ _object10.changeZoom(100);
+
+ _object1.postInit();
+ _object1.hide();
+ _object2.postInit();
+ _object2.hide();
+ _object3.postInit();
+ _object3.hide();
+ _object4.postInit();
+ _object4.hide();
+ _object5.postInit();
+ _object5.hide();
+ _object6.postInit();
+ _object6.hide();
+
+ _object11.postInit();
+ _object11.setVisage(200);
+ _object11.setPosition(Common::Point(96, 112), 1000);
+ _object11.setStrip(3);
+ _object11.setFrame(1);
+ _object11.changeZoom(100);
+
+ _object10.setAction(&_action1);
+ _object11.setAction(&_action2);
+}
+
+void Scene200::remove() {
+ BF_GLOBALS._scenePalette.clearListeners();
+ SceneExt::remove();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 210 - Credits - Car Training
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene210::Action1::signal() {
+ Scene210 *scene = (Scene210 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(_owner);
+ assert(owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(1);
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2: {
+ PaletteRotation *rot;
+ rot = BF_GLOBALS._scenePalette.addRotation(64, 79, 1);
+ rot->setDelay(10);
+ rot = BF_GLOBALS._scenePalette.addRotation(96, 111, 1);
+ rot->setDelay(10);
+
+ scene->setAction(&scene->_sequenceManager, this, 210, &scene->_object10, &scene->_object11,
+ &scene->_object12, &scene->_object13, &scene->_object14, &scene->_object15, NULL);
+ break;
+ }
+ case 3:
+ BF_GLOBALS._sceneManager.changeScene(220);
+ break;
+ default:
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene210::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(210);
+ BF_GLOBALS._scenePalette.loadPalette(235);
+ BF_GLOBALS._scenePalette.refresh();
+
+ _object9.postInit();
+ _object9.setVisage(210);
+ _object9.setPosition(Common::Point(146, 151));
+ _object9.setStrip(1);
+ _object9.setFrame(1);
+ _object9.changeZoom(100);
+ _object9.setAction(&_action1);
+
+ _object10.postInit();
+ _object10.hide();
+ _object11.postInit();
+ _object11.hide();
+ _object12.postInit();
+ _object12.hide();
+ _object13.postInit();
+ _object13.hide();
+ _object14.postInit();
+ _object14.hide();
+ _object15.postInit();
+ _object15.hide();
+}
+
+void Scene210::remove() {
+ BF_GLOBALS._scenePalette.clearListeners();
+ SceneExt::remove();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 220 - Credits - Martial Arts
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene220::Action1::signal() {
+ Scene220 *scene = (Scene220 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(1);
+ break;
+ case 1:
+ BF_GLOBALS._scenePalette.loadPalette(235);
+ BF_GLOBALS._scenePalette.refresh();
+ setDelay(30);
+ break;
+ case 2:
+ BF_GLOBALS._scenePalette.clearListeners();
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 3:
+ scene->_object2.setVisage(221);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(178, 122));
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 4:
+ BF_GLOBALS._scenePalette.loadPalette(2);
+ BF_GLOBALS._scenePalette.refresh();
+ BF_GLOBALS._scenePalette.loadPalette(235);
+ BF_GLOBALS._scenePalette.refresh();
+ setDelay(5);
+ break;
+ case 5:
+ scene->_object1.remove();
+
+ scene->_object2.setVisage(222);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(164, 138));
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 6:
+ scene->_object2.setVisage(223);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(164, 139));
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 7:
+ scene->_object2.setVisage(230);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(168, 136));
+ scene->_object2.animate(ANIM_MODE_4, 13, 1, this);
+ break;
+ case 8:
+ scene->_object2.animate(ANIM_MODE_5, this);
+
+ scene->_object3.postInit();
+ scene->_object3.setVisage(231);
+ scene->_object3.setPosition(Common::Point(65, 179));
+ scene->_object3.setStrip(1);
+ scene->_object3.setFrame(1);
+ scene->_object3.changeZoom(100);
+ scene->_object3.setAction(&scene->_action2, this);
+ break;
+ case 9:
+ break;
+ case 10:
+ scene->_object2.setVisage(224);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(148, 143));
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 11: {
+ PaletteRotation *rot;
+ rot = BF_GLOBALS._scenePalette.addRotation(64, 79, 1);
+ rot->setDelay(10);
+ rot = BF_GLOBALS._scenePalette.addRotation(96, 111, 1);
+ rot->setDelay(10);
+
+ scene->setAction(&scene->_sequenceManager, this, 220, &scene->_object4, &scene->_object5,
+ &scene->_object6, &scene->_object7, &scene->_object8, &scene->_object9, NULL);
+ break;
+ }
+ case 12:
+ scene->_object2.setVisage(232);
+ scene->_object2.setFrame(1);
+ scene->_object2.setPosition(Common::Point(146, 143));
+ scene->_object2._numFrames = 5;
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 13:
+ scene->_object2.setVisage(228);
+ scene->_object2.setFrame(1);
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 14:
+ scene->_object2.setVisage(229);
+ scene->_object2.setFrame(1);
+ scene->_object2.animate(ANIM_MODE_5, this);
+ break;
+ case 15:
+ BF_GLOBALS._sceneManager.changeScene(225);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene220::Action2::signal() {
+ Scene220 *scene = (Scene220 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ scene->_object3.setPosition(scene->_object3._position);
+ scene->_object3.animate(ANIM_MODE_5, this);
+ break;
+ case 1:
+ setDelay(50);
+ break;
+ case 2:
+ scene->_object3.remove();
+ remove();
+ break;
+ default:
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene220::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(220);
+
+ _object2.postInit();
+ _object2.setVisage(220);
+ _object2.setPosition(Common::Point(182, 122));
+ _object2.setStrip(1);
+ _object2.setFrame(1);
+ _object2.changeZoom(100);
+
+ _object1.postInit();
+ _object1.setVisage(220);
+ _object1.setPosition(Common::Point(164, 138));
+ _object1.setStrip(2);
+ _object1.setFrame(1);
+ _object1.changeZoom(100);
+
+ _object4.postInit();
+ _object4.hide();
+ _object5.postInit();
+ _object5.hide();
+ _object6.postInit();
+ _object6.hide();
+ _object7.postInit();
+ _object7.hide();
+ _object8.postInit();
+ _object8.hide();
+ _object9.postInit();
+ _object9.hide();
+
+ _object2.setAction(&_action1);
+}
+
+void Scene220::remove() {
+ BF_GLOBALS._scenePalette.clearListeners();
+ SceneExt::remove();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 225 - Credits - Gun Training
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene225::Action1::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(30);
+ break;
+ case 1:
+ BF_GLOBALS._scenePalette.loadPalette(235);
+ BF_GLOBALS._scenePalette.refresh();
+ setDelay(5);
+ break;
+ case 2:
+ owner->animate(ANIM_MODE_4, 7, 1, this);
+ break;
+ case 3:
+ scene->_object8.animate(ANIM_MODE_5, this);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 4:
+ scene->_object8.remove();
+ break;
+ case 5:
+ scene->_action3.signal();
+ break;
+ case 6:
+ owner->setPosition(Common::Point(owner->_position.x, owner->_position.y - 4));
+ owner->setStrip(2);
+ owner->setFrame(1);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 7:
+ scene->_action2.signal();
+ break;
+ case 8:
+ owner->animate(ANIM_MODE_6, this);
+ break;
+ case 9:
+ owner->setPosition(Common::Point(owner->_position.x - 2, owner->_position.y - 1));
+ owner->setStrip(3);
+ owner->setFrame(1);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 10: {
+ owner->setPosition(Common::Point(owner->_position.x + 10, owner->_position.y + 4));
+ owner->setStrip(4);
+ owner->setFrame(1);
+ owner->fixPriority(116);
+ owner->animate(ANIM_MODE_1, NULL);
+
+ Common::Point destPos(138, 117);
+ NpcMover *mover = new NpcMover();
+ owner->addMover(mover, &destPos, this);
+ break;
+ }
+ case 11: {
+ owner->setPosition(Common::Point(owner->_position.x - 12, owner->_position.y - 1));
+ owner->setStrip(5);
+ owner->setFrame(1);
+ owner->_moveDiff.x = 8;
+
+ Common::Point destPos(402, 116);
+ NpcMover *mover2 = new NpcMover();
+ owner->addMover(mover2, &destPos, this);
+
+ BF_GLOBALS._player.setPosition(Common::Point(owner->_position.x, 0));
+ ADD_MOVER_NULL(BF_GLOBALS._player, 500, 0);
+ break;
+ }
+ case 12:
+ owner->setVisage(1227);
+ owner->setStrip(1);
+ owner->setFrame(1);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 13:
+ owner->setStrip(2);
+ owner->setFrame(4);
+ scene->_action4.signal();
+ break;
+ case 14:
+ owner->animate(ANIM_MODE_6, this);
+ break;
+ case 15:
+ scene->_action6.signal();
+ break;
+ case 16:
+ owner->animate(ANIM_MODE_4, 4, 1, this);
+ break;
+ case 17:
+ owner->setFrame(6);
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 18:
+ scene->_action5.signal();
+ break;
+ case 19:
+ owner->animate(ANIM_MODE_4, 4, -1, this);
+ break;
+ case 20:
+ PaletteRotation *rot;
+ rot = BF_GLOBALS._scenePalette.addRotation(64, 79, 1);
+ rot->setDelay(10);
+ rot = BF_GLOBALS._scenePalette.addRotation(96, 111, 1);
+ rot->setDelay(10);
+
+ scene->setAction(&scene->_sequenceManager, this, 225, &scene->_object15, &scene->_object16,
+ &scene->_object17, &scene->_object18, &scene->_object19, &scene->_object20, NULL);
+ break;
+ case 21:
+ scene->_object21.hide();
+ BF_GLOBALS._player._moveDiff.x = 5;
+ BF_GLOBALS._sceneManager.changeScene(265);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene225::Action2::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setStrip(3);
+ owner->setFrame(2);
+ scene->_action1.signal();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene225::Action3::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setStrip(3);
+ owner->setFrame(1);
+ scene->_action1.signal();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene225::Action4::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setStrip(5);
+ owner->setFrame(4);
+ scene->_action1.signal();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene225::Action5::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setStrip(3);
+ owner->setFrame(6);
+ scene->_action1.signal();
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene225::Action6::signal() {
+ Scene225 *scene = (Scene225 *)BF_GLOBALS._sceneManager._scene;
+ SceneObject *owner = static_cast<SceneObject *>(this->_owner);
+
+ switch (_actionIndex++) {
+ case 0:
+ break;
+ case 1:
+ owner->animate(ANIM_MODE_5, this);
+ break;
+ case 2:
+ owner->setStrip(3);
+ owner->setFrame(3);
+ scene->_action1.signal();
+ break;
+ default:
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene225::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(1225);
+ loadBackground(-320, 0);
+
+ _object8.postInit();
+ _object8.setVisage(1225);
+ _object8.setPosition(Common::Point(114, 119));
+ _object8._frame = 1;
+ _object8.setStrip(2);
+ _object8.changeZoom(100);
+
+ _object9.postInit();
+ _object9.setVisage(1226);
+ _object9.setPosition(Common::Point(83, 128));
+ _object9.setStrip(1);
+ _object9.changeZoom(100);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player.setPosition(Common::Point(83, 0));
+ BF_GLOBALS._player.hide();
+
+ _object10.postInit();
+ _object10.setVisage(1225);
+ _object10.setPosition(Common::Point(237, 29));
+ _object10.setStrip(1);
+ _object10._frame = 1;
+ _object10.changeZoom(100);
+ _object10._numFrames = 2;
+
+ _object11.postInit();
+ _object11.setVisage(1225);
+ _object11.setPosition(Common::Point(290, 47));
+ _object11.setStrip(1);
+ _object11._frame = 1;
+ _object11.changeZoom(100);
+ _object11._numFrames = 2;
+
+ _object12.postInit();
+ _object12.setVisage(1225);
+ _object12.setPosition(Common::Point(368, 35));
+ _object12.setStrip(4);
+ _object12._frame = 1;
+ _object12.changeZoom(100);
+ _object12._numFrames = 2;
+
+ _object13.postInit();
+ _object13.setVisage(1225);
+ _object13.setPosition(Common::Point(416, 33));
+ _object13.setStrip(1);
+ _object13._frame = 1;
+ _object13.changeZoom(100);
+ _object13._numFrames = 2;
+
+ _object14.postInit();
+ _object14.setVisage(1225);
+ _object14.setPosition(Common::Point(476, 30));
+ _object14.setStrip(1);
+ _object14._frame = 1;
+ _object14.changeZoom(100);
+ _object14._numFrames = 2;
+
+ _object21.postInit();
+ _object21.setVisage(235);
+ _object21.setStrip(1);
+ _object21._frame = 1;
+ _object21.setPosition(Common::Point(498, 41));
+ _object21.changeZoom(100);
+ _object21.hide();
+
+ _object15.postInit();
+ _object15.hide();
+ _object16.postInit();
+ _object16.hide();
+ _object17.postInit();
+ _object17.hide();
+ _object18.postInit();
+ _object18.hide();
+ _object19.postInit();
+ _object19.hide();
+ _object20.postInit();
+ _object20.hide();
+
+ _object9.setAction(&_action1);
+ _object10.setAction(&_action2);
+ _object11.setAction(&_action3);
+ _object12.setAction(&_action4);
+ _object13.setAction(&_action5);
+ _object14.setAction(&_action6);
+}
+
+void Scene225::remove() {
+ BF_GLOBALS._scenePalette.clearListeners();
+ SceneExt::remove();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 265 - Graduation Article
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene265::Action1::signal() {
+ switch (_actionIndex++) {
+ case 0:
+ BF_GLOBALS._scenePalette.loadPalette(2);
+ setDelay(30);
+ break;
+ case 1:
+ BF_GLOBALS._scenePalette.refresh();
+ setDelay(240);
+ break;
+ case 2:
+ ADD_MOVER(BF_GLOBALS._player, 160, 280);
+ break;
+ case 3:
+ // Wait until sound finishes playing
+ if (BF_GLOBALS._sound1.isPlaying())
+ _actionIndex = 3;
+ setDelay(1);
+ break;
+ case 4:
+ BF_GLOBALS._dayNumber = 1;
+ BF_GLOBALS._sceneManager.changeScene(190);
+ break;
+ default:
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene265::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(265);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player.setPosition(Common::Point(160, 100));
+ BF_GLOBALS._player.hide();
+ setAction(&_action1);
+}
+
+void Scene265::remove() {
+ clearScreen();
+ remove();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 270 - Living Room & Kitchen
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene270::Action1::signal() {
+ Scene270 *scene = (Scene270 *)BF_GLOBALS._sceneManager._scene;
+
+ scene->setAction(&scene->_sequenceManager2, this, 2703, &scene->_tv, NULL);
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene270::Lyle::startAction(CursorType action, Event &event) {
+ Scene270 *scene = (Scene270 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_TALK:
+ scene->_field21A0 = 1;
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2706;
+
+ if (scene->_field380 == 1) {
+ scene->setAction(&scene->_sequenceManager1, scene, 2706, &BF_GLOBALS._player, &scene->_object2, NULL);
+ } else {
+ scene->signal();
+ }
+ return true;
+ case INV_CRATE1:
+ scene->_field21A0 = 2;
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2706;
+
+ if (scene->_field380 == 1) {
+ scene->setAction(&scene->_sequenceManager1, scene, 2706, &BF_GLOBALS._player, NULL);
+ } else {
+ scene->signal();
+ }
+ return true;
+ default:
+ return NamedObject::startAction(action, event);
+ }
+}
+
+bool Scene270::Grandma::startAction(CursorType action, Event &event) {
+ Scene270 *scene = (Scene270 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_TALK:
+ switch (BF_GLOBALS._dayNumber) {
+ case 1:
+ // Day 1
+ if (scene->_field380 == 1) {
+ scene->_stripManager.start((scene->_grandma._position.x == 157) ? 2712 : 2723, &BF_GLOBALS._stripProxy);
+ } else if (BF_GLOBALS._bookmark == bBookedFrankieEvidence) {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2710;
+ scene->setAction(&scene->_sequenceManager1, scene, 2710, &BF_GLOBALS._player, &scene->_grandma, NULL);
+ } else if (BF_GLOBALS.getFlag(onDuty) || (BF_INVENTORY.getObjectScene(INV_BASEBALL_CARD) == 2) ||
+ (scene->_field386 != 0)) {
+ scene->_stripManager.start(2723, &BF_GLOBALS._stripProxy);
+ } else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2715;
+ scene->setAction(&scene->_sequenceManager1, scene, 2715, &BF_GLOBALS._player, &scene->_grandma, NULL);
+ }
+ return true;
+ case 3:
+ // Day 3
+ if (scene->_field380 == 1) {
+ scene->_stripManager.start(2712, &BF_GLOBALS._stripProxy);
+ } else if (BF_GLOBALS.getFlag(fGotGreen355fTalkedToGrannyDay3)) {
+ scene->_stripManager.start(2714, &BF_GLOBALS._stripProxy);
+ } else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2713;
+ scene->setAction(&scene->_sequenceManager1, scene, 2713, &BF_GLOBALS._player, &scene->_grandma, NULL);
+ }
+ return true;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return NamedObject::startAction(action, event);
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene270::Item::startAction(CursorType action, Event &event) {
+ Scene270 *scene = (Scene270 *)BF_GLOBALS._sceneManager._scene;
+
+ if ((action == CURSOR_USE) && (scene->_field380 == 0)) {
+ BF_GLOBALS._player.disableControl();
+ scene->_object2.postInit();
+ scene->_object2.hide();
+ scene->_sceneMode = 2705;
+ scene->setAction(&scene->_sequenceManager1, this, 2705, &BF_GLOBALS._player, &scene->_object2, NULL);
+ return true;
+ } else {
+ return NamedHotspot::startAction(action, event);
+ }
+}
+
+bool Scene270::Exit::startAction(CursorType action, Event &event) {
+ Scene270 *scene = (Scene270 *)BF_GLOBALS._sceneManager._scene;
+
+ if (!_action && !scene->_field384 && !scene->_field386) {
+ if (scene->_field380 == 1) {
+ scene->_tempPos = Common::Point(320, 140);
+ BF_GLOBALS._player.disableControl();
+
+ scene->_sceneMode = 2706;
+ scene->setAction(&scene->_sequenceManager1, scene, 2706, &BF_GLOBALS._player, &scene->_object2, NULL);
+ } else {
+ ADD_PLAYER_MOVER(320, 140);
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+Scene270::Scene270(): SceneExt() {
+ _field380 = _field382 =_field384 = _field386 = 0;
+ _field219A = _tempPos.x = _tempPos.y = _field21A0 = 0;
+ _sceneMode = 0;
+}
+
+void Scene270::synchronize(Serializer &s) {
+ SceneExt::synchronize(s);
+ s.syncAsSint16LE(_field380);
+ s.syncAsSint16LE(_field382);
+ s.syncAsSint16LE(_field384);
+ s.syncAsSint16LE(_field386);
+ s.syncAsSint16LE(_field219A);
+ s.syncAsSint16LE(_tempPos.x);
+ s.syncAsSint16LE(_tempPos.y);
+ s.syncAsSint16LE(_field21A0);
+}
+
+void Scene270::postInit(SceneObjectList *OwnerList) {
+ SceneExt::postInit();
+ loadScene(270);
+ setZoomPercents(120, 90, 130, 100);
+
+ if (BF_GLOBALS._sceneManager._previousScene != 560)
+ BF_GLOBALS._sound1.fadeSound(26);
+
+ _exit.setDetails(Rect(310, 115, 320, 167), 270, -1, -1, -1, 1, NULL);
+
+ if (BF_GLOBALS._dayNumber == 0) {
+ BF_GLOBALS._dayNumber = 1;
+ BF_INVENTORY.setObjectScene(INV_BASEBALL_CARD, 2);
+ BF_INVENTORY.setObjectScene(INV_CRATE1, 1);
+ BF_GLOBALS._sceneManager._previousScene = 710;
+ }
+
+ if (((BF_GLOBALS._bookmark >= bLauraToParamedics) && (BF_GLOBALS._dayNumber == 1) &&
+ (BF_INVENTORY.getObjectScene(INV_BASEBALL_CARD) != 2) &&
+ (BF_INVENTORY.getObjectScene(INV_BASEBALL_CARD) != 1)) ||
+ ((BF_GLOBALS._dayNumber == 3) && BF_GLOBALS.getFlag(fGotGreen355fTalkedToGrannyDay3))) {
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ _grandma.postInit();
+ _grandma.setVisage(274);
+ _grandma.setPosition(Common::Point(157, 132));
+ _grandma._numFrames = 5;
+ _grandma.animate(ANIM_MODE_2, NULL);
+ _grandma.fixPriority(129);
+ }
+
+ if (BF_GLOBALS._bookmark == bTalkedToGrannyAboutSkipsCard) {
+ _grandma.postInit();
+ }
+
+ if (BF_GLOBALS._sceneManager._previousScene == 710) {
+ _skip.postInit();
+ _laura.postInit();
+ _lyle.postInit();
+ _grandma.postInit();
+ }
+
+ _stripManager.addSpeaker(&_grandmaSpeaker);
+ _stripManager.addSpeaker(&_lyleSpeaker);
+ _stripManager.addSpeaker(&_jakeSpeaker);
+ _stripManager.addSpeaker(&_skipSpeaker);
+ _stripManager.addSpeaker(&_lauraSpeaker);
+ _stripManager.addSpeaker(&_gameTextSpeaker);
+
+ _tv.postInit();
+ _tv.setVisage(270);
+ _tv.setPosition(Common::Point(264, 74));
+ _tv.setStrip(5);
+ _tv.fixPriority(132);
+ _tv._numFrames = 3;
+ _tv.setAction(&_action1);
+
+ _fireplace.postInit();
+ _fireplace.setVisage(270);
+ _fireplace.setStrip(2);
+ _fireplace.setPosition(Common::Point(302, 121));
+ _fireplace.fixPriority(132);
+ _fireplace.animate(ANIM_MODE_2, NULL);
+
+ _fridge.setDetails(Rect(0, 56, 56, 130), 270, 9, 10, 11, 1, NULL);
+ _object3.setDetails(270, 12, 13, 14, 1, NULL);
+ _laura.setDetails(270, 15, -1, -1, 1, NULL);
+ _skip.setDetails(270, 14, -1, -1, 1, NULL);
+ _lyle.setDetails(270, 34, 35, 36, 1, NULL);
+ _tv.setDetails(270, 3, 4, 5, 1, NULL);
+ _fireplace.setDetails(270, 6, 7, 8, 1, NULL);
+
+ if ((BF_GLOBALS._sceneManager._previousScene == 710) && (BF_GLOBALS._bookmark == bTalkedToGrannyAboutSkipsCard)) {
+ _grandma.setDetails(270, 15, 16, 17, 1, NULL);
+ } else {
+ _grandma.setDetails(270, 40, 16, 17, 1, NULL);
+ }
+
+ _afgan.setDetails(4, 270, 27, 28, 29, 1);
+ _couch.setDetails(1, 270, 18, 19, 20, 1);
+ _photos.setDetails(Rect(278, 50, 318, 72), 270, 21, 22, 23, 1, NULL);
+ _appliances.setDetails(3, 270, 24, 25, 26, 1);
+ _ivy.setDetails(2, 270, 30, 31, 32, 1);
+ _background.setDetails(Rect(0, 0, 320, 168), 270, 0, 1, 2, 1, NULL);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player._moveDiff.x = 8;
+ BF_GLOBALS._player.changeZoom(-1);
+ BF_GLOBALS._player.disableControl();
+
+ switch (BF_GLOBALS._sceneManager._previousScene) {
+ case 560:
+ if (BF_GLOBALS._bookmark == bTalkedToGrannyAboutSkipsCard) {
+ _field219A = 1;
+ BF_GLOBALS._player._moveDiff.x = 5;
+ _field386 = 0;
+
+ _grandma.animate(ANIM_MODE_1, NULL);
+ setAction(&_sequenceManager1, NULL, 2720, &BF_GLOBALS._player, &_grandma, NULL);
+ BF_GLOBALS._bookmark = bLyleStoppedBy;
+ } else {
+ _sceneMode = 2700;
+ setAction(&_sequenceManager1, this, 2700, &BF_GLOBALS._player, NULL);
+ }
+ break;
+ case 690:
+ BF_GLOBALS._player.setPosition(Common::Point(-13, 162));
+ _sceneMode = 2702;
+ setAction(&_sequenceManager1, this, 2702, &BF_GLOBALS._player, NULL);
+ break;
+ case 710:
+ BF_GLOBALS._player._moveDiff.x = 6;
+ _sceneMode = 2717;
+ setAction(&_sequenceManager1, this, 2717, &BF_GLOBALS._player, &_laura, &_skip, &_lyle, &_grandma, NULL);
+ break;
+ default:
+ _sceneMode = 2701;
+ setAction(&_sequenceManager1, this, 2701, &BF_GLOBALS._player, NULL);
+ break;
+ }
+}
+
+void Scene270::signal() {
+ switch (_sceneMode) {
+ case 10:
+ _sceneMode = 2702;
+ setAction(&_sequenceManager1, this, 2702, &BF_GLOBALS._player, NULL);
+ break;
+ case 11:
+ BF_GLOBALS._player._strip = 8;
+ BF_GLOBALS._player._frame = 1;
+
+ if (_field382) {
+ _sceneMode = 2719;
+ _stripManager.start(2720, this);
+ } else {
+ _field382 = 1;
+ _sceneMode = 13;
+ _stripManager.start(2718, this);
+ }
+ break;
+ case 12:
+ BF_GLOBALS._player._strip = 8;
+ BF_GLOBALS._player._frame = 1;
+ _sceneMode = 13;
+ _stripManager.start(2719, this);
+ break;
+ case 13:
+ case 2713:
+ case 2715:
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2700:
+ _field219A = 1;
+ BF_GLOBALS._player._strip = 6;
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2701:
+ BF_GLOBALS._player._strip = 2;
+ BF_GLOBALS._player.enableControl();
+ _field219A = 1;
+ break;
+ case 2702:
+ BF_GLOBALS._player._strip = 1;
+ BF_GLOBALS._player.enableControl();
+ _field219A = 1;
+ break;
+ case 2705:
+ _field380 = 1;
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2706:
+ BF_GLOBALS._player.changeZoom(-1);
+ _object2.remove();
+ _field380 = 0;
+
+ switch (_field21A0) {
+ case 1:
+ _sceneMode = 11;
+ ADD_PLAYER_MOVER(192, 135);
+ break;
+ case 2:
+ if (BF_GLOBALS.getFlag(shownLyleCrate1Day1)) {
+ SceneItem::display2(270, 37);
+ BF_GLOBALS._player.enableControl();
+ } else {
+ BF_GLOBALS._uiElements.addScore(30);
+ BF_GLOBALS.setFlag(shownLyleCrate1Day1);
+ _sceneMode = 12;
+ ADD_PLAYER_MOVER(192, 135);
+ }
+ break;
+ default:
+ BF_GLOBALS._player.enableControl();
+ ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, _tempPos.x, _tempPos.y);
+ break;
+ }
+
+ _field21A0 = 0;
+ break;
+ case 2710:
+ BF_GLOBALS._bookmark = bEndOfWorkDayOne;
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2711:
+ BF_GLOBALS._player.setPosition(Common::Point(150, 300));
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(180);
+ BF_GLOBALS._bookmark = bLyleStoppedBy;
+ break;
+ case 2712:
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(180);
+ break;
+ case 2714:
+ BF_GLOBALS._sceneManager.changeScene(560);
+ break;
+ case 2717:
+ _sceneMode = 2718;
+ _lyle.setFrame2(-1);
+ setAction(&_sequenceManager1, this, 2718, &BF_GLOBALS._player, &_laura, &_skip,
+ &_lyle, &_grandma, NULL);
+ break;
+ case 2718:
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ _field219A = 1;
+ BF_GLOBALS._bookmark = bTalkedToGrannyAboutSkipsCard;
+
+ _grandma.setStrip(8);
+ _grandma._frame = 5;
+ _field384 = 1;
+ _field384 = 1;
+
+ BF_GLOBALS._player._moveDiff.x = 8;
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2719:
+ _sceneMode = 13;
+ _field384 = 0;
+ BF_GLOBALS._player._moveDiff.x = 6;
+
+ _lyle.setFrame2(-1);
+ setAction(&_sequenceManager1, this, 2719, &BF_GLOBALS._player, &_lyle, &_grandma, NULL);
+ break;
+ default:
+ break;
+ }
+}
+
+void Scene270::process(Event &event) {
+ if ((event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == CURSOR_WALK) &&
+ (_field380 == 1) && !_action) {
+ _tempPos = event.mousePos;
+ BF_GLOBALS._player.disableControl();
+ _sceneMode = 2706;
+ setAction(&_sequenceManager1, this, 2706, &BF_GLOBALS._player, &_object2, NULL);
+ event.handled = true;
+ }
+
+ SceneExt::process(event);
+
+ if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1)) &&
+ !_field384 && !_field386) {
+ // Check if the cursor is on an exit
+ if (_exit.contains(event.mousePos)) {
+ GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_E);
+ 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 Scene270::dispatch() {
+ if (_field384) {
+ _lyle.updateAngle(BF_GLOBALS._player._position);
+
+ if (_lyle._angle < 110)
+ _lyle.setFrame2(4);
+ else if (_lyle._angle < 180)
+ _lyle.setFrame2(3);
+ else if (_lyle._angle < 250)
+ _lyle.setFrame2(2);
+ else
+ _lyle.setFrame2(1);
+ }
+
+ if (_field386) {
+ if (BF_GLOBALS._player._position.x > 290) {
+ _grandma.setFrame(6);
+ } else if (BF_GLOBALS._player._position.x > 274) {
+ _grandma.setFrame(5);
+ } else if (BF_GLOBALS._player._position.x > 258) {
+ _grandma.setFrame(4);
+ } else if (BF_GLOBALS._player._position.x > 242) {
+ _grandma.setFrame(3);
+ } else if (BF_GLOBALS._player._position.x > 226) {
+ _grandma.setFrame(2);
+ } else if (BF_GLOBALS._player._position.x > 210) {
+ if ((_grandma._animateMode == ANIM_MODE_NONE) && (_grandma._frame > 1))
+ _grandma.animate(ANIM_MODE_6, NULL);
+ } else {
+ if ((_grandma._animateMode == ANIM_MODE_NONE) && (_grandma._frame < 3))
+ _grandma.animate(ANIM_MODE_4, 3, 1, NULL);
+ }
+ }
+
+ if (!_action && _field219A) {
+ if ((BF_GLOBALS._player._position.x > 236) && (BF_GLOBALS._player._position.y < 125)) {
+ _field219A = 0;
+ BF_GLOBALS._player.disableControl();
+ if (!_field384) {
+ BF_GLOBALS._sceneManager.changeScene(560);
+ } else {
+ BF_GLOBALS._player.addMover(NULL);
+ SceneItem::display2(270, 38);
+ _sceneMode = 2700;
+ ADD_PLAYER_MOVER(BF_GLOBALS._player._position.x - 10, BF_GLOBALS._player._position.y + 15);
+ }
+ }
+
+ if (BF_GLOBALS._player._position.x <= 20) {
+ _field219A = 0;
+ BF_GLOBALS._player.disableControl();
+ BF_GLOBALS._player.addMover(NULL);
+ BF_GLOBALS._player._strip = 3;
+ BF_GLOBALS._player._frame = 1;
+
+ if (BF_GLOBALS._sceneObjects->contains(&_grandma)) {
+ _sceneMode = 10;
+ _stripManager.start(2711, this);
+ } else {
+ SceneItem::display2(270, 33);
+ _sceneMode = 2702;
+ setAction(&_sequenceManager1, this, 2702, &BF_GLOBALS._player, NULL);
+ }
+ }
+
+ if (BF_GLOBALS._player._position.x > 310) {
+ _field219A = 0;
+ BF_GLOBALS._player.disableControl();
+ if (!_field384 && !_field386) {
+ _sceneMode = 2712;
+ setAction(&_sequenceManager1, this, 2712, &BF_GLOBALS._player, NULL);
+ } else {
+ BF_GLOBALS._player.addMover(NULL);
+ BF_GLOBALS._player._strip = 2;
+ BF_GLOBALS._player._frame = 1;
+ SceneItem::display2(270, !_field384 ? 39 : 38);
+ _sceneMode = 2701;
+
+ ADD_PLAYER_MOVER(BF_GLOBALS._player._position.x - 10, BF_GLOBALS._player._position.y);
+ }
+ }
+ }
+
+ SceneExt::dispatch();
+}
+
+/*--------------------------------------------------------------------------
+ * Scene 271 - Living Room & Kitchen #2
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene271::Action1::signal() {
+ Scene271 *scene = (Scene271 *)BF_GLOBALS._sceneManager._scene;
+
+ scene->setAction(&scene->_sequenceManager2, this, 2703, &scene->_tv, NULL);
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene271::Object12::startAction(CursorType action, Event &event) {
+ Scene271 *scene = (Scene271 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (action) {
+ case CURSOR_TALK:
+ if (BF_GLOBALS._dayNumber == 1) {
+ if (!BF_GLOBALS.getFlag(onDuty) && (BF_INVENTORY.getObjectScene(INV_BASEBALL_CARD) != 2)) {
+ scene->_sceneMode = 2715;
+ scene->setAction(&scene->_sequenceManager1, scene, 2715, &BF_GLOBALS._player, NULL);
+ return true;
+ }
+ } else if (BF_GLOBALS._dayNumber == 3) {
+ if (scene->_field796 == 1) {
+ scene->_stripManager.start(2712, &BF_GLOBALS._stripProxy);
+ return true;
+ } else if (BF_GLOBALS.getFlag(fGotGreen355fTalkedToGrannyDay3)) {
+ scene->_stripManager.start(2714, &BF_GLOBALS._stripProxy);
+ return true;
+ } else {
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2713;
+ scene->setAction(&scene->_sequenceManager1, scene, 2713, &BF_GLOBALS._player, &scene->_object12, NULL);
+ BF_GLOBALS.setFlag(fGotGreen355fTalkedToGrannyDay3);
+ return true;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return NamedObject::startAction(action, event);
+}
+
+/*--------------------------------------------------------------------------*/
+
+bool Scene271::Item::startAction(CursorType action, Event &event) {
+ Scene271 *scene = (Scene271 *)BF_GLOBALS._sceneManager._scene;
+
+ if ((action == CURSOR_USE) && !scene->_field796) {
+ BF_GLOBALS._player.disableControl();
+ scene->_object1.postInit();
+ scene->_object1.hide();
+
+ scene->_sceneMode = 2705;
+ scene->setAction(&scene->_sequenceManager1, scene, 2705, &BF_GLOBALS._player, &scene->_object1, NULL);
+ return true;
+ } else {
+ return NamedHotspot::startAction(action, event);
+ }
+}
+
+bool Scene271::Exit::startAction(CursorType action, Event &event) {
+ Scene271 *scene = (Scene271 *)BF_GLOBALS._sceneManager._scene;
+
+ if (!scene->_action) {
+ if (scene->_field796 == 1) {
+ scene->_tempPos = Common::Point(320, 140);
+ BF_GLOBALS._player.disableControl();
+ scene->_sceneMode = 2706;
+ scene->setAction(&scene->_sequenceManager1, scene, 2706, &BF_GLOBALS._player, &scene->_object1, NULL);
+ } else {
+ ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 320, 140);
+ }
+ }
+
+ return true;
+}
+
+/*--------------------------------------------------------------------------*/
+
+Scene271::Scene271() {
+ _field796 = _field2E16 = 0;
+ _tempPos.x = _tempPos.y = 0;
+ _rect1 = Rect(236, 120, 266, 130);
+}
+
+void Scene271::synchronize(Serializer &s) {
+ PalettedScene::synchronize(s);
+
+ s.syncAsSint16LE(_field796);
+ s.syncAsSint16LE(_field2E16);
+ s.syncAsSint16LE(_tempPos.x);
+ s.syncAsSint16LE(_tempPos.y);
+ _rect1.synchronize(s);
+}
+
+void Scene271::postInit(SceneObjectList *OwnerList) {
+ PalettedScene::postInit();
+ loadScene(270);
+ setZoomPercents(120, 80, 140, 100);
+ BF_GLOBALS._sound1.fadeSound(26);
+
+ _stripManager.addSpeaker(&_grandmaSpeaker);
+ _stripManager.addSpeaker(&_lyleSpeaker);
+ _stripManager.addSpeaker(&_jakeSpeaker);
+ _stripManager.addSpeaker(&_skipSpeaker);
+ _stripManager.addSpeaker(&_lauraSpeaker);
+ _stripManager.addSpeaker(&_gameTextSpeaker);
+ _stripManager.addSpeaker(&_granTextSpeaker);
+ _stripManager.addSpeaker(&_lyleTextSpeaker);
+
+ _exit.setDetails(Rect(310, 115, 320, 167), 270, -1, -1, -1, 1, NULL);
+
+ _tv.postInit();
+ _tv.setVisage(270);
+ _tv.setPosition(Common::Point(264, 74));
+ _tv.setStrip(5);
+ _tv.fixPriority(132);
+ _tv._numFrames = 3;
+ _tv.setAction(&_action1);
+
+ if ((BF_GLOBALS._sceneManager._previousScene != 280) && (BF_GLOBALS._sceneManager._previousScene != 620)) {
+ _object10.postInit();
+ _object10.setVisage(270);
+ _object10.setStrip(2);
+ _object10.setPosition(Common::Point(302, 121));
+ _object10.fixPriority(132);
+ _object10.animate(ANIM_MODE_2, NULL);
+ }
+
+ _object5.postInit();
+ _object5.hide();
+
+ _item5.setDetails(Rect(0, 56, 56, 130), 270, 9, 10, 11, 1, NULL);
+ _object6.setDetails(270, 12, 13, 14, 1, NULL);
+ _object7.setDetails(270, 15, -1, -1, 1, NULL);
+ _object8.setDetails(270, 14, -1, -1, 1, NULL);
+ _object11.setDetails(270, -1, -1, -1, 1, NULL);
+ _tv.setDetails(270, 3, 4, 5, 1, NULL);
+ _object10.setDetails(270, 6, 7, 8, 1, NULL);
+ _object12.setDetails(270, 15, 16, 17, 1, NULL);
+ _item3.setDetails(4, 270, 27, 28, 29, 1);
+ _item1.setDetails(1, 270, 18, 19, 20, 1);
+ _item6.setDetails(Rect(278, 50, 318, 72), 270, 21, 22, 23, 1, NULL);
+ _item2.setDetails(3, 270, 24, 25, 26, 1);
+ _item4.setDetails(2, 270, 30, 31, 32, 1);
+ _item11.setDetails(Rect(0, 0, SCREEN_WIDTH, BF_INTERFACE_Y), 270, 0, 1, 2, 1, NULL);
+
+ BF_GLOBALS._player.postInit();
+ BF_GLOBALS._player._moveDiff.x = 8;
+ BF_GLOBALS._player.changeZoom(-1);
+ BF_GLOBALS._player.disableControl();
+
+ _field796 = 0;
+ _sceneMode = 0;
+ _field2E16 = 0;
+
+ if (BF_GLOBALS._dayNumber == 0) {
+ BF_GLOBALS._dayNumber = 1;
+ BF_GLOBALS._sceneManager.changeScene(180);
+ }
+
+ switch (BF_GLOBALS._sceneManager._previousScene) {
+ case 180:
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ BF_GLOBALS._player.setVisage(151);
+ BF_GLOBALS._player.setPosition(Common::Point(348, 151));
+
+ _object12.postInit();
+ _object12.setVisage(274);
+ _object12.setPosition(Common::Point(157, 132));
+ _object12._numFrames = 5;
+ _object12.animate(ANIM_MODE_2, NULL);
+ break;
+ case 280:
+ BF_GLOBALS._player.setVisage(271);
+ BF_GLOBALS._player.setStrip(5);
+ BF_GLOBALS._player._frame = 6;
+ BF_GLOBALS._player.setPosition(Common::Point(228, 138));
+
+ _object1.postInit();
+ _object1.setPosition(Common::Point(340, 100));
+
+ _object11.postInit();
+ _object11.setVisage(272);
+ _object11.setStrip(1);
+ _object11._frame = 2;
+ _object11.setPosition(Common::Point(35, 136));
+
+ _object6.postInit();
+ _object6.hide();
+
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ _object12.postInit();
+ _object12.setVisage(274);
+ _object12.setPosition(Common::Point(157, 132));
+ _object12.animate(ANIM_MODE_2, NULL);
+ _object12._numFrames = 5;
+ _object12.fixPriority(120);
+ _field796 = 1;
+ break;
+ case 590:
+ BF_GLOBALS._player.setVisage(275);
+ BF_GLOBALS._player.setStrip(5);
+ BF_GLOBALS._player.setPosition(Common::Point(58, 133));
+ BF_GLOBALS._player.changeZoom(-1);
+
+ _object8.postInit();
+ _object8.setVisage(279);
+ _object8.setPosition(Common::Point(87, 127));
+ _object8.fixPriority(146);
+
+ _object7.postInit();
+ _object7.setVisage(277);
+ _object7.setStrip(7);
+ _object7.setPosition(Common::Point(48, 149));
+
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ _object12.postInit();
+ _object12.setVisage(276);
+ _object12.setPosition(Common::Point(129, 130));
+
+ _object2.postInit();
+ _object2.setVisage(270);
+ _object2.setStrip(3);
+ _object2.setFrame(2);
+ _object2.setPosition(Common::Point(62, 101));
+ _object2.fixPriority(145);
+
+ _object3.postInit();
+ _object3.setVisage(270);
+ _object3.setStrip(3);
+ _object3.setFrame(3);
+ _object3.setPosition(Common::Point(90, 104));
+ _object3.fixPriority(132);
+
+ _object4.postInit();
+ _object4.setVisage(270);
+ _object4.setStrip(3);
+ _object4.setFrame(4);
+ _object4.setPosition(Common::Point(132, 87));
+ _object4.fixPriority(1);
+ break;
+ default:
+ BF_GLOBALS._player.setVisage(271);
+ BF_GLOBALS._player.setFrame(1);
+ BF_GLOBALS._player.setPosition(Common::Point(239, 145));
+
+ BF_GLOBALS._walkRegions.proc1(6);
+ BF_GLOBALS._walkRegions.proc1(14);
+ BF_GLOBALS._walkRegions.proc1(19);
+
+ _object12.postInit();
+ _object12.setVisage(274);
+ _object12.setPosition(Common::Point(157, 132));
+ _object12.animate(ANIM_MODE_2, NULL);
+ _object12._numFrames = 5;
+
+ _object1.postInit();
+ _object1.setVisage(271);
+ _object1.setStrip(4);
+ _object1.setPosition(Common::Point(220, 117));
+ _object1.fixPriority(145);
+ break;
+ }
+
+ _sceneMode = 11;
+
+ static uint32 black = 0;
+ add2Faders((const byte *)&black, 2, 270, this);
+}
+
+void Scene271::signal() {
+ static uint32 black = 0;
+
+ switch (_sceneMode) {
+ case 10:
+ _sceneMode = 2702;
+ setAction(&_sequenceManager1, this, 2702, &BF_GLOBALS._player, NULL);
+ break;
+ case 11:
+ switch (BF_GLOBALS._sceneManager._previousScene) {
+ case 180:
+ _sceneMode = 2716;
+ setAction(&_sequenceManager1, this, 2716, &BF_GLOBALS._player, &_object12, NULL);
+ break;
+ case 280:
+ BF_GLOBALS._dayNumber = 3;
+ BF_INVENTORY.alterInventory(3);
+
+ _sceneMode = 2707;
+ setAction(&_sequenceManager1, this, 2707, &BF_GLOBALS._player, &_object1, &_object11, &_object5, &_object6, NULL);
+ break;
+ case 590:
+ _sceneMode = 2704;
+ setAction(&_sequenceManager1, this, 2707, &BF_GLOBALS._player, &_object12, &_object7, &_object8, NULL);
+ default:
+ _object11.postInit();
+ _object11.setPosition(Common::Point(340, 100));
+ BF_GLOBALS._sound1.play(36);
+
+ _sceneMode = 2709;
+ setAction(&_sequenceManager1, this, 2709, &BF_GLOBALS._player, &_object1, &_object12, &_object11, NULL);
+ break;
+ }
+ break;
+ case 12:
+ BF_GLOBALS._v51C44 = 0;
+ BF_GLOBALS._sound1.changeSound(67);
+ BF_GLOBALS._sceneManager.changeScene(280);
+ break;
+ case 13:
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(666);
+ break;
+ case 2702:
+ BF_GLOBALS._player._strip = 1;
+ BF_GLOBALS._player.enableControl();
+ _field2E16 = 1;
+ break;
+ case 2704:
+ BF_GLOBALS._v51C44 = 1;
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(690);
+ break;
+ case 2705:
+ _field796 = 1;
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2706:
+ BF_GLOBALS._player.changeZoom(-1);
+ BF_GLOBALS._player.enableControl();
+
+ _object1.remove();
+ _field796 = 0;
+ ADD_PLAYER_MOVER(_tempPos.x, _tempPos.y);
+ break;
+ case 2707:
+ BF_GLOBALS._player.enableControl();
+ _field796 = 1;
+ _field2E16 = 1;
+
+ _object1.remove();
+ _object11.remove();
+
+ BF_INVENTORY.setObjectScene(INV_LYLE_CARD, 1);
+ break;
+ case 2709:
+ BF_GLOBALS._sound1.play(68);
+ _sceneMode = 12;
+ addFader((const byte *)&black, 2, this);
+ break;
+ case 2712:
+ BF_GLOBALS._v51C44 = 1;
+ BF_GLOBALS._sound1.fadeOut2(NULL);
+ BF_GLOBALS._sceneManager.changeScene(180);
+ break;
+ case 2713:
+ BF_GLOBALS._player.enableControl();
+ break;
+ case 2714:
+ BF_GLOBALS._v51C44 = 1;
+ BF_GLOBALS._sceneManager.changeScene(560);
+ break;
+ case 2715:
+ break;
+ case 2716:
+ BF_GLOBALS._deathReason = 24;
+ _sceneMode = 13;
+ addFader((const byte *)&black, 2, this);
+ break;
+ }
+}
+
+void Scene271::process(Event &event) {
+ if ((event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == CURSOR_WALK) &&
+ (_field796 == 1) && (!_action)) {
+ _tempPos = event.mousePos;
+ BF_GLOBALS._player.disableControl();
+
+ _sceneMode = 2706;
+ setAction(&_sequenceManager1, this, 2706, &BF_GLOBALS._player, &_object1, NULL);
+ event.handled = true;
+ }
+
+ SceneExt::process(event);
+
+ if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < BF_INTERFACE_Y)) {
+ if (_exit.contains(event.mousePos)) {
+ GfxSurface cursor = _cursorVisage.getFrame(EXITFRAME_E);
+ BF_GLOBALS._events.setCursor(cursor);
+ } else {
+ CursorType cursorId = BF_GLOBALS._events.getCursor();
+ BF_GLOBALS._events.setCursor(cursorId);
+ }
+ }
+}
+
+void Scene271::dispatch() {
+ if (!_action && (_field2E16 == 1)) {
+ if ((BF_GLOBALS._player._position.x > 236) && (BF_GLOBALS._player._position.y < 120)) {
+ _field2E16 = 0;
+ BF_GLOBALS._sceneManager.changeScene(560);
+ }
+
+ if (BF_GLOBALS._player._position.x <= 20) {
+ _field2E16 = 0;
+ BF_GLOBALS._player.disableControl();
+ BF_GLOBALS._player._mover->remove();
+ BF_GLOBALS._player._strip = 3;
+ BF_GLOBALS._player._frame = 1;
+
+ if (BF_GLOBALS._sceneObjects->contains(&_object12)) {
+ _sceneMode = 10;
+ _stripManager.start(2711, this);
+ } else {
+ SceneItem::display2(270, 33);
+ _sceneMode = 2702;
+ setAction(&_sequenceManager1, this, 2702, &BF_GLOBALS._player, NULL);
+ }
+ }
+
+ if (BF_GLOBALS._player._position.x >= 300) {
+ _field2E16 = 0;
+ BF_GLOBALS._player.disableControl();
+ _sceneMode = 2712;
+ setAction(&_sequenceManager1, this, 2712, &BF_GLOBALS._player, NULL);
+ }
+ }
+
+ SceneExt::dispatch();
+}
+
+} // End of namespace BlueForce
+
+} // End of namespace TsAGE