diff options
author | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
---|---|---|
committer | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
commit | 00279659b22cbd5db739d5351e83a9fc2a2ae408 (patch) | |
tree | 497f06f46820043cbdf1725652b8f0073223e24a /engines/tsage/blue_force/blueforce_scenes3.cpp | |
parent | d932df79bed5aac97e17c0920a5e75cb5ce733ee (diff) | |
parent | d1628feb761acc9f4607f64de3eb620fea53bcc9 (diff) | |
download | scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.gz scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.bz2 scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.zip |
Merge remote branch 'upstream/master' into pegasus
Conflicts:
video/qt_decoder.cpp
Diffstat (limited to 'engines/tsage/blue_force/blueforce_scenes3.cpp')
-rw-r--r-- | engines/tsage/blue_force/blueforce_scenes3.cpp | 719 |
1 files changed, 386 insertions, 333 deletions
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp index 6edd6d1aaa..a63f45d8df 100644 --- a/engines/tsage/blue_force/blueforce_scenes3.cpp +++ b/engines/tsage/blue_force/blueforce_scenes3.cpp @@ -58,7 +58,7 @@ bool Scene300::Object19::startAction(CursorType action, Event &event) { return true; } - +// entrance door bool Scene300::Item1::startAction(CursorType action, Event &event) { if (action == CURSOR_USE) { Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene; @@ -75,6 +75,8 @@ bool Scene300::Item1::startAction(CursorType action, Event &event) { bool Scene300::Item2::startAction(CursorType action, Event &event) { if ((action == CURSOR_LOOK) || (action == CURSOR_USE)) { Scene300 *scene = (Scene300 *)BF_GLOBALS._sceneManager._scene; + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 0; scene->setAction(&scene->_sequenceManager1, scene, 304, &scene->_object11, NULL); return true; } else { @@ -108,7 +110,7 @@ void Scene300::Action1::signal() { setDelay(1); break; case 2: { - ADD_PLAYER_MOVER_THIS(BF_GLOBALS._player, BF_GLOBALS._player._position.x - 8, + ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x - 8, BF_GLOBALS._player._position.y); break; } @@ -183,12 +185,13 @@ void Scene300::Action4::signal() { break; case 2: BF_GLOBALS._sceneManager.changeScene(60); + setDelay(15); break; case 3: setAction(&scene->_sequenceManager1, this, 319, &scene->_object19, NULL); break; case 4: - BF_GLOBALS.setFlag(2); + BF_GLOBALS.setFlag(onBike); BF_GLOBALS._sceneManager.changeScene(190); break; default: @@ -213,6 +216,7 @@ void Scene300::Action5::signal() { break; case 3: { ADD_PLAYER_MOVER_NULL(BF_GLOBALS._player, 186, 140); + setDelay(3); break; } case 4: @@ -302,14 +306,14 @@ void Scene300::postInit(SceneObjectList *OwnerList) { break; case 190: _sceneMode = 0; - if (!BF_GLOBALS.getFlag(2)) { + if (!BF_GLOBALS.getFlag(onBike)) { _sceneMode = 7308; BF_GLOBALS._player.setPosition(Common::Point(175, 50)); ADD_PLAYER_MOVER_THIS(BF_GLOBALS._player, 123, 71); if ((BF_GLOBALS._dayNumber == 2) && (BF_GLOBALS._bookmark < bEndDayOne)) - setup(); - } else if (!BF_GLOBALS.getFlag(3)) { + setupInspection(); + } else if (!BF_GLOBALS.getFlag(onDuty)) { BF_GLOBALS._player.disableControl(); _sceneMode = 300; setAction(&_sequenceManager1, this, 300, &BF_GLOBALS._player, NULL); @@ -328,7 +332,7 @@ void Scene300::postInit(SceneObjectList *OwnerList) { setAction(&_sequenceManager1, this, 306, &BF_GLOBALS._player, &_object8, NULL); } else { BF_GLOBALS._player.setVisage(1304); - setup(); + setupInspection(); BF_GLOBALS._player.disableControl(); _sceneMode = 0; setAction(&_sequenceManager1, this, 306, &BF_GLOBALS._player, &_object8, NULL); @@ -348,13 +352,13 @@ void Scene300::postInit(SceneObjectList *OwnerList) { _item13.setDetails(3, 300, 25, 26, 27, 1); _item2.setDetails(Rect(266, 54, 272, 59), 300, -1, -1, -1, 1, NULL); _item1.setDetails(Rect(262, 47, 299, 76), 300, 1, 13, -1, 1, NULL); - _item4.setDetails(Rect(0, 85, SCREEN_WIDTH - 1, BF_INTERFACE_Y - 1), 300, 6, 13, 15, 1, NULL); + _item4.setDetails(Rect(0, 85, SCREEN_WIDTH - 1, UI_INTERFACE_Y - 1), 300, 6, 13, 15, 1, NULL); _item7.setDetails(Rect(219, 46, 251, 74), 300, 22, 23, 24, 1, NULL); _item8.setDetails(Rect(301, 53, 319, 78), 300, 22, 23, 24, 1, NULL); _item5.setDetails(Rect(179, 44, 200, 55), 300, 8, 13, 17, 1, NULL); _item6.setDetails(Rect(210, 46, 231, 55), 300, 8, 13, 17, 1, NULL); _item3.setDetails(Rect(160, 0, SCREEN_WIDTH - 1, 75), 300, 4, 13, 14, 1, NULL); - _item9.setDetails(Rect(0, 0, SCREEN_WIDTH, BF_INTERFACE_Y), 300, 29, 30, 31, 1, NULL); + _item9.setDetails(Rect(0, 0, SCREEN_WIDTH, UI_INTERFACE_Y), 300, 29, 30, 31, 1, NULL); } void Scene300::signal() { @@ -420,7 +424,7 @@ void Scene300::signal() { setAction(&_sequenceManager1, this, 312, &_object1, &_object16, NULL); break; case 317: - BF_GLOBALS.setFlag(2); + BF_GLOBALS.setFlag(onBike); BF_GLOBALS._sceneManager.changeScene(60); break; case 318: @@ -474,10 +478,10 @@ void Scene300::signal() { _object10.postInit(); _object10.hide(); - if (BF_GLOBALS.getFlag(1)) { + if (BF_GLOBALS.getFlag(gunClean)) { BF_GLOBALS._player.disableControl(); _sceneMode = 4308; - setAction(&_sequenceManager1, this, 6307, &_object2, &_object1, &_object9, &_object10, NULL); + setAction(&_sequenceManager1, this, 6307, &_object12, &_object1, &_object9, &_object10, NULL); } else { BF_GLOBALS._player.disableControl(); _sceneMode = 4308; @@ -523,7 +527,7 @@ void Scene300::signal() { void Scene300::process(Event &event) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_item14.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_NE); @@ -552,7 +556,7 @@ void Scene300::dispatch() { if ((BF_GLOBALS._player._position.y < 59) && (BF_GLOBALS._player._position.x > 137) && (_sceneMode != 6308) && (_sceneMode != 7308)) { - BF_GLOBALS._v4CEA4 = 3; + // The original was setting a useless global variable (removed) _sceneMode = 6308; BF_GLOBALS._player.disableControl(); ADD_MOVER(BF_GLOBALS._player, BF_GLOBALS._player._position.x + 20, @@ -563,7 +567,7 @@ void Scene300::dispatch() { setAction(&_action2); if (BF_GLOBALS._player._position.x >= 315) { - if (BF_GLOBALS.getFlag(onDuty) || (BF_GLOBALS._bookmark == bNone) || !BF_GLOBALS.getFlag(fWithLyle)) { + if (BF_GLOBALS.getFlag(onDuty) || (BF_GLOBALS._bookmark == bNone) || BF_GLOBALS.getFlag(fWithLyle)) { setAction(&_action1); } else { BF_GLOBALS._player.disableControl(); @@ -574,7 +578,7 @@ void Scene300::dispatch() { } } -void Scene300::setup() { +void Scene300::setupInspection() { _object13.postInit(); _object13.setVisage(307); _object13.setStrip(6); @@ -618,7 +622,7 @@ void Scene300::setup() { _object1._moveDiff = Common::Point(3, 1); _object1.setObjectWrapper(new SceneObjectWrapper()); _object1.animate(ANIM_MODE_1, NULL); - _object2.setup(&_object1, 306, 4, 9); + _object2.setup(&_object1, 306, 4, 29); BF_GLOBALS._sceneItems.addItems(&_object13, &_object14, &_object15, &_object16, NULL); _timer.set(3600, this, &_action5); @@ -638,7 +642,7 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - if (scene->_field1B60 || scene->_field1B64) + if (scene->_invGreenCount || scene->_invGangCount) SceneItem::display2(320, 51); else NamedHotspot::startAction(action, event); @@ -667,7 +671,7 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { scene->_stripNumber = 3174; scene->setAction(&scene->_action1); } else { - ++scene->_field1B62; + ++scene->_bookGreenCount; scene->_stripNumber = (action == INV_GREENS_GUN) ? 3168 : 0; scene->_sceneMode = 3153; scene->setAction(&scene->_sequenceManager, scene, 3153, &BF_GLOBALS._player, NULL); @@ -675,7 +679,7 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { break; case INV_FOREST_RAP: BF_GLOBALS._player.disableControl(); - scene->_stripNumber = BF_GLOBALS.getFlag(onDuty) ? 3178 : 3173; + scene->_stripNumber = BF_GLOBALS.getFlag(onDuty) ? 3173 : 3178; scene->setAction(&scene->_action1); break; case INV_GREEN_ID: @@ -693,7 +697,7 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { scene->setAction(&scene->_action1); break; case INV_COBB_RAP: - if (BF_INVENTORY._mugshot._sceneNumber == 1) + if (BF_INVENTORY.getObjectScene(INV_MUG_SHOT) == 1) NamedHotspot::startAction(action, event); else { BF_GLOBALS._player.disableControl(); @@ -717,7 +721,8 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { scene->_stripNumber = 3174; scene->setAction(&scene->_action1); } else { - if (!scene->_field1B6C & (scene->_field1B66 == 1)) { + ++scene->_bookGangCount; + if (!scene->_field1B6C && (scene->_bookGangCount == 1)) { scene->_field1B6C = 1; scene->_stripNumber = 3169; } else { @@ -737,6 +742,7 @@ bool Scene315::Barry::startAction(CursorType action, Event &event) { bool Scene315::SutterSlot::startAction(CursorType action, Event &event) { Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene; + scene->_currentCursor = action; switch (action) { case INV_GREENS_GUN: @@ -757,9 +763,9 @@ bool Scene315::SutterSlot::startAction(CursorType action, Event &event) { case INV_BOOKING_FRANKIE: case INV_BOOKING_GANG: if (action == INV_BOOKING_GREEN) - ++scene->_field1B62; + ++scene->_bookGreenCount; else - ++scene->_field1B66; + ++scene->_bookGangCount; BF_GLOBALS._player.disableControl(); scene->_sceneMode = 12; @@ -860,7 +866,7 @@ bool Scene315::BulletinMemo::startAction(CursorType action, Event &event) { return true; case CURSOR_USE: if (!BF_GLOBALS.getFlag(fGotPointsForCleaningGun)) { - BF_GLOBALS._uiElements.addScore(10); + T2_GLOBALS._uiElements.addScore(10); BF_GLOBALS.setFlag(fGotPointsForCleaningGun); } BF_GLOBALS._player.addMover(NULL); @@ -872,6 +878,7 @@ bool Scene315::BulletinMemo::startAction(CursorType action, Event &event) { } } +// Own Mail Slot bool Scene315::Object2::startAction(CursorType action, Event &event) { Scene315 *scene = (Scene315 *)BF_GLOBALS._sceneManager._scene; @@ -904,7 +911,7 @@ bool Scene315::ATFMemo::startAction(CursorType action, Event &event) { return true; case CURSOR_USE: if (!BF_GLOBALS.getFlag(fGotPointsForMemo)) { - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS.setFlag(fGotPointsForMemo); } @@ -935,8 +942,12 @@ void Scene315::Action1::signal() { break; case 3: if (scene->_sceneMode == 3169) { - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_INVENTORY.setObjectScene(INV_MUG_SHOT, 1); + //HACK: This has to be checked wether or not it occurs in the original. + //When the _sceneMode is set to 3169, the value desn't change. + //If you show the forest rapsheet, it gives points (and again... and again...) + scene->_sceneMode = 3154; } remove(); @@ -955,9 +966,9 @@ Scene315::Scene315() { BF_GLOBALS.clearFlag(fCanDrawGun); _field1B68 = true; - _field1B6A = false; - _field1B60 = _field1B62 = 0; - _field1B64 = _field1B66 = 0; + _doorOpened = false; + _invGreenCount = _bookGreenCount = 0; + _invGangCount = _bookGangCount = 0; } void Scene315::synchronize(Serializer &s) { @@ -966,18 +977,19 @@ 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(_invGreenCount); + s.syncAsSint16LE(_bookGreenCount); + s.syncAsSint16LE(_invGangCount); + s.syncAsSint16LE(_bookGangCount); s.syncAsSint16LE(_field1B6C); s.syncAsSint16LE(_field139C); s.syncAsByte(_field1B68); - s.syncAsByte(_field1B6A); + s.syncAsByte(_doorOpened); s.syncAsSint16LE(_currentCursor); } void Scene315::postInit(SceneObjectList *OwnerList) { + SceneExt::postInit(OwnerList); loadScene(315); if (BF_GLOBALS._sceneManager._previousScene != 325) @@ -1059,34 +1071,34 @@ void Scene315::postInit(SceneObjectList *OwnerList) { // Set up evidence objects in inventory if (BF_INVENTORY._bookingGreen.inInventory()) - ++_field1B60; + ++_invGreenCount; if (BF_INVENTORY._greensGun.inInventory()) - ++_field1B60; + ++_invGreenCount; if (BF_INVENTORY._greensKnife.inInventory()) - ++_field1B60; + ++_invGreenCount; if (BF_INVENTORY._bullet22.inInventory()) - ++_field1B64; + ++_invGangCount; if (BF_INVENTORY._autoRifle.inInventory()) - ++_field1B64; + ++_invGangCount; if (BF_INVENTORY._wig.inInventory()) - ++_field1B64; + ++_invGangCount; if (BF_INVENTORY._bookingFrankie.inInventory()) - ++_field1B64; + ++_invGangCount; if (BF_INVENTORY._bookingGang.inInventory()) - ++_field1B64; + ++_invGangCount; if (BF_INVENTORY._snub22.inInventory()) - ++_field1B64; + ++_invGangCount; switch (BF_GLOBALS._sceneManager._previousScene) { case 190: if (_field1398) - _field1B6A = true; + _doorOpened = true; _sceneMode = BF_GLOBALS.getFlag(onDuty) ? 3150 : 3165; setAction(&_sequenceManager, this, _sceneMode, &BF_GLOBALS._player, NULL); break; case 325: - BF_GLOBALS._uiElements._active = false; + T2_GLOBALS._uiElements._active = false; _object6.postInit(); _object7.postInit(); _object8.setFrame(8); @@ -1097,7 +1109,7 @@ void Scene315::postInit(SceneObjectList *OwnerList) { case 300: default: if (_field1398) - _field1B6A = true; + _doorOpened = true; if (!BF_GLOBALS.getFlag(onDuty)) _sceneMode = 3166; else if (!_field1398) @@ -1109,10 +1121,10 @@ void Scene315::postInit(SceneObjectList *OwnerList) { break; } - if (_field1B6A) { + if (_doorOpened) { _object8.setFrame(8); } else { - BF_GLOBALS._walkRegions.proc1(4); + BF_GLOBALS._walkRegions.disableRegion(4); } _briefingMaterial.setDetails(24, 315, 38, 39, 40, 1); @@ -1133,15 +1145,15 @@ void Scene315::signal() { BF_GLOBALS._player.enableControl(); break; case 10: - if (_field1B62) { - if (_field1B62 >= _field1B60) + if (_bookGreenCount) { + if (_bookGreenCount >= _invGreenCount) BF_GLOBALS.setFlag(fLeftTraceIn910); else ++ctr; } - if (_field1B66) { - if (_field1B66 < _field1B64) + if (_bookGangCount) { + if (_bookGangCount < _invGangCount) ++ctr; else if (BF_GLOBALS._bookmark < bBookedFrankieEvidence) BF_GLOBALS._bookmark = bBookedFrankieEvidence; @@ -1156,15 +1168,15 @@ void Scene315::signal() { BF_GLOBALS._sound1.fadeOut2(NULL); break; case 11: - if (_field1B62) { - if (_field1B62 >= _field1B60) + if (_bookGreenCount) { + if (_bookGreenCount >= _invGreenCount) BF_GLOBALS.setFlag(fLeftTraceIn910); else ++ctr; } - if (_field1B66) { - if (_field1B66 < _field1B64) + if (_bookGangCount) { + if (_bookGangCount < _invGangCount) ++ctr; else if (BF_GLOBALS._bookmark < bBookedFrankie) BF_GLOBALS._bookmark = bBookedFrankie; @@ -1175,6 +1187,7 @@ void Scene315::signal() { if (ctr == 1) { BF_GLOBALS._deathReason = 20; BF_GLOBALS._sound1.fadeOut2(NULL); + BF_GLOBALS._sceneManager.changeScene(666); } else if ((BF_GLOBALS._bookmark != bBookedFrankie) || !BF_GLOBALS.getFlag(onDuty)) { BF_GLOBALS._sound1.fadeOut2(NULL); BF_GLOBALS._sceneManager.changeScene(190); @@ -1189,10 +1202,10 @@ void Scene315::signal() { } break; case 12: - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_INVENTORY.setObjectScene((int)_currentCursor, 315); - if (!_field1B64 || (_field1B66 != _field1B64)) + if (!_invGangCount || (_bookGangCount != _invGangCount)) BF_GLOBALS._player.enableControl(); else { _field139C = 1; @@ -1211,23 +1224,24 @@ void Scene315::signal() { BF_GLOBALS._sceneManager.changeScene(325); break; case 3152: - BF_GLOBALS._walkRegions.proc1(4); + BF_GLOBALS._walkRegions.disableRegion(4); _object7.remove(); _object6.remove(); - + // No break on purpose + case 3155: BF_GLOBALS._player.enableControl(); _field1B68 = false; - BF_GLOBALS._walkRegions.proc1(4); - BF_GLOBALS._uiElements._active = true; - BF_GLOBALS._uiElements.show(); + BF_GLOBALS._walkRegions.disableRegion(4); + T2_GLOBALS._uiElements._active = true; + T2_GLOBALS._uiElements.show(); break; case 3153: - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_INVENTORY.setObjectScene((int)_currentCursor, 315); if (_stripNumber != 0) setAction(&_action1); - else if (!_field1B64 || (_field1B66 != _field1B64)) + else if (!_invGangCount || (_bookGangCount != _invGangCount)) BF_GLOBALS._player.enableControl(); else { _stripNumber = 3171; @@ -1235,15 +1249,8 @@ void Scene315::signal() { _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); + T2_GLOBALS._uiElements.addScore(10); BF_INVENTORY.setObjectScene(INV_DA_NOTE, 1); _object2.remove(); BF_GLOBALS._player.enableControl(); @@ -1254,12 +1261,12 @@ void Scene315::signal() { break; case 3158: BF_GLOBALS._player.enableControl(); - BF_GLOBALS._uiElements.addScore(10); + T2_GLOBALS._uiElements.addScore(10); BF_INVENTORY.setObjectScene(INV_FOREST_RAP, 1); break; case 3159: if (!BF_GLOBALS.getFlag(fBookedGreenEvidence)) { - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS.setFlag(fBookedGreenEvidence); } BF_GLOBALS.setFlag(gunClean); @@ -1284,6 +1291,11 @@ void Scene315::signal() { BF_GLOBALS._player.enableControl(); _object9.remove(); break; + case 3169: + T2_GLOBALS._uiElements.addScore(30); + BF_INVENTORY.setObjectScene(INV_MUG_SHOT, 1); + BF_GLOBALS._player.enableControl(); + break; case 3154: default: break; @@ -1293,7 +1305,7 @@ void Scene315::signal() { void Scene315::process(Event &event) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_swExit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_SW); @@ -1315,7 +1327,7 @@ void Scene315::dispatch() { if (_field1B68) return; - if (_field1B6A) { + if (_doorOpened) { if (BF_GLOBALS._player._position.y < 69) { BF_GLOBALS._player.disableControl(); _field1B68 = true; @@ -1718,9 +1730,9 @@ void Scene340::Action1::signal() { ++BF_GLOBALS._marinaWomanCtr; if (BF_GLOBALS.getFlag(fBackupArrived340)) { - scene->_field2654 = 1; + scene->_backupPresent = 1; scene->_harrison.setPosition(Common::Point(46, 154)); - BF_GLOBALS._walkRegions.proc1(19); + BF_GLOBALS._walkRegions.disableRegion(19); } else if (BF_GLOBALS.getFlag(fCalledBackup)) { scene->_timer1.set(40, &scene->_harrison, &scene->_action4); } @@ -1729,6 +1741,8 @@ void Scene340::Action1::signal() { BF_GLOBALS._player.enableControl(); remove(); break; + default: + break; } } @@ -1737,6 +1751,7 @@ void Scene340::Action2::signal() { switch (_actionIndex++) { case 0: { + BF_GLOBALS._player.disableControl(); ADD_PLAYER_MOVER(64, 155); break; } @@ -1754,6 +1769,8 @@ void Scene340::Action2::signal() { BF_GLOBALS._player.enableControl(); remove(); break; + default: + break; } } @@ -1762,6 +1779,7 @@ void Scene340::Action3::signal() { switch (_actionIndex++) { case 0: { + BF_GLOBALS._player.disableControl(); ADD_PLAYER_MOVER(64, 155); break; } @@ -1770,18 +1788,20 @@ void Scene340::Action3::signal() { setDelay(3); break; case 2: - scene->_stripManager.start(scene->_field2652 + 3404, this); + scene->_stripManager.start(scene->_womanDialogCount + 3404, this); break; case 3: - if (++scene->_field2652 > 2) { + if (++scene->_womanDialogCount > 2) { if (!BF_GLOBALS.getFlag(fGotAllSkip340)) BF_GLOBALS.setFlag(fGotAllSkip340); - scene->_field2652 = 0; + scene->_womanDialogCount = 0; } BF_GLOBALS._player.enableControl(); remove(); break; + default: + break; } } @@ -1800,17 +1820,19 @@ void Scene340::Action4::signal() { break; case 1: BF_GLOBALS.setFlag(fBackupArrived340); - scene->_field2654 = 1; + scene->_backupPresent = 1; setDelay(3); break; case 2: BF_GLOBALS._player.setAction(&scene->_sequenceManager3, this, 1347, &scene->_harrison, NULL); break; case 3: - BF_GLOBALS._walkRegions.proc1(19); + BF_GLOBALS._walkRegions.disableRegion(19); BF_GLOBALS._player.enableControl(); remove(); break; + default: + break; } } @@ -1820,7 +1842,7 @@ void Scene340::Action5::signal() { switch (_actionIndex++) { case 0: BF_GLOBALS._player.disableControl(); - if (scene->_field2654) { + if (scene->_backupPresent) { ADD_PLAYER_MOVER(64, 155); } else { BF_GLOBALS._player.changeAngle(45); @@ -1846,6 +1868,8 @@ void Scene340::Action5::signal() { BF_GLOBALS._player.enableControl(); remove(); break; + default: + break; } } @@ -1890,6 +1914,8 @@ void Scene340::Action7::signal() { BF_GLOBALS.setFlag(fBackupIn350); BF_GLOBALS._sceneManager.changeScene(350); break; + default: + break; } } @@ -1942,6 +1968,11 @@ void Scene340::Action8::signal() { case 4: remove(); break; + default: + // This is present in the original game + warning("Bugs"); + remove(); + break; } } @@ -1974,15 +2005,15 @@ void Scene340::Timer2::signal() { /*--------------------------------------------------------------------------*/ Scene340::Scene340(): PalettedScene() { - _seqNumber1 = _field2652 = _field2654 = 0; + _seqNumber1 = _womanDialogCount = _backupPresent = 0; } void Scene340::synchronize(Serializer &s) { PalettedScene::synchronize(s); s.syncAsSint16LE(_seqNumber1); - s.syncAsSint16LE(_field2652); - s.syncAsSint16LE(_field2654); + s.syncAsSint16LE(_womanDialogCount); + s.syncAsSint16LE(_backupPresent); } void Scene340::postInit(SceneObjectList *OwnerList) { @@ -1990,14 +2021,14 @@ void Scene340::postInit(SceneObjectList *OwnerList) { loadScene(340); setZoomPercents(126, 70, 162, 100); - BF_GLOBALS._walkRegions.proc1(13); - BF_GLOBALS._walkRegions.proc1(15); + BF_GLOBALS._walkRegions.disableRegion(13); + BF_GLOBALS._walkRegions.disableRegion(15); _timer2.set(2, NULL); _stripManager.addSpeaker(&_gameTextSpeaker); _stripManager.addSpeaker(&_jakeUniformSpeaker); - _field2652 = 0; + _womanDialogCount = 0; BF_GLOBALS._player.postInit(); BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper()); BF_GLOBALS._player.animate(ANIM_MODE_1, NULL); @@ -2006,7 +2037,7 @@ void Scene340::postInit(SceneObjectList *OwnerList) { _swExit.setDetails(15, 340, -1, -1, -1, 1); _northExit.setDetails(16, 340, -1, -1, -1, 1); - BF_GLOBALS._player._regionBitList = 0x10000; + BF_GLOBALS._player._regionBitList |= 0x10000; BF_GLOBALS._player.setVisage(BF_GLOBALS.getFlag(onDuty) ? 1341 : 129); BF_GLOBALS._player._moveDiff = Common::Point(5, 2); @@ -2054,18 +2085,18 @@ void Scene340::postInit(SceneObjectList *OwnerList) { _stripManager.addSpeaker(&_harrisonSpeaker); if (BF_GLOBALS.getFlag(fBackupIn350)) { - _field2654 = 0; + _backupPresent = 0; _harrison.setVisage(1355); _harrison.setPosition(Common::Point(289, 112)); _harrison.changeAngle(225); _harrison.setFrame(1); _harrison.fixPriority(75); - BF_GLOBALS._walkRegions.proc1(23); + BF_GLOBALS._walkRegions.disableRegion(23); } else if (BF_GLOBALS.getFlag(fBackupArrived340)) { - _field2654 = 1; + _backupPresent = 1; _harrison.setPosition(Common::Point(46, 154)); - BF_GLOBALS._walkRegions.proc1(19); + BF_GLOBALS._walkRegions.disableRegion(19); } else if (BF_GLOBALS.getFlag(fCalledBackup) && (BF_GLOBALS._marinaWomanCtr > 0)) { _timer1.set(900, &_harrison, &_action4); } @@ -2092,7 +2123,7 @@ void Scene340::postInit(SceneObjectList *OwnerList) { _item3.setDetails(7, 340, 3, 9, 12, 1); _item2.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, 39), 340, 2, 8, 11, 1, NULL); - _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, BF_INTERFACE_Y), 340, 1, 7, 10, 1, NULL); + _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, UI_INTERFACE_Y), 340, 1, 7, 10, 1, NULL); BF_GLOBALS._player.disableControl(); _sceneMode = 0; @@ -2137,7 +2168,7 @@ void Scene340::process(Event &event) { if (!event.handled) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_westExit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_W); @@ -2288,8 +2319,8 @@ void Scene342::postInit(SceneObjectList *OwnerList) { loadScene(340); setZoomPercents(126, 70, 162, 100); - BF_GLOBALS._walkRegions.proc1(13); - BF_GLOBALS._walkRegions.proc1(15); + BF_GLOBALS._walkRegions.disableRegion(13); + BF_GLOBALS._walkRegions.disableRegion(15); _field1A1A = 0; _timer1.set(2, NULL); @@ -2357,7 +2388,7 @@ void Scene342::postInit(SceneObjectList *OwnerList) { } if (BF_GLOBALS.getFlag(fWithLyle)) { - BF_GLOBALS._walkRegions.proc1(19); + BF_GLOBALS._walkRegions.disableRegion(19); BF_GLOBALS._player.disableControl(); _sceneMode = 0; @@ -2393,7 +2424,7 @@ void Scene342::postInit(SceneObjectList *OwnerList) { _item3.setDetails(7, 340, 3, 9, 12, 1); _item2.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, 39), 340, 2, 8, 11, 1, NULL); - _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, BF_INTERFACE_Y), 340, 1, 7, 10, 1, NULL); + _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, UI_INTERFACE_Y), 340, 1, 7, 10, 1, NULL); } void Scene342::remove() { @@ -2434,7 +2465,7 @@ void Scene342::process(Event &event) { if (!event.handled) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_westExit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_W); @@ -2481,7 +2512,7 @@ void Scene342::dispatch() { * *--------------------------------------------------------------------------*/ -bool Scene350::Item5::startAction(CursorType action, Event &event) { +bool Scene350::FireBox::startAction(CursorType action, Event &event) { Scene350 *scene = (Scene350 *)BF_GLOBALS._sceneManager._scene; switch (action) { @@ -2559,7 +2590,7 @@ bool Scene350::Hook::startAction(CursorType action, Event &event) { BF_INVENTORY.setObjectScene(INV_HOOK, 1); if (!BF_GLOBALS.getFlag(hookPoints)) { BF_GLOBALS.setFlag(hookPoints); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); } remove(); return true; @@ -2568,7 +2599,7 @@ bool Scene350::Hook::startAction(CursorType action, Event &event) { } } -bool Scene350::Object5::startAction(CursorType action, Event &event) { +bool Scene350::FireboxInset::startAction(CursorType action, Event &event) { Scene350 *scene = (Scene350 *)BF_GLOBALS._sceneManager._scene; switch (action) { @@ -2576,7 +2607,7 @@ bool Scene350::Object5::startAction(CursorType action, Event &event) { SceneItem::display2(350, BF_INVENTORY.getObjectScene(INV_HOOK) ? 29 : 28); return true; case CURSOR_USE: - scene->_object5.remove(); + scene->_fireBoxInset.remove(); return true; case INV_HOOK: BF_INVENTORY.setObjectScene(INV_HOOK, 350); @@ -2589,7 +2620,7 @@ bool Scene350::Object5::startAction(CursorType action, Event &event) { BF_GLOBALS._sceneItems.push_front(&scene->_hook); return true; default: - return NamedObject::startAction(action, event); + return FocusObject::startAction(action, event); } } @@ -2635,7 +2666,7 @@ void Scene350::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._player._moveDiff = Common::Point(3, 1); _yacht._flag = false; - _swExit.setDetails(Rect(0, 160, SCREEN_WIDTH, BF_INTERFACE_Y - 1), 350, -1, -1, -1, 1, NULL); + _swExit.setDetails(Rect(0, 160, SCREEN_WIDTH, UI_INTERFACE_Y - 1), 350, -1, -1, -1, 1, NULL); if ((BF_GLOBALS._dayNumber != 1) && (BF_GLOBALS._dayNumber != 4)) { _yacht.setDetails(28, 350, 15, 16, 17, 1); @@ -2669,20 +2700,20 @@ void Scene350::postInit(SceneObjectList *OwnerList) { } } - _item5._sceneRegionId = 5; - BF_GLOBALS._sceneItems.push_back(&_item5); + _fireBox._sceneRegionId = 5; + BF_GLOBALS._sceneItems.push_back(&_fireBox); _item4.setDetails(15, 350, 0, 1, 2, 1); BF_GLOBALS._sceneItems.push_back(&_yacht); _item3.setDetails(7, 350, 23, 24, 25, 1); _item2.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, 31), 350, 3, 4, 5, 1, NULL); - _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, BF_INTERFACE_Y), 350, 0, 1, 2, 1, NULL); + _item1.setDetails(Rect(0, 0, SCREEN_WIDTH - 1, UI_INTERFACE_Y), 350, 0, 1, 2, 1, NULL); switch (BF_GLOBALS._sceneManager._previousScene) { case 370: BF_GLOBALS._player.enableControl(); - BF_GLOBALS._uiElements._active = true; - BF_GLOBALS._uiElements.show(); + T2_GLOBALS._uiElements._active = true; + T2_GLOBALS._uiElements.show(); // Deliberate fall-through case 355: if (BF_GLOBALS.getFlag(onDuty) && BF_GLOBALS.getFlag(gunDrawn)) @@ -2726,12 +2757,12 @@ void Scene350::signal() { case 3: BF_GLOBALS._player.setStrip(8); - _object5.postInit(); - _object5.setVisage(350); - _object5.setStrip(4); - _object5.fixPriority(200); - _object5.setPosition(Common::Point(85, 166)); - BF_GLOBALS._sceneItems.push_front(&_object5); + _fireBoxInset.postInit(); + _fireBoxInset.setVisage(350); + _fireBoxInset.setStrip(4); + _fireBoxInset.fixPriority(200); + _fireBoxInset.setPosition(Common::Point(85, 166)); + BF_GLOBALS._sceneItems.push_front(&_fireBoxInset); if (BF_INVENTORY.getObjectScene(INV_HOOK) == 350) { _hook.postInit(); @@ -2748,7 +2779,7 @@ void Scene350::signal() { default: if (BF_GLOBALS.getFlag(fBackupIn350)) { _harrison.updateAngle(BF_GLOBALS._player._position); - BF_GLOBALS._walkRegions.proc1(19); + BF_GLOBALS._walkRegions.disableRegion(19); } BF_GLOBALS._player.enableControl(); @@ -2792,7 +2823,7 @@ void Scene350::process(Event &event) { if (!event.handled) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_swExit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_SW); @@ -2860,7 +2891,7 @@ bool Scene355::Doorway::startAction(CursorType action, Event &event) { BF_GLOBALS.setFlag(fTookTrailerAmmo); scene->_stripManager.start(3575, scene); - scene->_object7._flag = 1; + scene->_lyle._flag = 1; return true; case 1: BF_GLOBALS._player.disableControl(); @@ -2935,7 +2966,7 @@ bool Scene355::Locker::startAction(CursorType action, Event &event) { } } -bool Scene355::LockerDoor::startAction(CursorType action, Event &event) { +bool Scene355::LockerInset::startAction(CursorType action, Event &event) { Scene355 *scene = (Scene355 *)BF_GLOBALS._sceneManager._scene; switch (action) { @@ -2949,8 +2980,8 @@ bool Scene355::LockerDoor::startAction(CursorType action, Event &event) { if (_frame == 1) { SceneItem::display2(355, 23); return true; - } - return true; + } else + return NamedObject::startAction(action, event); case INV_SCREWDRIVER: scene->_sound2.play(104); BF_INVENTORY.setObjectScene(INV_SCREWDRIVER, 999); @@ -2985,7 +3016,7 @@ bool Scene355::Object5::startAction(CursorType action, Event &event) { return true; case CURSOR_USE: BF_INVENTORY.setObjectScene(INV_FLARE, 1); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); scene->_object9.remove(); remove(); @@ -2995,7 +3026,7 @@ bool Scene355::Object5::startAction(CursorType action, Event &event) { } } -bool Scene355::Object6::startAction(CursorType action, Event &event) { +bool Scene355::Green::startAction(CursorType action, Event &event) { Scene355 *scene = (Scene355 *)BF_GLOBALS._sceneManager._scene; switch (action) { @@ -3013,7 +3044,7 @@ bool Scene355::Object6::startAction(CursorType action, Event &event) { BF_GLOBALS._player._regionBitList |= 0x10; BF_GLOBALS._player.disableControl(); scene->_sceneMode = 9985; - scene->setAction(&scene->_sequenceManager, scene, 3357, &BF_GLOBALS._player, this, NULL); + scene->setAction(&scene->_sequenceManager, scene, 3557, &BF_GLOBALS._player, this, NULL); } return true; case CURSOR_TALK: @@ -3023,14 +3054,14 @@ bool Scene355::Object6::startAction(CursorType action, Event &event) { } else if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) != 1) { return false; } else { - switch (BF_GLOBALS._v4CEC2) { + switch (BF_GLOBALS._greenDay5TalkCtr++) { case 0: scene->_stripManager.start(3565, scene); break; case 1: scene->_stripManager.start(3567, scene); break; - case 2: + default: scene->_stripManager.start(3571, scene); break; } @@ -3052,25 +3083,25 @@ bool Scene355::Object6::startAction(CursorType action, Event &event) { else if (!BF_GLOBALS.getFlag(gunDrawn)) SceneItem::display2(1, 0); else { - if (BF_GLOBALS._sceneObjects->contains(&scene->_object7)) - scene->_object7.setAction(NULL); + if (BF_GLOBALS._sceneObjects->contains(&scene->_lyle)) + scene->_lyle.setAction(NULL); BF_GLOBALS._player.disableControl(); - scene->_object6.setStrip(1); - scene->_object6.setFrame(1); + scene->_green.setStrip(1); + scene->_green.setFrame(1); scene->_sceneMode = 9981; scene->signal(); } return true; case INV_HANDCUFFS: - if (BF_GLOBALS._v4CEC2 <= 1) + if (BF_GLOBALS._greenDay5TalkCtr <= 1) SceneItem::display2(355, 38); else { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 9979; scene->setAction(&scene->_sequenceManager, scene, 4551, &BF_GLOBALS._player, this, NULL); BF_INVENTORY.setObjectScene(INV_HANDCUFFS, 355); - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); _flag = 1; BF_GLOBALS._bookmark = bInvestigateBoat; } @@ -3083,7 +3114,7 @@ bool Scene355::Object6::startAction(CursorType action, Event &event) { } } -bool Scene355::Object7::startAction(CursorType action, Event &event) { +bool Scene355::Lyle::startAction(CursorType action, Event &event) { Scene355 *scene = (Scene355 *)BF_GLOBALS._sceneManager._scene; switch (action) { @@ -3091,7 +3122,7 @@ bool Scene355::Object7::startAction(CursorType action, Event &event) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 0; - if (BF_GLOBALS._sceneObjects->contains(&scene->_object6)) { + if (BF_GLOBALS._sceneObjects->contains(&scene->_green)) { scene->_stripManager.start((BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 355) ? 3578 : 3577, scene); } else { switch (_flag) { @@ -3137,7 +3168,7 @@ bool Scene355::Object8::startAction(CursorType action, Event &event) { scene->_sceneMode = 9997; scene->_stripManager.start(3561, scene); } else { - SceneItem::display(1, 4); + SceneItem::display2(1, 4); } return true; default: @@ -3258,10 +3289,16 @@ bool Scene355::Item4::startAction(CursorType action, Event &event) { } -bool Scene355::Item5::startAction(CursorType action, Event &event) { +bool Scene355::Pouch::startAction(CursorType action, Event &event) { Scene355 *scene = (Scene355 *)BF_GLOBALS._sceneManager._scene; switch (action) { + case CURSOR_LOOK: + if (BF_INVENTORY.getObjectScene(INV_SCREWDRIVER) == 355) { + SceneItem::display2(355, 29); + return true; + } + break; case CURSOR_USE: if (BF_INVENTORY.getObjectScene(INV_SCREWDRIVER) == 355) { if (scene->_modeFlag) { @@ -3289,8 +3326,10 @@ bool Scene355::Item5::startAction(CursorType action, Event &event) { } return true; default: - return NamedHotspot::startAction(action, event); + break; } + + return NamedHotspot::startAction(action, event); } bool Scene355::Item11::startAction(CursorType action, Event &event) { @@ -3314,7 +3353,7 @@ bool Scene355::Item11::startAction(CursorType action, Event &event) { scene->_sceneMode = 0; BF_GLOBALS.setFlag(fTookTrailerAmmo); scene->_stripManager.start(3575, scene); - scene->_object7._flag = 1; + scene->_lyle._flag = 1; scene->_doorway._v2 = 1; break; case 1: @@ -3349,7 +3388,7 @@ bool Scene355::Item11::startAction(CursorType action, Event &event) { return NamedHotspot::startAction(action, event); } -bool Scene355::Item12::startAction(CursorType action, Event &event) { +bool Scene355::RentalExit::startAction(CursorType action, Event &event) { Scene355 *scene = (Scene355 *)BF_GLOBALS._sceneManager._scene; if (!BF_GLOBALS.getFlag(gunDrawn)) { @@ -3360,6 +3399,7 @@ bool Scene355::Item12::startAction(CursorType action, Event &event) { else { scene->_nextSceneMode = 0; BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 9991; scene->setAction(&scene->_sequenceManager, scene, 3555, &BF_GLOBALS._player, NULL); } } @@ -3378,7 +3418,7 @@ void Scene355::Action1::signal() { break; case 1: _actionIndex = 0; - scene->_object7.animate(ANIM_MODE_8, 1, this); + scene->_lyle.animate(ANIM_MODE_8, 1, this); break; default: break; @@ -3527,7 +3567,7 @@ void Scene355::postInit(SceneObjectList *OwnerList) { case 4: break; case 5: - BF_GLOBALS._player.disableControl(); + BF_GLOBALS._player.enableControl(); _modeFlag = true; BF_GLOBALS._player.setPosition(Common::Point(133, 173)); BF_GLOBALS._player.fixPriority(249); @@ -3536,17 +3576,17 @@ void Scene355::postInit(SceneObjectList *OwnerList) { if (BF_GLOBALS._bookmark == bDoneAtLyles) BF_GLOBALS._bookmark = bEndDayFour; - _item5.setDetails(Rect(22, 136, 46, 146), 355, 43, -1, -1, 1, NULL); + _pouch.setDetails(Rect(22, 136, 46, 146), 355, 43, -1, -1, 1, NULL); _nextSceneMode = 0; if (!BF_GLOBALS.getFlag(fLyleOnIsland)) { - _object7.postInit(); - _object7.setVisage(847); - _object7.setPosition(Common::Point(296, 97)); - _object7.setStrip(1); - _object7.setAction(&_action1); - _object7._flag = BF_GLOBALS.getFlag(fTookTrailerAmmo) ? 1 : 0; - _object7.setDetails(355, 40, 42, 41, 1, NULL); + _lyle.postInit(); + _lyle.setVisage(847); + _lyle.setPosition(Common::Point(296, 97)); + _lyle.setStrip(1); + _lyle.setAction(&_action1); + _lyle._flag = BF_GLOBALS.getFlag(fTookTrailerAmmo) ? 1 : 0; + _lyle.setDetails(355, 40, 42, 41, 1, NULL); } if ((BF_INVENTORY.getObjectScene(INV_RAGS) == 0) && (BF_INVENTORY.getObjectScene(INV_JAR) == 0) && @@ -3568,39 +3608,39 @@ void Scene355::postInit(SceneObjectList *OwnerList) { _doorway.setPosition(Common::Point(146, 107)); _doorway._v3 = 0; _doorway._v2 = 2; - _object7._flag = 2; + _lyle._flag = 2; - _object6.postInit(); - BF_GLOBALS._sceneItems.push_back(&_object6); + _green.postInit(); + BF_GLOBALS._sceneItems.push_back(&_green); if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1) { - _object6.setVisage(376); - _object6.setStrip(1); - _object6.setPosition(Common::Point(193, 88)); - _object6._flag = 0; + _green.setVisage(376); + _green.setStrip(1); + _green.setPosition(Common::Point(193, 88)); + _green._flag = 0; } else { - _object6._flag = 1; + _green._flag = 1; if (BF_INVENTORY.getObjectScene(INV_GRENADES) == 1) { - _object6.setVisage(373); - _object6.setStrip(5); - _object6.setPosition(Common::Point(238, 142)); + _green.setVisage(373); + _green.setStrip(5); + _green.setPosition(Common::Point(238, 142)); } else { - _object6.setVisage(375); - _object6.setStrip(1); - _object6.setFrame(_object6.getFrameCount()); - _object6.setPosition(Common::Point(193, 147)); + _green.setVisage(375); + _green.setStrip(1); + _green.setFrame(_green.getFrameCount()); + _green.setPosition(Common::Point(193, 147)); } } - } - if ((BF_GLOBALS._bookmark == bFinishedWGreen) && BF_GLOBALS._sceneObjects->contains(&_object7) && - !BF_GLOBALS.getFlag(iWasAmbushed)) { - BF_GLOBALS.setFlag(iWasAmbushed); - BF_GLOBALS._player.disableControl(); + if ((BF_GLOBALS._bookmark == bFinishedWGreen) && BF_GLOBALS._sceneObjects->contains(&_lyle) && + !BF_GLOBALS.getFlag(iWasAmbushed)) { + BF_GLOBALS.setFlag(iWasAmbushed); + BF_GLOBALS._player.disableControl(); - _sceneMode = 0; - _stripManager.start(3582, this); + _sceneMode = 0; + _stripManager.start(3582, this); + } } break; default: @@ -3630,6 +3670,7 @@ void Scene355::postInit(SceneObjectList *OwnerList) { break; } + _item3._sceneRegionId = 18; _harrison.setDetails(355, 18, 20, 19, 1, NULL); _item6.setDetails(10, 355, 2, -1, 14, 1); _item7.setDetails(11, 355, 3, -1, 15, 1); @@ -3640,8 +3681,8 @@ void Scene355::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._sceneItems.addItems(&_item3, &_item6, &_item7, &_item8, &_item9, &_item10, &_item1, NULL); if (BF_GLOBALS._dayNumber == 5) { - _item12.setBounds(Rect(115, 101, 186, 154)); - BF_GLOBALS._sceneItems.push_front(&_item12); + _rentalExit.setBounds(Rect(115, 101, 186, 154)); + BF_GLOBALS._sceneItems.push_front(&_rentalExit); } else { _item2.setDetails(Rect(273, 53, 320, 101), 355, -1, -1, -1, 2, NULL); } @@ -3735,21 +3776,21 @@ void Scene355::signal() { case 3562: if (!BF_GLOBALS.getFlag(unlockBoat)) { BF_GLOBALS.setFlag(unlockBoat); - BF_GLOBALS._uiElements.addScore(10); + T2_GLOBALS._uiElements.addScore(10); } - SceneItem::display(355, !_doorway._v3 ? 24 : 25); + SceneItem::display2(355, !_doorway._v3 ? 24 : 25); BF_GLOBALS._player.enableControl(); break; case 4550: - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); _object10.remove(); BF_GLOBALS._sound1.play(90); BF_GLOBALS._player._regionBitList |= 0x10; _doorway._v3 = 0; _doorway._v2 = 2; - _object7._flag = 2; + _lyle._flag = 2; BF_GLOBALS._player.enableControl(); break; case 4552: @@ -3762,10 +3803,10 @@ void Scene355::signal() { _sceneMode = 9980; break; case 9992: - _sceneMode = 0; + _sceneMode = 9992; break; default: - _sceneMode = 9992; + _sceneMode = 0; break; } setAction(&_sequenceManager, this, 4554, &BF_GLOBALS._player, NULL); @@ -3785,29 +3826,29 @@ void Scene355::signal() { break; case 9981: _sceneMode = 9994; - _object6.animate(ANIM_MODE_5, NULL); + _green.animate(ANIM_MODE_5, NULL); addFader((const byte *)&black, 10, this); break; case 9982: _sceneMode = 9983; if (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 355) { if (BF_GLOBALS.getFlag(fLyleOnIsland)) { - BF_GLOBALS._player.updateAngle(_object6._position); + BF_GLOBALS._player.updateAngle(_green._position); _stripManager.start(3581, this); } else { - BF_GLOBALS._player.updateAngle(_object7._position); + BF_GLOBALS._player.updateAngle(_lyle._position); _stripManager.start(3570, this); } } else { if (BF_GLOBALS.getFlag(fLyleOnIsland)) { - if (BF_GLOBALS._sceneObjects->contains(&_object6)) { + if (BF_GLOBALS._sceneObjects->contains(&_green)) { BF_INVENTORY.setObjectScene(INV_GRENADES, 860); _stripManager.start(3583, this); } else { signal(); } } else { - BF_GLOBALS._player.updateAngle(_object7._position); + BF_GLOBALS._player.updateAngle(_lyle._position); _stripManager.start(BF_GLOBALS.getFlag(fTookTrailerAmmo) ? 3579 : 3580, this); } } @@ -3823,7 +3864,7 @@ void Scene355::signal() { BF_GLOBALS._sound1.play(109); BF_GLOBALS.setFlag(fTookTrailerAmmo); _stripManager.start(3575, this); - _object7._flag = 1; + _lyle._flag = 1; ++_doorway._v2; break; case 1: @@ -3858,7 +3899,7 @@ void Scene355::signal() { _sceneMode = 0; _stripManager.start(3569, this); BF_INVENTORY.setObjectScene(INV_GRENADES, 1); - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); BF_GLOBALS._player._regionBitList |= 0x10; break; case 9986: @@ -3885,13 +3926,13 @@ void Scene355::signal() { } break; case 9988: - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); if ((BF_INVENTORY.getObjectScene(INV_RAGS) == 0) && (BF_INVENTORY.getObjectScene(INV_JAR) == 0) && (BF_INVENTORY.getObjectScene(INV_FLARE) == 0)) { - _object6.postInit(); - _object6.setVisage(373); - _object6.setPosition(Common::Point(-10, -10)); - _object6._flag = 0; + _green.postInit(); + _green.setVisage(373); + _green.setPosition(Common::Point(-10, -10)); + _green._flag = 0; _object9.postInit(); _object9.setPosition(Common::Point(-10, -10)); @@ -3900,24 +3941,24 @@ void Scene355::signal() { _object11.postInit(); _object11.setPosition(Common::Point(-10, -10)); - BF_GLOBALS._sceneItems.push_front(&_object6); + BF_GLOBALS._sceneItems.push_front(&_green); BF_GLOBALS.setFlag(fTookTrailerAmmo); BF_GLOBALS._sound1.fade(0, 5, 60, true, NULL); _sceneMode = 4550; - setAction(&_sequenceManager, this, 4550, &_doorway, &_object6, &_object9, &_object10, &_object11, NULL); + setAction(&_sequenceManager, this, 4550, &_doorway, &_green, &_object9, &_object10, &_object11, NULL); } else { BF_GLOBALS._player.enableControl(); } break; case 9989: - _lockerDoor.postInit(); - _lockerDoor.setVisage(2356); - _lockerDoor.setStrip(2); - BF_GLOBALS._sceneItems.push_front(&_lockerDoor); + _lockerInset.postInit(); + _lockerInset.setVisage(2356); + _lockerInset.setStrip(2); + BF_GLOBALS._sceneItems.push_front(&_lockerInset); if (BF_INVENTORY.getObjectScene(INV_SCREWDRIVER) == 999) { - _lockerDoor.setFrame(2); + _lockerInset.setFrame(2); if (BF_INVENTORY.getObjectScene(INV_FLARE) == 355) { _object5.postInit(); _object5.setVisage(2356); @@ -3927,11 +3968,11 @@ void Scene355::signal() { BF_GLOBALS._sceneItems.push_front(&_object5); } } else { - _lockerDoor.setFrame(1); + _lockerInset.setFrame(1); } - _lockerDoor.setPosition(Common::Point(82, 115)); - _lockerDoor.fixPriority(254); + _lockerInset.setPosition(Common::Point(82, 115)); + _lockerInset.fixPriority(254); BF_GLOBALS._player.enableControl(); break; case 9990: @@ -3949,7 +3990,7 @@ void Scene355::signal() { case 9993: BF_INVENTORY.setObjectScene(INV_SCREWDRIVER, 1); SceneItem::display2(355, 29); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); _sceneMode = 0; signal(); break; @@ -3987,11 +4028,11 @@ void Scene355::signal() { } void Scene355::process(Event &event) { - if (BF_GLOBALS._dayNumber == 5) { - // Handling for day 5 - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._dayNumber != 5) { + // Handling for earlier days + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit - if (_item12.contains(event.mousePos)) { + if (_rentalExit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_NW); BF_GLOBALS._events.setCursor(surface); } else { @@ -4001,6 +4042,39 @@ void Scene355::process(Event &event) { } } + if ((_sceneMode != 2357) && (_sceneMode != 1357) && !BF_GLOBALS.getFlag(greenTaken) && + (event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == INV_COLT45)) { + if (BF_GLOBALS._player.contains(event.mousePos)) { + BF_GLOBALS._player.disableControl(); + if (BF_GLOBALS.getFlag(gunDrawn)) { + BF_GLOBALS.clearFlag(gunDrawn); + _sceneMode = 2357; + setAction(&_sequenceManager, this, 2357, &BF_GLOBALS._player, &_harrison, NULL); + } else { + BF_GLOBALS._player.disableControl(); + _sceneMode = 1357; + setAction(&_sequenceManager, this, 1357, &BF_GLOBALS._player, &_harrison, NULL); + BF_GLOBALS.setFlag(gunDrawn); + } + } else { + _item11.startAction(INV_COLT45, event); + } + event.handled = true; + } + } else { + // Day 5 handling + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { + // Check if the cursor is on the exit to the rental boat + if (_rentalExit.contains(event.mousePos)) { + GfxSurface surface = _cursorVisage.getFrame(!_modeFlag ? EXITFRAME_SW : EXITFRAME_NE); + 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); + } + } + // Special handling of actions if (event.eventType == EVENT_BUTTON_DOWN) { switch (BF_GLOBALS._events.getCursor()) { @@ -4045,39 +4119,6 @@ void Scene355::process(Event &event) { break; } } - } else { - // All other days - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { - // Check if the cursor is on an exit - if (_item2.contains(event.mousePos)) { - GfxSurface surface = _cursorVisage.getFrame(!_modeFlag ? EXITFRAME_SW : EXITFRAME_NE); - 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); - } - } - - if ((_sceneMode != 2357) && (_sceneMode != 1357) && !BF_GLOBALS.getFlag(greenTaken) && - (event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == INV_COLT45)) { - if (BF_GLOBALS._player.contains(event.mousePos)) { - BF_GLOBALS._player.disableControl(); - if (BF_GLOBALS.getFlag(gunDrawn)) { - BF_GLOBALS.clearFlag(gunDrawn); - _sceneMode = 2357; - setAction(&_sequenceManager, this, 2357, &BF_GLOBALS._player, &_harrison, NULL); - } else { - BF_GLOBALS._player.disableControl(); - _sceneMode = 1357; - setAction(&_sequenceManager, this, 1357, &BF_GLOBALS._player, &_harrison, NULL); - BF_GLOBALS.setFlag(gunDrawn); - } - } else { - _item11.startAction(INV_COLT45, event); - } - event.handled = true; - } } PalettedScene::process(event); @@ -4085,8 +4126,8 @@ void Scene355::process(Event &event) { void Scene355::dispatch() { PalettedScene::dispatch(); - if (BF_GLOBALS._sceneObjects->contains(&_object7)) { - _object7.updateAngle(BF_GLOBALS._player._position); + if (BF_GLOBALS._sceneObjects->contains(&_lyle)) { + _lyle.updateAngle(BF_GLOBALS._player._position); } if (!_action && (BF_GLOBALS._player.getRegionIndex() == 20)) { @@ -4124,7 +4165,7 @@ bool Scene360::Item1::startAction(CursorType action, Event &event) { case CURSOR_TALK: scene->_sceneMode = 3607; BF_GLOBALS._player.disableControl(); - scene->_stripManager.start(3550, this); + scene->_stripManager.start(3550, scene); return true; case INV_COLT45: SceneItem::display2(1, 4); @@ -4233,7 +4274,7 @@ bool Scene360::Object4::startAction(CursorType action, Event &event) { } } -bool Scene360::BsseballCards::startAction(CursorType action, Event &event) { +bool Scene360::BaseballCards::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_LOOK: if (event.mousePos.x >= (_bounds.left + _bounds.width() / 2)) @@ -4249,7 +4290,7 @@ bool Scene360::BsseballCards::startAction(CursorType action, Event &event) { } } -bool Scene360::Object6::startAction(CursorType action, Event &event) { +bool Scene360::Harrison::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_LOOK: SceneItem::display2(360, 6); @@ -4291,7 +4332,7 @@ void Scene360::Action1::signal() { if (BF_INVENTORY.getObjectScene(INV_WAREHOUSE_KEYS) == 360) { SceneItem::display2(360, 20); BF_INVENTORY.setObjectScene(INV_WAREHOUSE_KEYS, 1); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); } else { SceneItem::display2(360, 5); } @@ -4306,13 +4347,12 @@ void Scene360::Action1::signal() { /*--------------------------------------------------------------------------*/ -Scene360::Scene360() { - _field380 = 0; -} - void Scene360::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field380); + if (s.getVersion() < 9) { + int tmpVar = 0; + s.syncAsSint16LE(tmpVar); + } } void Scene360::postInit(SceneObjectList *OwnerList) { @@ -4390,20 +4430,19 @@ void Scene360::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._player._moveDiff.y = 4; BF_GLOBALS._player.enableControl(); - if (BF_GLOBALS._sceneManager._previousScene == 370) { - BF_GLOBALS._player.setPosition(Common::Point(62, 122)); - } else { + if ((BF_GLOBALS._sceneManager._previousScene == 355) || (BF_GLOBALS._sceneManager._previousScene != 370)) { + // The original was using there a useless variable (now removed) BF_GLOBALS._player.setPosition(Common::Point(253, 135)); BF_GLOBALS._player.setStrip(2); if (BF_GLOBALS.getFlag(fBackupIn350)) { - _object6.postInit(); - _object6.setVisage(BF_GLOBALS.getFlag(gunDrawn) ? 363 : 1363); - _object6.animate(ANIM_MODE_1, NULL); - _object6.setObjectWrapper(new SceneObjectWrapper()); - _object6.setPosition(Common::Point(235, 150)); - _object6.setStrip(2); - BF_GLOBALS._sceneItems.push_back(&_object6); + _harrison.postInit(); + _harrison.setVisage(BF_GLOBALS.getFlag(gunDrawn) ? 363 : 1363); + _harrison.animate(ANIM_MODE_1, NULL); + _harrison.setObjectWrapper(new SceneObjectWrapper()); + _harrison.setPosition(Common::Point(235, 150)); + _harrison.setStrip(2); + BF_GLOBALS._sceneItems.push_back(&_harrison); } _sceneMode = 3607; @@ -4418,13 +4457,16 @@ void Scene360::postInit(SceneObjectList *OwnerList) { _slidingDoor.setPosition(Common::Point(6, 130)); _slidingDoor.setAction(&_sequenceManager1, this, 3606, &_slidingDoor, &_object7, NULL); } + } else { + BF_GLOBALS._player.setPosition(Common::Point(62, 122)); + BF_GLOBALS._player.enableControl(); } _barometer._sceneRegionId = 9; BF_GLOBALS._sceneItems.push_back(&_barometer); _item3._sceneRegionId = 10; BF_GLOBALS._sceneItems.push_back(&_item3); - _item1.setBounds(Rect(0, 0, SCREEN_WIDTH, BF_INTERFACE_Y)); + _item1.setBounds(Rect(0, 0, SCREEN_WIDTH, UI_INTERFACE_Y)); BF_GLOBALS._sceneItems.push_back(&_item1); } @@ -4438,7 +4480,7 @@ void Scene360::signal() { BF_GLOBALS.setFlag(gunDrawn); BF_GLOBALS._deathReason = BF_GLOBALS.getFlag(fBackupIn350) ? 2 : 1; BF_GLOBALS._player.setPosition(Common::Point(BF_GLOBALS._player._position.x - 20, - BF_GLOBALS._player._position.y)); + BF_GLOBALS._player._position.y + 1)); _sceneMode = 3610; setAction(&_sequenceManager1, this, 3610, &_slidingDoor, &_object2, &BF_GLOBALS._player, NULL); break; @@ -4447,8 +4489,13 @@ void Scene360::signal() { setAction(&_sequenceManager1, this, 3605, &BF_GLOBALS._player, &_slidingDoor, NULL); break; case 3604: - _sceneMode = BF_GLOBALS.getFlag(fBackupIn350) ? 3603 : 3605; - setAction(&_sequenceManager1, this, _sceneMode, &_object6, NULL); + if (BF_GLOBALS.getFlag(fBackupIn350)) { + _sceneMode = 3603; + setAction(&_sequenceManager1, this, _sceneMode, &_harrison, NULL); + } else { + _sceneMode = 3605; + setAction(&_sequenceManager1, this, _sceneMode, &BF_GLOBALS._player, &_slidingDoor, NULL); + } break; case 3605: if (BF_GLOBALS.getFlag(fBackupIn350)) { @@ -4462,11 +4509,17 @@ void Scene360::signal() { break; case 3607: case 3609: - _object6.setVisage(1363); + // Original game was only using at this place visage 1363. + // This workaround allow Harrison to keep his gun handy + // when entering the romm (if required) + if (! BF_GLOBALS.getFlag(gunDrawn)) + _harrison.setVisage(1363); + else + _harrison.setVisage(363); BF_GLOBALS._player.enableControl(); break; case 3608: - BF_GLOBALS._sceneManager.changeScene(355); + BF_GLOBALS._sceneManager.changeScene(355); break; case 3610: BF_GLOBALS._sceneManager.changeScene(666); @@ -4510,7 +4563,7 @@ void Scene360::process(Event &event) { BF_GLOBALS._player.setFrame(BF_GLOBALS._player.getFrameCount()); BF_GLOBALS._player.animate(ANIM_MODE_6, this); - _object6.setVisage(1363); + _harrison.setVisage(1363); } } else { // Handle drawing gun @@ -4525,7 +4578,7 @@ void Scene360::process(Event &event) { BF_GLOBALS.setFlag(gunDrawn); _sceneMode = 9998; - _object6.setVisage(363); + _harrison.setVisage(363); } event.handled = true; @@ -4574,7 +4627,7 @@ bool Scene370::GreensGun::startAction(CursorType action, Event &event) { case CURSOR_USE: if ((BF_INVENTORY.getObjectScene(INV_HANDCUFFS) != 1) || BF_GLOBALS.getFlag(greenTaken)) { BF_GLOBALS._player.disableControl(); - BF_GLOBALS._walkRegions.proc2(3); + BF_GLOBALS._walkRegions.enableRegion(3); scene->_sceneMode = 3711; scene->setAction(&scene->_sequenceManager, scene, 3711, &BF_GLOBALS._player, this, NULL); } else { @@ -4603,7 +4656,7 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { scene->_stripManager.start(3717, scene); } else { BF_GLOBALS._player.disableControl(); - BF_GLOBALS._walkRegions.proc2(3); + BF_GLOBALS._walkRegions.enableRegion(3); scene->_sceneMode = 3715; scene->setAction(&scene->_sequenceManager, scene, 3715, &BF_GLOBALS._player, this, NULL); } @@ -4658,7 +4711,7 @@ bool Scene370::Green::startAction(CursorType action, Event &event) { if (_v2 != 3) SceneItem::display2(370, 2); else { - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 3704; scene->setAction(&scene->_sequenceManager, scene, 3704, &BF_GLOBALS._player, this, &scene->_harrison, NULL); @@ -4738,37 +4791,36 @@ bool Scene370::Laura::startAction(CursorType action, Event &event) { bool Scene370::Item1::startAction(CursorType action, Event &event) { Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene; - switch (action) { - case CURSOR_LOOK: + if (action == CURSOR_LOOK) { SceneItem::display2(370, 15); return true; - case CURSOR_USE: + } else if (action == CURSOR_USE) { SceneItem::display2(370, 16); return true; - case INV_COLT45: + } else if (action == INV_COLT45) { if (BF_GLOBALS._sceneObjects->contains(&scene->_green) && (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 370)) { scene->_green.setAction(NULL); scene->_sceneMode = 3703; scene->setAction(&scene->_sequenceManager, scene, 3703, &BF_GLOBALS._player, &scene->_green, &scene->_harrison, NULL); return true; } - // Deliberate fall-through - default: + return false; + } else if (action < CURSOR_WALK) // If any other inventory item used + return false; + else // If any other action is used return NamedHotspot::startAction(action, event); - } } bool Scene370::Item6::startAction(CursorType action, Event &event) { Scene370 *scene = (Scene370 *)BF_GLOBALS._sceneManager._scene; - switch (action) { - case CURSOR_LOOK: + if (action == CURSOR_LOOK) { SceneItem::display2(370, 14); return true; - case CURSOR_USE: + } else if (action == CURSOR_USE) { SceneItem::display2(370, 29); return true; - case INV_COLT45: + } else if (action == INV_COLT45) { if (BF_GLOBALS._sceneObjects->contains(&scene->_green) && (BF_INVENTORY.getObjectScene(INV_GREENS_GUN) != 370) && (BF_INVENTORY.getObjectScene(INV_HANDCUFFS) == 1)) { BF_GLOBALS._player.disableControl(); @@ -4777,10 +4829,11 @@ bool Scene370::Item6::startAction(CursorType action, Event &event) { scene->setAction(&scene->_sequenceManager, scene, 3703, &BF_GLOBALS._player, &scene->_green, &scene->_harrison, NULL); return true; } - // Deliberate fall-through - default: return SceneHotspot::startAction(action, event); - } + } else if (action < CURSOR_WALK) // If any other inventory item used + return false; + else // If any other action + return SceneHotspot::startAction(action, event); } @@ -4923,7 +4976,7 @@ void Scene370::signal() { BF_GLOBALS._player.setStrip(3); BF_GLOBALS._sceneItems.push_front(&_laura); - BF_GLOBALS._walkRegions.proc1(3); + BF_GLOBALS._walkRegions.disableRegion(3); _harrison.setAction(NULL); BF_GLOBALS._player.enableControl(); @@ -4933,15 +4986,15 @@ void Scene370::signal() { break; case 3705: _laura.remove(); - BF_GLOBALS._walkRegions.proc2(6); - BF_GLOBALS._walkRegions.proc2(1); + BF_GLOBALS._walkRegions.enableRegion(6); + BF_GLOBALS._walkRegions.enableRegion(1); BF_GLOBALS._player.enableControl(); break; case 3708: _sound1.play(6); BF_GLOBALS._sound1.changeSound(35); BF_INVENTORY.setObjectScene(INV_GREENS_GUN, 370); - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); BF_GLOBALS._sceneItems.push_front(&_greensGun); BF_GLOBALS._player.enableControl(); @@ -4950,8 +5003,8 @@ void Scene370::signal() { _sceneMode = 0; _object5.remove(); _green.setAction(NULL); - BF_GLOBALS._walkRegions.proc1(6); - BF_GLOBALS._walkRegions.proc1(1); + BF_GLOBALS._walkRegions.disableRegion(6); + BF_GLOBALS._walkRegions.disableRegion(1); break; case 3709: BF_GLOBALS._player.disableControl(); @@ -4965,15 +5018,15 @@ void Scene370::signal() { _green.setAction(&_sequenceManager, this, 3701, NULL); break; case 3711: - BF_GLOBALS._walkRegions.proc1(3); + BF_GLOBALS._walkRegions.disableRegion(3); BF_INVENTORY.setObjectScene(INV_GREENS_GUN, 1); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); _greensGun.remove(); BF_GLOBALS._player.enableControl(); break; case 3712: - BF_GLOBALS._uiElements._active = false; - BF_GLOBALS._uiElements.hide(); + T2_GLOBALS._uiElements._active = false; + T2_GLOBALS._uiElements.hide(); if (BF_GLOBALS._sceneObjects->contains(&_greensGun)) _greensGun.remove(); @@ -4985,10 +5038,10 @@ void Scene370::signal() { BF_GLOBALS._player._canWalk = false; break; case 3715: - BF_GLOBALS._uiElements.addScore(50); + T2_GLOBALS._uiElements.addScore(50); BF_INVENTORY.setObjectScene(INV_GREEN_ID, 1); BF_INVENTORY.setObjectScene(INV_GREENS_KNIFE, 1); - BF_GLOBALS._walkRegions.proc1(3); + BF_GLOBALS._walkRegions.disableRegion(3); BF_GLOBALS._player.enableControl(); break; case 3716: @@ -5009,7 +5062,7 @@ void Scene370::signal() { void Scene370::process(Event &event) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_exit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_E); @@ -5079,7 +5132,7 @@ void Scene380::postInit(SceneObjectList *OwnerList) { setZoomPercents(68, 80, 131, 100); BF_GLOBALS._sound1.fadeSound(33); - BF_GLOBALS._walkRegions.proc1(9); + BF_GLOBALS._walkRegions.disableRegion(9); _door.postInit(); _door.setVisage(380); @@ -5103,13 +5156,13 @@ void Scene380::postInit(SceneObjectList *OwnerList) { _vechile.setDetails(580, 2, 3, -1, 1, NULL); BF_GLOBALS._player.setVisage(129); - BF_GLOBALS._walkRegions.proc1(12); - BF_GLOBALS._walkRegions.proc1(18); - BF_GLOBALS._walkRegions.proc1(19); - BF_GLOBALS._walkRegions.proc1(20); - BF_GLOBALS._walkRegions.proc1(25); - BF_GLOBALS._walkRegions.proc1(26); - BF_GLOBALS._walkRegions.proc1(27); + BF_GLOBALS._walkRegions.disableRegion(12); + BF_GLOBALS._walkRegions.disableRegion(18); + BF_GLOBALS._walkRegions.disableRegion(19); + BF_GLOBALS._walkRegions.disableRegion(20); + BF_GLOBALS._walkRegions.disableRegion(25); + BF_GLOBALS._walkRegions.disableRegion(26); + BF_GLOBALS._walkRegions.disableRegion(27); } else if (BF_GLOBALS.getFlag(onDuty)) { // Show on duty motorcycle _vechile.setStrip(2); @@ -5259,7 +5312,7 @@ bool Scene385::Door::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - BF_GLOBALS._walkRegions.proc2(6); + BF_GLOBALS._walkRegions.enableRegion(6); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 3850; scene->setAction(&scene->_sequenceManager, scene, 3850, &BF_GLOBALS._player, this, NULL); @@ -5272,8 +5325,7 @@ bool Scene385::Door::startAction(CursorType action, Event &event) { bool Scene385::Jim::startAction(CursorType action, Event &event) { Scene385 *scene = (Scene385 *)BF_GLOBALS._sceneManager._scene; - switch (action) { - case CURSOR_TALK: + if (action == CURSOR_TALK) { if (scene->_jimFlag) { scene->_talkAction = 3867; scene->setAction(&scene->_action1); @@ -5297,24 +5349,24 @@ bool Scene385::Jim::startAction(CursorType action, Event &event) { break; } - scene->_jimFlag = 1; + scene->_jimFlag = true; scene->setAction(&scene->_action1); } return true; - case INV_PRINT_OUT: + } else if (action == INV_PRINT_OUT) { if (!BF_GLOBALS.getFlag(fGotPointsForMCard)) { - BF_GLOBALS._uiElements.addScore(30); - BF_GLOBALS.getFlag(fGotPointsForMCard); + T2_GLOBALS._uiElements.addScore(30); + BF_GLOBALS.setFlag(fGotPointsForMCard); scene->setAction(&scene->_action2); return true; - } - break; - default: - break; - } - - return NamedObject::startAction(action, event); + } else + return false; + } else if (action < CURSOR_WALK) + // Any other inventory item + return false; + else + return NamedObject::startAction(action, event); } bool Scene385::Dezi::startAction(CursorType action, Event &event) { @@ -5385,7 +5437,8 @@ bool Scene385::Exit::startAction(CursorType action, Event &event) { Scene385::Scene385(): SceneExt() { - _talkAction = _jimFlag = 0; + _talkAction = 0; + _jimFlag = false; } void Scene385::synchronize(Serializer &s) { @@ -5440,7 +5493,7 @@ void Scene385::postInit(SceneObjectList *OwnerList) { _door.setPosition(Common::Point(107, 27)); _door.setDetails(385, 0, -1, -1, 1, NULL); - BF_GLOBALS._walkRegions.proc1(6); + BF_GLOBALS._walkRegions.disableRegion(6); if (BF_GLOBALS._sceneManager._previousScene == 390) { BF_GLOBALS._player.setPosition(Common::Point(109, 119)); @@ -5471,7 +5524,7 @@ void Scene385::signal() { void Scene385::process(Event &event) { SceneExt::process(event); - if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) { + if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (UI_INTERFACE_Y - 1))) { // Check if the cursor is on an exit if (_exit.contains(event.mousePos)) { GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_SW); @@ -5599,7 +5652,7 @@ bool Scene390::Green::startAction(CursorType action, Event &event) { if (BF_GLOBALS.getFlag(readGreenRights)) { SceneItem::display2(390, 15); } else { - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS.setFlag(readGreenRights); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 3904; @@ -5725,7 +5778,7 @@ bool Scene390::GangMember1::startAction(CursorType action, Event &event) { SceneItem::display2(390, 15); } else { BF_GLOBALS.setFlag(readFrankRights); - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS._player.disableControl(); scene->_sceneMode = 3904; @@ -5749,7 +5802,7 @@ bool Scene390::GangMember2::startAction(CursorType action, Event &event) { if (BF_GLOBALS.getFlag(readFrankRights)) { SceneItem::display2(390, 15); } else { - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); BF_GLOBALS.setFlag(readFrankRights); BF_GLOBALS._player.disableControl(); @@ -5900,7 +5953,7 @@ void Scene390::signal() { BF_GLOBALS._player.enableControl(); break; case 3905: - BF_GLOBALS._uiElements.addScore(30); + T2_GLOBALS._uiElements.addScore(30); _object2.remove(); BF_INVENTORY.setObjectScene(INV_HANDCUFFS, 1); BF_GLOBALS._player.enableControl(); |