diff options
author | Kamil Zbróg | 2013-11-04 11:40:22 +0000 |
---|---|---|
committer | Kamil Zbróg | 2013-11-04 11:40:22 +0000 |
commit | 85694ec1f5793eb4025f4153ef4bf71d3769d699 (patch) | |
tree | c93fab58eb2f52eca244895a9867d28134dbd7f5 /engines/tsage | |
parent | 026390145b0e947be7cccf3d9ba329eb2270a2ed (diff) | |
parent | 9dc35033f523c9c694f24e15ed45ba6194786a25 (diff) | |
download | scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.tar.gz scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.tar.bz2 scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.zip |
Merge remote-tracking branch 'own/prince' into prince-malik
Conflicts:
engines/prince/debugger.cpp
engines/prince/debugger.h
engines/prince/detection.cpp
engines/prince/font.cpp
engines/prince/graphics.cpp
engines/prince/prince.cpp
engines/prince/prince.h
engines/prince/script.cpp
engines/prince/script.h
Diffstat (limited to 'engines/tsage')
51 files changed, 2791 insertions, 2571 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 63f84d25e1..5674773177 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -454,9 +454,10 @@ void Timer::dispatch() { if (_endFrame) { uint32 frameNumber = BF_GLOBALS._events.getFrameNumber(); - if (frameNumber > _endFrame) + if (frameNumber > _endFrame) { // Timer has expired signal(); + } } } @@ -472,7 +473,8 @@ void Timer::set(uint32 delay, EventHandler *endHandler) { /*--------------------------------------------------------------------------*/ TimerExt::TimerExt(): Timer() { - _action = NULL; + _action = nullptr; + _newAction = nullptr; } void TimerExt::set(uint32 delay, EventHandler *endHandler, Action *newAction) { @@ -839,7 +841,7 @@ void SceneExt::startStrip() { scene->_savedCanWalk = BF_GLOBALS._player._canWalk; BF_GLOBALS._player.disableControl(); - if (!BF_GLOBALS._v50696 && T2_GLOBALS._uiElements._active) + if (T2_GLOBALS._uiElements._active) T2_GLOBALS._uiElements.hide(); } } @@ -853,7 +855,7 @@ void SceneExt::endStrip() { BF_GLOBALS._player._uiEnabled = scene->_savedUiEnabled; BF_GLOBALS._player._canWalk = scene->_savedCanWalk; - if (!BF_GLOBALS._v50696 && T2_GLOBALS._uiElements._active) + if (T2_GLOBALS._uiElements._active) T2_GLOBALS._uiElements.show(); } } @@ -888,7 +890,6 @@ void PalettedScene::remove() { BF_GLOBALS._sceneObjects->draw(); BF_GLOBALS._scenePalette.loadPalette(2); - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager._hasPalette = true; } @@ -909,6 +910,7 @@ void PalettedScene::add2Faders(const byte *arrBufferRGB, int step, int paletteNu void PalettedScene::transition(const byte *arrBufferRGB, int percent, int paletteNum, Action *action, int fromColor1, int fromColor2, int toColor1, int toColor2, bool flag) { byte tmpPalette[768]; + memset(tmpPalette, 0, 768); _palette.loadPalette(paletteNum); _palette.loadPalette(2); @@ -1260,8 +1262,6 @@ void BlueForceInvObjectList::alterInventory(int mode) { setObjectScene(INV_TICKET_BOOK, 60); setObjectScene(INV_MIRANDA_CARD, 60); - BF_GLOBALS._v4CEC4 = 0; - switch (mode) { case 2: if (hasPrintout) diff --git a/engines/tsage/blue_force/blueforce_scenes0.cpp b/engines/tsage/blue_force/blueforce_scenes0.cpp index f1f00599e0..06be605c1a 100644 --- a/engines/tsage/blue_force/blueforce_scenes0.cpp +++ b/engines/tsage/blue_force/blueforce_scenes0.cpp @@ -343,7 +343,7 @@ void Scene50::synchronize(Serializer &s) { void Scene50::postInit(SceneObjectList *OwnerList) { SceneExt::postInit(); - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; T2_GLOBALS._uiElements._active = false; BF_GLOBALS._player.postInit(); BF_GLOBALS._player.setVisage(830); @@ -419,6 +419,8 @@ void Scene50::postInit(SceneObjectList *OwnerList) { tooltip = &_location8; xp = 75; break; + default: + error("Unexpected tooltip value %d", selectedTooltip); } _timer.set(240, this); @@ -940,7 +942,6 @@ void Scene60::Action3::signal() { scene->_stripManager.start(71, this); break; case 2: - scene->_field1222 = true; BF_GLOBALS._player.enableControl(); remove(); break; @@ -954,7 +955,6 @@ Scene60::Scene60(): SceneExt() { _sceneNumber = 0; _visage = 0; _cursorId = CURSOR_NONE; - _field1222 = false; } void Scene60::synchronize(Serializer &s) { @@ -964,7 +964,10 @@ void Scene60::synchronize(Serializer &s) { s.syncAsSint16LE(_sceneNumber); s.syncAsSint16LE(_visage); s.syncAsSint16LE(_cursorId); - s.syncAsSint16LE(_field1222); + if (s.getVersion() < 11) { + int useless = 0; + s.syncAsSint16LE(useless); + } } void Scene60::postInit(SceneObjectList *OwnerList) { diff --git a/engines/tsage/blue_force/blueforce_scenes0.h b/engines/tsage/blue_force/blueforce_scenes0.h index dd502c5f30..e7ee06e779 100644 --- a/engines/tsage/blue_force/blueforce_scenes0.h +++ b/engines/tsage/blue_force/blueforce_scenes0.h @@ -174,8 +174,6 @@ public: int _sceneNumber; int _visage; CursorType _cursorId; - // TODO: Check if really useless in original - bool _field1222; Scene60(); virtual void synchronize(Serializer &s); diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp index d26e34ae23..fa877ea6c9 100644 --- a/engines/tsage/blue_force/blueforce_scenes1.cpp +++ b/engines/tsage/blue_force/blueforce_scenes1.cpp @@ -176,7 +176,6 @@ void Scene100::postInit(SceneObjectList *OwnerList) { loadScene(101); } BF_GLOBALS._scenePalette.loadPalette(2); - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._interfaceY = SCREEN_HEIGHT; g_globals->_player.postInit(); @@ -232,7 +231,6 @@ void Scene109::Action1::signal() { scene->_text.setup(BF_19840515, this); break; case 3: - BF_GLOBALS._v51C44 = 1; scene->loadScene(115); scene->_protaginist2.show(); @@ -246,7 +244,6 @@ void Scene109::Action1::signal() { scene->_beerSign.show(); scene->_beerSign.setAction(&scene->_action2); - BF_GLOBALS._v501FC = 170; setDelay(60); break; case 4: @@ -401,12 +398,10 @@ void Scene110::Action1::signal() { scene->_object6.show(); scene->_object9.show(); scene->_object10.show(); - BF_GLOBALS._v51C44 = 1; scene->loadScene(110); setDelay(10); break; case 2: - BF_GLOBALS._v51C44 = 1; scene->_object1.animate(ANIM_MODE_5, this); break; case 3: { @@ -1833,8 +1828,6 @@ void Scene125::Action2::signal() { setDelay(20); break; case 2: { - BF_GLOBALS._v501FA = 10; - BF_GLOBALS._v51C44 = 1; Common::Point destPos(202, 94); NpcMover *mover = new NpcMover(); BF_GLOBALS._player.addMover(mover, &destPos, this); @@ -2311,7 +2304,6 @@ void Scene140::Action1::signal() { setDelay(60); // No break on purpose case 13: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(150); default: break; @@ -2337,9 +2329,6 @@ void Scene140::postInit(SceneObjectList *OwnerList) { _object1.changeZoom(100); _object1.hide(); - BF_GLOBALS._v5020C = 0; - BF_GLOBALS._v501F8 = 300; - BF_GLOBALS._v501FC = 90; BF_GLOBALS._sound1.play(7); _object2.setAction(&_action1); @@ -2640,7 +2629,6 @@ void Scene160::Action2::signal() { BF_GLOBALS._sound1.stop(); // End of hack - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(200); break; default: @@ -2788,9 +2776,6 @@ void Scene180::postInit(SceneObjectList *OwnerList) { setZoomPercents(121, 60, 125, 70); if ((BF_GLOBALS._bookmark == bLyleStoppedBy) && (BF_GLOBALS._dayNumber == 1)) { - BF_GLOBALS._v501FC = 87; - BF_GLOBALS._v501FA = _sceneBounds.left + 10; - // CHECKME: BF_GLOBALS._v50206 = 18; ?? _sceneMessage.setup(THE_NEXT_DAY); _sceneMode = 6; setAction(&_sceneMessage, this); @@ -2799,9 +2784,6 @@ void Scene180::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._mapLocationId = 4; } else if (((BF_GLOBALS._bookmark == bDroppedOffLyle) && (BF_GLOBALS._dayNumber == 3)) || ((BF_GLOBALS._bookmark == bDoneAtLyles) && (BF_GLOBALS._dayNumber == 4))) { - BF_GLOBALS._v501FC = 87; - BF_GLOBALS._v501FA = _sceneBounds.left + 10; - // CHECKME: BF_GLOBALS._v50206 = 18; ?? _sceneMessage.setup(THE_NEXT_DAY); _sceneMode = 6; setAction(&_sceneMessage, this); diff --git a/engines/tsage/blue_force/blueforce_scenes2.cpp b/engines/tsage/blue_force/blueforce_scenes2.cpp index c992afe620..1b0ed2a145 100644 --- a/engines/tsage/blue_force/blueforce_scenes2.cpp +++ b/engines/tsage/blue_force/blueforce_scenes2.cpp @@ -1603,7 +1603,6 @@ void Scene271::signal() { } break; case 12: - BF_GLOBALS._v51C44 = 0; BF_GLOBALS._sound1.changeSound(67); BF_GLOBALS._sceneManager.changeScene(280); break; @@ -1617,7 +1616,6 @@ void Scene271::signal() { _field2E16 = 1; break; case 2704: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sound1.fadeOut2(NULL); BF_GLOBALS._sceneManager.changeScene(690); break; @@ -1649,7 +1647,6 @@ void Scene271::signal() { addFader((const byte *)&black, 2, this); break; case 2712: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sound1.fadeOut2(NULL); BF_GLOBALS._sceneManager.changeScene(180); break; @@ -1657,7 +1654,6 @@ void Scene271::signal() { BF_GLOBALS._player.enableControl(); break; case 2714: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(560); break; case 2715: diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp index 81e4af6e97..5dd795cb39 100644 --- a/engines/tsage/blue_force/blueforce_scenes3.cpp +++ b/engines/tsage/blue_force/blueforce_scenes3.cpp @@ -564,7 +564,6 @@ void Scene300::dispatch() { if ((BF_GLOBALS._player._position.y < 59) && (BF_GLOBALS._player._position.x > 137) && (_sceneMode != 6308) && (_sceneMode != 7308)) { - // 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, @@ -967,7 +966,6 @@ void Scene315::Action1::signal() { /*--------------------------------------------------------------------------*/ Scene315::Scene315() { - BF_GLOBALS._v51C44 = 1; _field1B6C = _field139C = 0; if (BF_GLOBALS._dayNumber == 0) BF_GLOBALS._dayNumber = 1; @@ -977,12 +975,19 @@ Scene315::Scene315() { _doorOpened = false; _invGreenCount = _bookGreenCount = 0; _invGangCount = _bookGangCount = 0; + + _stripNumber = 0; + _field1398 = 0; + _currentCursor = INV_NONE; } void Scene315::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field1390); + if (s.getVersion() < 11) { + int useless = 0; + s.syncAsSint16LE(useless); + } s.syncAsSint16LE(_stripNumber); s.syncAsSint16LE(_field1398); s.syncAsSint16LE(_invGreenCount); @@ -1399,7 +1404,7 @@ bool Scene325::Item1::startAction(CursorType action, Event &event) { void Scene325::postInit(SceneObjectList *OwnerList) { SceneExt::postInit(); loadScene(325); - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; BF_GLOBALS.clearFlag(fCanDrawGun); if (BF_GLOBALS._dayNumber == 0) @@ -4439,7 +4444,6 @@ void Scene360::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._player.enableControl(); 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); diff --git a/engines/tsage/blue_force/blueforce_scenes3.h b/engines/tsage/blue_force/blueforce_scenes3.h index ea9d5f7311..d9f0d32edc 100644 --- a/engines/tsage/blue_force/blueforce_scenes3.h +++ b/engines/tsage/blue_force/blueforce_scenes3.h @@ -210,7 +210,6 @@ public: WestExit _westExit; SouthWestExit _swExit; Action1 _action1; - int _field1390; int _stripNumber; int _field1398; int _invGreenCount, _bookGreenCount, _invGangCount; diff --git a/engines/tsage/blue_force/blueforce_scenes4.cpp b/engines/tsage/blue_force/blueforce_scenes4.cpp index a10f311791..072761b5ac 100644 --- a/engines/tsage/blue_force/blueforce_scenes4.cpp +++ b/engines/tsage/blue_force/blueforce_scenes4.cpp @@ -39,7 +39,7 @@ namespace BlueForce { void Scene410::Action1::signal() { Scene410 *scene = (Scene410 *)BF_GLOBALS._sceneManager._scene; - switch (scene->_field1FB6++) { + switch (scene->_action1Count++) { case 0: if (BF_GLOBALS.getFlag(fTalkedDriverNoBkup)) { setDelay(3); @@ -136,7 +136,7 @@ void Scene410::Action5::signal() { switch (_actionIndex++) { case 0: - if (scene->_field1FC4 == 0) { + if (scene->_harrisonMovedFl == 0) { ADD_PLAYER_MOVER(114, 133); } else { ADD_PLAYER_MOVER(195, 139); @@ -167,7 +167,7 @@ void Scene410::Action6::signal() { switch (_actionIndex++) { case 0: - if (scene->_field1FC4 == 0) { + if (scene->_harrisonMovedFl == 0) { ADD_PLAYER_MOVER(114, 133); } else { ADD_PLAYER_MOVER(126, 99); @@ -243,7 +243,7 @@ bool Scene410::Motorcycle::startAction(CursorType action, Event &event) { } else if (BF_GLOBALS.getFlag(fSearchedTruck) && !BF_GLOBALS._sceneObjects->contains(&scene->_harrison)) { scene->_sceneMode = 4103; scene->signal(); - } else if (scene->_field1FBC != 0) { + } else if (scene->_cuffedDriverFl != 0) { SceneItem::display2(410, 12); } else { scene->_sceneMode = 4103; @@ -260,7 +260,7 @@ bool Scene410::TruckFront::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - if ((BF_GLOBALS._bookmark < bStoppedFrankie) && (!scene->_field1FBC || !scene->_field1FBA)) + if ((BF_GLOBALS._bookmark < bStoppedFrankie) && (!scene->_cuffedDriverFl || !scene->_field1FBA)) break; else if (BF_GLOBALS.getFlag(fSearchedTruck)) SceneItem::display2(410, 13); @@ -293,7 +293,7 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { } else { SceneItem::display2(410, 7); } - } else if (!scene->_field1FBC) { + } else if (!scene->_cuffedDriverFl) { SceneItem::display2(410, 7); } else if (!scene->_field1FC0) { scene->_sceneMode = 4124; @@ -309,13 +309,13 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { return true; case INV_HANDCUFFS: if (BF_GLOBALS.getFlag(fCalledBackup)) { - if ((scene->_talkCount < 5) || (scene->_field1FB6 < 1) || (scene->_field1FBC != 0)) + if ((scene->_talkCount < 5) || (scene->_action1Count < 1) || (scene->_cuffedDriverFl != 0)) break; BF_GLOBALS._player.disableControl(); scene->_sceneMode = 4123; scene->_stripManager.start(4125, scene); - scene->_field1FBC = 1; + scene->_cuffedDriverFl = 1; T2_GLOBALS._uiElements.addScore(30); } else { if (BF_GLOBALS.getFlag(fTalkedDriverNoBkup)) { @@ -328,11 +328,11 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { case INV_TICKET_BOOK: if (!BF_GLOBALS.getFlag(fDriverOutOfTruck)) { return startAction(CURSOR_TALK, event); - } else if (!scene->_field1FC4) { + } else if (!scene->_harrisonMovedFl) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 2; scene->setAction(&scene->_sequenceManager1, scene, 4120, &scene->_passenger, &BF_GLOBALS._player, NULL); - } else if ((scene->_field1FBC != 0) || (scene->_field1FC2 != 0)) { + } else if ((scene->_cuffedDriverFl != 0) || (scene->_field1FC2 != 0)) { break; } else { scene->_field1FC2 = 1; @@ -343,7 +343,7 @@ bool Scene410::Driver::startAction(CursorType action, Event &event) { } return true; case INV_MIRANDA_CARD: - if (scene->_field1FBC == 0) + if (scene->_cuffedDriverFl == 0) return false; if (BF_GLOBALS.getFlag(readFrankRights)) { @@ -455,7 +455,7 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 32, SET_EXT_BGCOLOR, 49, SET_EXT_FGCOLOR, 13, LIST_END); } - } else if ((scene->_field1FBA != 0) && (scene->_field1FBC != 0)) { + } else if ((scene->_field1FBA != 0) && (scene->_cuffedDriverFl != 0)) { BF_GLOBALS._player.disableControl(); scene->_sceneMode = 4112; scene->_stripManager.start(4113, scene); @@ -476,13 +476,13 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { BF_GLOBALS._walkRegions.enableRegion(22); scene->_sceneMode = 4122; scene->_stripManager.start(4112, scene); - } else if (scene->_field1FB6 < 1) { + } else if (scene->_action1Count < 1) { break; - } else if (scene->_field1FBC != 0) { + } else if (scene->_cuffedDriverFl != 0) { error("Error - want to cuff driver, but he's cuffed already"); } else { BF_GLOBALS._player.disableControl(); - scene->_field1FBC = 1; + scene->_cuffedDriverFl = 1; scene->_field1FC0 = 1; BF_GLOBALS._walkRegions.enableRegion(22); scene->_sceneMode = 4109; @@ -500,20 +500,20 @@ bool Scene410::Harrison::startAction(CursorType action, Event &event) { /*--------------------------------------------------------------------------*/ Scene410::Scene410(): SceneExt() { - _field1FB6 = _talkCount = _field1FBA = _field1FBC = 0; - _field1FBE = _field1FC0 = _field1FC2 = _field1FC4 = 0; + _action1Count = _talkCount = _field1FBA = _cuffedDriverFl = 0; + _field1FBE = _field1FC0 = _field1FC2 = _harrisonMovedFl = 0; } void Scene410::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field1FB6); + s.syncAsSint16LE(_action1Count); s.syncAsSint16LE(_talkCount); s.syncAsSint16LE(_field1FBA); - s.syncAsSint16LE(_field1FBC); + s.syncAsSint16LE(_cuffedDriverFl); s.syncAsSint16LE(_field1FBE); s.syncAsSint16LE(_field1FC0); s.syncAsSint16LE(_field1FC2); - s.syncAsSint16LE(_field1FC4); + s.syncAsSint16LE(_harrisonMovedFl); } void Scene410::postInit(SceneObjectList *OwnerList) { @@ -593,7 +593,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _patrolCar.fixPriority(148); _patrolCar.setPosition(Common::Point(39, 168)); - _field1FC4 = 1; + _harrisonMovedFl = 1; _sceneMode = 0; signal(); break; @@ -603,10 +603,10 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _driver.remove(); _sceneMode = 0; } else { - _field1FC4 = BF_GLOBALS._v50CC8; + _harrisonMovedFl = BF_GLOBALS._scene410HarrisonMovedFl; _field1FBA = BF_GLOBALS._v50CC2; - _talkCount = BF_GLOBALS._v50CC6; - _field1FB6 = BF_GLOBALS._v50CC4; + _talkCount = BF_GLOBALS._scene410TalkCount; + _action1Count = BF_GLOBALS._scene410Action1Count; _passenger.setVisage(418); _passenger.setStrip(6); @@ -651,7 +651,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _patrolCar.setDetails(410, 8, 9, 10, 1, (SceneItem *)NULL); _patrolCar.fixPriority(148); - if (_field1FC4) { + if (_harrisonMovedFl) { _harrison.setPosition(Common::Point(108, 112)); _patrolCar.fixPriority(148); _patrolCar.setPosition(Common::Point(39, 168)); @@ -664,7 +664,7 @@ void Scene410::postInit(SceneObjectList *OwnerList) { _sceneMode = 0; } - _field1FC4 = 1; + _harrisonMovedFl = 1; } break; case 50: @@ -686,10 +686,10 @@ void Scene410::signal() { BF_GLOBALS.set2Flags(f1097Frankie); BF_GLOBALS.clearFlag(f1097Marina); - BF_GLOBALS._v50CC8 = _field1FC4; + BF_GLOBALS._scene410HarrisonMovedFl = _harrisonMovedFl; BF_GLOBALS._v50CC2 = _field1FBA; - BF_GLOBALS._v50CC6 = _talkCount; - BF_GLOBALS._v50CC4 = _field1FB6; + BF_GLOBALS._scene410TalkCount = _talkCount; + BF_GLOBALS._scene410Action1Count = _action1Count; BF_GLOBALS._sceneManager.changeScene(60); break; case 2: @@ -760,7 +760,7 @@ void Scene410::signal() { break; case 4104: // After call for backup, patrol car is coming - _field1FC4 = 1; + _harrisonMovedFl = 1; BF_GLOBALS._player.disableControl(); _sceneMode = 0; setAction(&_sequenceManager1, this, 4104, &_patrolCar, &_harrison, NULL); diff --git a/engines/tsage/blue_force/blueforce_scenes4.h b/engines/tsage/blue_force/blueforce_scenes4.h index 937c015a4c..d6d795a44e 100644 --- a/engines/tsage/blue_force/blueforce_scenes4.h +++ b/engines/tsage/blue_force/blueforce_scenes4.h @@ -116,9 +116,10 @@ public: SpeakerDriver _driverSpeaker; SpeakerShooter _shooterSpeaker; ASoundExt _sound1; - int _field1FB6, _talkCount, _field1FBA; - int _field1FBC, _field1FBE; - int _field1FC0, _field1FC2, _field1FC4; + int _action1Count, _talkCount, _field1FBA; + int _cuffedDriverFl, _field1FBE; + int _field1FC0; + int _field1FC2, _harrisonMovedFl; Scene410(); virtual void postInit(SceneObjectList *OwnerList = NULL); diff --git a/engines/tsage/blue_force/blueforce_scenes5.cpp b/engines/tsage/blue_force/blueforce_scenes5.cpp index 0cf487daa9..ebaa3e372e 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.cpp +++ b/engines/tsage/blue_force/blueforce_scenes5.cpp @@ -1772,12 +1772,12 @@ void Scene570::IconManager::refreshList() { } void Scene570::IconManager::addItem(Icon *item) { - item->_mode = _mode; _list.push_back(item); } Scene570::Icon::Icon(): NamedObject() { _iconId = _folderId = 0; + _parentFolderId = 0; } void Scene570::Icon::synchronize(Serializer &s) { @@ -1785,7 +1785,10 @@ void Scene570::Icon::synchronize(Serializer &s) { s.syncAsSint16LE(_iconId); s.syncAsSint16LE(_folderId); s.syncAsSint16LE(_parentFolderId); - s.syncAsSint16LE(_mode); + if (s.getVersion() < 11) { + int useless = 0; + s.syncAsSint16LE(useless); + } } void Scene570::Icon::remove() { diff --git a/engines/tsage/blue_force/blueforce_scenes5.h b/engines/tsage/blue_force/blueforce_scenes5.h index 56bf20c93b..5337b6426b 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.h +++ b/engines/tsage/blue_force/blueforce_scenes5.h @@ -257,7 +257,7 @@ class Scene570: public SceneExt { class Icon: public NamedObject { public: SceneText _sceneText; - int _iconId, _folderId, _parentFolderId, _mode; + int _iconId, _folderId, _parentFolderId; Common::String _text; Icon(); diff --git a/engines/tsage/blue_force/blueforce_scenes6.cpp b/engines/tsage/blue_force/blueforce_scenes6.cpp index 9467df7917..b20092492f 100644 --- a/engines/tsage/blue_force/blueforce_scenes6.cpp +++ b/engines/tsage/blue_force/blueforce_scenes6.cpp @@ -79,7 +79,6 @@ void Scene600::Action1::signal() { } BF_GLOBALS._screenSurface.fillRect(BF_GLOBALS._screenSurface.getBounds(), 0); - BF_GLOBALS._v51C44 = 1; scene->loadScene(999); setDelay(5); break; @@ -88,7 +87,6 @@ void Scene600::Action1::signal() { setDelay(5); break; case 7: - BF_GLOBALS._v51C44 = 0; remove(); break; default: @@ -275,7 +273,7 @@ bool Scene666::Item1::startAction(CursorType action, Event &event) { void Scene666::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._sound1.play(27); SceneExt::postInit(); - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; loadScene(999); BF_GLOBALS._screenSurface.fillRect(BF_GLOBALS._screenSurface.getBounds(), 0); diff --git a/engines/tsage/blue_force/blueforce_scenes8.cpp b/engines/tsage/blue_force/blueforce_scenes8.cpp index 9a20788b6a..867b6a9f6e 100644 --- a/engines/tsage/blue_force/blueforce_scenes8.cpp +++ b/engines/tsage/blue_force/blueforce_scenes8.cpp @@ -577,17 +577,15 @@ bool Scene810::Lyle::startAction(CursorType action, Event &event) { if ((BF_GLOBALS.getFlag(shownLyleRapsheet)) || (BF_GLOBALS.getFlag(shownLyleCrate1))){ scene->_sceneMode = 8141; } else { - // Doublecheck on shownLyleCrate1 removed: useless scene->_sceneMode = 8144; } } else { if ((BF_GLOBALS.getFlag(shownLyleRapsheet)) || (BF_GLOBALS.getFlag(shownLyleCrate1))) { scene->_sceneMode = 8129; - } else { // if (BF_GLOBALS.getFlag(shownLyleCrate1)) { + } else { scene->_sceneMode = 8132; - // doublecheck Present in the original, may hide a bug in the original - //} else - // scene->_sceneMode = 8121; + // Double check on ShownLyleCrate1 present in the original, may hide a bug in the original + // The original was then setting _sceneMode 8121 } } } @@ -1071,7 +1069,6 @@ void Scene810::postInit(SceneObjectList *OwnerList) { setAction(&_sequenceManager1, this, 8107, &BF_GLOBALS._player, &_lyle, NULL); break; case 935: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._scenePalette.loadPalette(2); _lyle.remove(); @@ -1804,13 +1801,11 @@ void Scene830::signal() { _sceneMode = 832; BF_GLOBALS._scenePalette.clearListeners(); addFader((const byte *)&black, 5, this); - BF_GLOBALS._v51C44 = 0; break; case 12: _sceneMode = 831; BF_GLOBALS._scenePalette.clearListeners(); addFader((const byte *)&black, 5, this); - BF_GLOBALS._v51C44 = 0; break; case 13: BF_GLOBALS._sceneManager.changeScene(850); diff --git a/engines/tsage/blue_force/blueforce_scenes9.cpp b/engines/tsage/blue_force/blueforce_scenes9.cpp index 52115b95fe..cef9e8135c 100644 --- a/engines/tsage/blue_force/blueforce_scenes9.cpp +++ b/engines/tsage/blue_force/blueforce_scenes9.cpp @@ -1422,6 +1422,10 @@ void Scene910::Object13::setupBreaker(int x, int y, int mode, int8 frameNumber) BF_GLOBALS._sceneItems.push_front(this); } +Scene910::Object25::Object25() { + _field90 = _field92 = 0; +} + void Scene910::Object25::synchronize(Serializer &s) { NamedObject::synchronize(s); s.syncAsSint16LE(_field90); @@ -1962,7 +1966,6 @@ void Scene910::postInit(SceneObjectList *OwnerList) { loadScene(910); BF_GLOBALS._sound1.changeSound(99); - BF_GLOBALS._v51C44 = 0; _stripManager.addSpeaker(&_gameTextSpeaker); _stripManager.addSpeaker(&_jakeJacketSpeaker); @@ -2273,7 +2276,6 @@ void Scene910::signal() { break; case 10: BF_GLOBALS._player.disableControl(); - BF_GLOBALS._v51C44 = 0; BF_GLOBALS._sceneManager.changeScene(935); break; case 11: @@ -2312,7 +2314,6 @@ void Scene910::signal() { setAction(&_sequenceManager1, this, 9121, &_stuart, NULL); break; case 14: - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(940); break; case 16: @@ -2372,7 +2373,6 @@ void Scene910::signal() { break; case 19: BF_GLOBALS._deathReason = 14; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 20: @@ -2388,7 +2388,6 @@ void Scene910::signal() { BF_GLOBALS.clearFlag(fGotPointsForSearchingDA); else BF_GLOBALS.setFlag(fGotPointsForSearchingDA); - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(900); break; case 9102: @@ -2482,7 +2481,6 @@ void Scene910::signal() { // No break on purpose case 9137: BF_GLOBALS._deathReason = 16; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 9119: @@ -2622,7 +2620,6 @@ void Scene910::signal() { // No break on purpose case 9134: BF_GLOBALS._deathReason = 17; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 9130: @@ -2635,12 +2632,10 @@ void Scene910::signal() { BF_GLOBALS._player.enableControl(); BF_GLOBALS._v4CEE4 = 4; BF_GLOBALS._deathReason = 13; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 9135: BF_GLOBALS._deathReason = 15; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 9136: @@ -2685,7 +2680,6 @@ void Scene910::signal() { break; case 9143: if (BF_GLOBALS._nico910State == 0) { - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(920); } else { SceneItem::display(910, 89, SET_WIDTH, 312, @@ -2704,7 +2698,6 @@ void Scene910::signal() { break; case 9148: BF_GLOBALS._deathReason = 23; - BF_GLOBALS._v51C44 = 1; BF_GLOBALS._sceneManager.changeScene(666); break; case 9149: @@ -3577,7 +3570,7 @@ void Scene935::postInit(SceneObjectList *OwnerList) { PalettedScene::postInit(); loadScene(935); - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; BF_GLOBALS._player.disableControl(); _visualSpeaker._textMode = ALIGN_CENTER; _visualSpeaker._hideObjects = false; @@ -3812,7 +3805,7 @@ void Scene940::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._sound1.play(115); BF_GLOBALS._dayNumber = 6; - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; T2_GLOBALS._uiElements._active = false; _gameTextSpeaker2._speakerName = "SENTTEXT"; diff --git a/engines/tsage/blue_force/blueforce_scenes9.h b/engines/tsage/blue_force/blueforce_scenes9.h index 74708b94de..8bf7f343a1 100644 --- a/engines/tsage/blue_force/blueforce_scenes9.h +++ b/engines/tsage/blue_force/blueforce_scenes9.h @@ -188,6 +188,7 @@ class Scene910: public PalettedScene { class Object25: public NamedObject { int _field90, _field92; public: + Object25(); void setupHiddenSwitch(int x, int y, int arg8, int argA); virtual void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp index 2a57616640..b15d2f4716 100644 --- a/engines/tsage/blue_force/blueforce_speakers.cpp +++ b/engines/tsage/blue_force/blueforce_speakers.cpp @@ -63,8 +63,8 @@ void VisualSpeaker::synchronize(Serializer &s) { s.syncAsSint16LE(_offsetPos.y); } -void VisualSpeaker::proc12(Action *action) { - Speaker::proc12(action); +void VisualSpeaker::startSpeaking(Action *action) { + Speaker::startSpeaking(action); _textPos = Common::Point(_offsetPos.x + BF_GLOBALS._sceneManager._scene->_sceneBounds.left, _offsetPos.y + BF_GLOBALS._sceneManager._scene->_sceneBounds.top); _numFrames = 0; diff --git a/engines/tsage/blue_force/blueforce_speakers.h b/engines/tsage/blue_force/blueforce_speakers.h index e406a50fbe..e9150df056 100644 --- a/engines/tsage/blue_force/blueforce_speakers.h +++ b/engines/tsage/blue_force/blueforce_speakers.h @@ -51,7 +51,7 @@ public: virtual Common::String getClassName() { return "VisualSpeaker"; } virtual void synchronize(Serializer &s); virtual void remove(); - virtual void proc12(Action *action); + virtual void startSpeaking(Action *action); virtual void setText(const Common::String &msg); }; diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index 919ba9f69a..5a4310228d 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -934,7 +934,7 @@ void StripManager::signal() { g_globals->_sceneManager._scene->loadScene(_sceneNumber); } - _activeSpeaker->proc12(this); + _activeSpeaker->startSpeaking(this); } if (_callbackObject) { @@ -1088,7 +1088,7 @@ void Speaker::remove() { SceneObjectList::deactivate(); } -void Speaker::proc12(Action *action) { +void Speaker::startSpeaking(Action *action) { _action = action; if (_newSceneNumber != -1) { _oldSceneNumber = g_globals->_sceneManager._sceneNumber; diff --git a/engines/tsage/converse.h b/engines/tsage/converse.h index b1cbbeaf2b..7e57199d2f 100644 --- a/engines/tsage/converse.h +++ b/engines/tsage/converse.h @@ -91,7 +91,7 @@ public: virtual Common::String getClassName() { return "Speaker"; } virtual void synchronize(Serializer &s); virtual void remove(); - virtual void proc12(Action *action); + virtual void startSpeaking(Action *action); virtual void setText(const Common::String &msg); virtual void removeText(); virtual void proc16() {} diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 8021160514..e703b714b2 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -860,6 +860,8 @@ void PlayerMover::doStepsOfNpcMovement(const Common::Point &srcPos, const Common int PlayerMover::calculateRestOfRoute(int *routeList, int srcRegion, int destRegion, bool &foundRoute) { // Make a copy of the provided route. The first entry is the size. int tempList[REGION_LIST_SIZE + 1]; + memset(tempList, 0, sizeof(tempList)); + foundRoute = false; for (int idx = 0; idx <= *routeList; ++idx) tempList[idx] = routeList[idx]; diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index b7724f072c..a8ab145dbb 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -26,6 +26,7 @@ #include "tsage/ringworld/ringworld_demo.h" #include "tsage/ringworld/ringworld_logic.h" #include "tsage/ringworld2/ringworld2_logic.h" +#include "tsage/ringworld2/ringworld2_scenes0.h" #include "tsage/staticres.h" namespace TsAGE { @@ -47,6 +48,11 @@ static SavedObject *classFactoryProc(const Common::String &className) { if (className == "SceneObjectWrapper") return new SceneObjectWrapper(); if (className == "PaletteRotation") return new PaletteRotation(); if (className == "PaletteFader") return new PaletteFader(); + if (className == "SceneText") return new SceneText(); + + // Return to Ringworld specific classes + if (className == "Scene205_Star") return new Ringworld2::Star(); + return NULL; } @@ -119,8 +125,11 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _sounds.push_back(&_soundHandler); _sounds.push_back(&_sequenceManager._soundHandler); - _scrollFollower = NULL; - _inventory = NULL; + _scrollFollower = nullptr; + + _inventory = nullptr; + _game = nullptr; + _sceneHandler = nullptr; switch (g_vm->getGameID()) { case GType_Ringworld: @@ -145,6 +154,7 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _sceneHandler = new Ringworld2::SceneHandlerExt(); break; } + } Globals::~Globals() { @@ -204,6 +214,11 @@ void Globals::dispatchSounds() { /*--------------------------------------------------------------------------*/ +TsAGE2Globals::TsAGE2Globals() { + _onSelectItem = NULL; + _interfaceY = 0; +} + void TsAGE2Globals::reset() { Globals::reset(); @@ -224,15 +239,46 @@ void TsAGE2Globals::synchronize(Serializer &s) { namespace BlueForce { BlueForceGlobals::BlueForceGlobals(): TsAGE2Globals() { + _hiddenDoorStatus = 0; + _nico910State = 0; + _v4CEE4 = 0; + _v4CEE6 = 0; + _v4CEE8 = 0; + _deziTopic = 0; + _deathReason = 0; + _driveFromScene = 300; + _driveToScene = 0; + _subFlagBitArr1 = 0; + _subFlagBitArr2 = 0; + _v50CC2 = 0; + _scene410Action1Count = 0; + _scene410TalkCount = 0; + _scene410HarrisonMovedFl = 0; + _bookmark = bNone; + _mapLocationId = 1; + _clip1Bullets = 8; + _clip2Bullets = 8; + + _dayNumber = 0; + _tonyDialogCtr = 0; + _marinaWomanCtr = 0; + _kateDialogCtr = 0; + _v4CEB6 = 0; + _safeCombination = 0; + _gateStatus = 0; + _greenDay5TalkCtr = 0; + _v4CEC8 = 1; + _v4CECA = 0; + _v4CECC = 0; } void BlueForceGlobals::synchronize(Serializer &s) { TsAGE2Globals::synchronize(s); + int16 useless = 0; s.syncAsSint16LE(_dayNumber); if (s.getVersion() < 9) { - int tmpVar = 0; - s.syncAsSint16LE(tmpVar); + s.syncAsSint16LE(useless); } s.syncAsSint16LE(_tonyDialogCtr); s.syncAsSint16LE(_marinaWomanCtr); @@ -241,7 +287,8 @@ void BlueForceGlobals::synchronize(Serializer &s) { s.syncAsSint16LE(_safeCombination); s.syncAsSint16LE(_gateStatus); s.syncAsSint16LE(_greenDay5TalkCtr); - s.syncAsSint16LE(_v4CEC4); + if (s.getVersion() < 11) + s.syncAsSint16LE(useless); s.syncAsSint16LE(_v4CEC8); s.syncAsSint16LE(_v4CECA); s.syncAsSint16LE(_v4CECC); @@ -256,19 +303,23 @@ void BlueForceGlobals::synchronize(Serializer &s) { s.syncAsSint16LE(_deathReason); s.syncAsSint16LE(_driveFromScene); s.syncAsSint16LE(_driveToScene); - s.syncAsSint16LE(_v501F8); - s.syncAsSint16LE(_v501FA); - s.syncAsSint16LE(_v501FC); - s.syncAsSint16LE(_v5020C); - s.syncAsSint16LE(_v50696); + if (s.getVersion() < 11) { + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + } s.syncAsSint16LE(_subFlagBitArr1); s.syncAsSint16LE(_subFlagBitArr2); s.syncAsSint16LE(_v50CC2); - s.syncAsSint16LE(_v50CC4); - s.syncAsSint16LE(_v50CC6); - s.syncAsSint16LE(_v50CC8); - s.syncAsSint16LE(_v51C42); - s.syncAsSint16LE(_v51C44); + s.syncAsSint16LE(_scene410Action1Count); + s.syncAsSint16LE(_scene410TalkCount); + s.syncAsSint16LE(_scene410HarrisonMovedFl); + if (s.getVersion() < 11) { + s.syncAsSint16LE(useless); + s.syncAsSint16LE(useless); + } s.syncAsSint16LE(_bookmark); s.syncAsSint16LE(_mapLocationId); s.syncAsSint16LE(_clip1Bullets); @@ -298,7 +349,6 @@ void BlueForceGlobals::reset() { _safeCombination = 0; _gateStatus = 0; _greenDay5TalkCtr = 0; - _v4CEC4 = 0; _v4CEC8 = 1; _v4CECA = 0; _v4CECC = 0; @@ -327,19 +377,12 @@ void BlueForceGlobals::reset() { _v4CEE8 = 0; _deziTopic = 0; _deathReason = 0; - _v501F8 = 0; - _v501FA = 0; - _v501FC = 0; - _v5020C = 0; - _v50696 = 0; _subFlagBitArr1 = 0; _subFlagBitArr2 = 0; _v50CC2 = 0; - _v50CC4 = 0; - _v50CC6 = 0; - _v50CC8 = 0; - _v51C42 = 0; - _v51C44 = 1; + _scene410Action1Count = 0; + _scene410TalkCount = 0; + _scene410HarrisonMovedFl = 0; _clip1Bullets = 8; _clip2Bullets = 8; } @@ -370,6 +413,43 @@ namespace Ringworld2 { Ringworld2Globals::Ringworld2Globals() { _scannerDialog = new ScannerDialog(); _speechSubtitles = SPEECH_TEXT; + + _stripModifier = 0; + _flubMazeArea = 1; + _flubMazeEntryDirection = 0; + _maze3800SceneNumb = 3800; + _landerSuitNumber = 2; + _desertStepsRemaining = 5; + _desertCorrectDirection = 0; + _desertPreviousDirection = 0; + _desertWrongDirCtr = -1; + _balloonAltitude = 5; + _scene1925CurrLevel = 0; + _walkwaySceneNumber = 0; + _v56AA0 = 0; + _scientistConvIndex = 0; + _v56AA6 = 1; + _v56AA7 = 1; + _v56AA8 = 1; + _scene180Mode = -1; + _v57709 = 0; + _v5780C = 0; + _v5780E = 0; + _v57810 = 0; + + _fadePaletteFlag = false; + _insetUp = 0; + _frameEdgeColor = 2; + _animationCtr = 0; + _electromagnetChangeAmount = 0; + _electromagnetZoom = 0; + _v565E5 = 0; + _v565E7 = 0; + _v565E9 = -5; + _v565EB = 26; + _foodCount = 0; + _rimLocation = 0; + _rimTransportLocation = 0; } Ringworld2Globals::~Ringworld2Globals() { @@ -400,9 +480,7 @@ void Ringworld2Globals::reset() { _fadePaletteFlag = false; _v5589E.set(0, 0, 0, 0); _v558B6.set(0, 0, 0, 0); - _v558C2 = 0; _animationCtr = 0; - _v5657C = 0; _electromagnetChangeAmount = 0; _electromagnetZoom = 0; _v565E5 = 0; @@ -412,7 +490,7 @@ void Ringworld2Globals::reset() { _foodCount = 0; _rimLocation = 0; _rimTransportLocation = 0; - _v565AE = 0; + _stripModifier = 0; _spillLocation[0] = 0; _spillLocation[1] = 3; _spillLocation[R2_SEEKER] = 5; @@ -452,7 +530,7 @@ void Ringworld2Globals::reset() { _vampireData[16]._shotsRequired = 1; _vampireData[17]._shotsRequired = 1; - _v566A6 = 3800; + _maze3800SceneNumb = 3800; _landerSuitNumber = 2; _flubMazeArea = 1; _flubMazeEntryDirection = 0; @@ -471,13 +549,11 @@ void Ringworld2Globals::reset() { _v56AA6 = 1; _v56AA7 = 1; _v56AA8 = 1; - _v56AAB = 0; _scene180Mode = -1; _v57709 = 0; _v5780C = 0; _v5780E = 0; _v57810 = 0; - _v57C2C = 0; _s1550PlayerArea[R2_QUINN] = Common::Point(27, 4); _s1550PlayerArea[R2_SEEKER] = Common::Point(27, 4); Common::fill(&_scannerFrequencies[0], &_scannerFrequencies[MAX_CHARACTERS], 1); @@ -513,9 +589,7 @@ void Ringworld2Globals::synchronize(Serializer &s) { _v5589E.synchronize(s); _v558B6.synchronize(s); - s.syncAsSint16LE(_v558C2); s.syncAsSint16LE(_animationCtr); - s.syncAsSint16LE(_v5657C); s.syncAsSint16LE(_electromagnetChangeAmount); s.syncAsSint16LE(_electromagnetZoom); s.syncAsSint16LE(_v565E5); @@ -526,19 +600,17 @@ void Ringworld2Globals::synchronize(Serializer &s) { s.syncAsSint32LE(_rimLocation); s.syncAsSint16LE(_rimTransportLocation); s.syncAsSint16LE(_landerSuitNumber); - s.syncAsSint16LE(_v566A6); + s.syncAsSint16LE(_maze3800SceneNumb); s.syncAsSint16LE(_desertWrongDirCtr); s.syncAsSint16LE(_scene1925CurrLevel); // _v56A9C s.syncAsSint16LE(_walkwaySceneNumber); s.syncAsSint16LE(_ventCellPos.x); s.syncAsSint16LE(_ventCellPos.y); - s.syncAsSint16LE(_v56AAB); s.syncAsSint16LE(_scene180Mode); s.syncAsSint16LE(_v57709); s.syncAsSint16LE(_v5780C); s.syncAsSint16LE(_v5780E); s.syncAsSint16LE(_v57810); - s.syncAsSint16LE(_v57C2C); s.syncAsByte(_s1550PlayerArea[R2_QUINN].x); s.syncAsByte(_s1550PlayerArea[R2_SEEKER].x); @@ -548,7 +620,7 @@ void Ringworld2Globals::synchronize(Serializer &s) { for (i = 0; i < MAX_CHARACTERS; ++i) s.syncAsByte(_scannerFrequencies[i]); - s.syncAsByte(_v565AE); + s.syncAsByte(_stripModifier); s.syncAsByte(_flubMazeArea); s.syncAsByte(_flubMazeEntryDirection); s.syncAsByte(_desertStepsRemaining); @@ -577,7 +649,7 @@ void Ringworld2Globals::synchronize(Serializer &s) { s.syncAsSint16LE(_balloonPosition.x); s.syncAsSint16LE(_balloonPosition.y); - // Synchronise Flub maze vampire data + // Synchronize Flub maze vampire data for (i = 0; i < 18; ++i) { s.syncAsSint16LE(_vampireData[i]._isAlive); s.syncAsSint16LE(_vampireData[i]._shotsRequired); diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h index ad47f7f620..b9c8076042 100644 --- a/engines/tsage/globals.h +++ b/engines/tsage/globals.h @@ -110,7 +110,7 @@ public: int _interfaceY; ASoundExt _inventorySound; - TsAGE2Globals() { _onSelectItem = NULL; } + TsAGE2Globals(); virtual void reset(); virtual void synchronize(Serializer &s); }; @@ -194,7 +194,6 @@ public: int _safeCombination; int _gateStatus; int _greenDay5TalkCtr; - int _v4CEC4; int _v4CEC8; int _v4CECA; int _v4CECC; @@ -208,19 +207,12 @@ public: int _deathReason; int _driveFromScene; int _driveToScene; - int _v501F8; - int _v501FA; - int _v501FC; - int _v5020C; - int _v50696; uint8 _subFlagBitArr1; uint8 _subFlagBitArr2; int _v50CC2; - int _v50CC4; - int _v50CC6; - int _v50CC8; - int _v51C42; - int _v51C44; + int _scene410Action1Count; + int _scene410TalkCount; + int _scene410HarrisonMovedFl; Bookmark _bookmark; int _mapLocationId; int _clip1Bullets, _clip2Bullets; @@ -259,27 +251,25 @@ public: byte _fadePaletteMap[10][256]; byte _paletteMap[4096]; int _insetUp; - int _frameEdgeColor; // _v421e + int _frameEdgeColor; Rect _v5589E; Rect _v558B6; - int _v558C2; int _animationCtr; int _electromagnetChangeAmount; int _electromagnetZoom; int _v565E5; int _v565E7; int _v565E9; - int _v565EB; + int _v565EB; // CHECKME: IS it a constant? int _foodCount; int _rimLocation; int _rimTransportLocation; - int _v5657C; - byte _v565AE; + byte _stripModifier; byte _spillLocation[14]; VampireData _vampireData[18]; byte _flubMazeArea; byte _flubMazeEntryDirection; - int _v566A6; + int _maze3800SceneNumb; byte _landerSuitNumber; byte _desertStepsRemaining; byte _desertCorrectDirection; @@ -292,17 +282,14 @@ public: byte _v56AA0; byte _scientistConvIndex; Common::Point _ventCellPos; - int _v56AA4; byte _v56AA6; byte _v56AA7; byte _v56AA8; - int _v56AAB; int _scene180Mode; // _v575f7 int _v57709; int _v5780C; int _v5780E; int _v57810; - int _v57C2C; int _speechSubtitles; Common::Point _s1550PlayerArea[3]; // only used for Quinn and Seeker byte _scannerFrequencies[4]; diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 2395cc67ed..32810626e7 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -591,20 +591,24 @@ void GfxSurface::copyFrom(GfxSurface &src, Rect srcBounds, Rect destBounds, Regi Graphics::Surface srcSurface = srcImage.lockSurface(); Graphics::Surface destSurface = lockSurface(); + // Get clipping area + Rect clipRect = !_clipRect.isEmpty() ? _clipRect : + Rect(0, 0, destSurface.w, destSurface.h); + // Adjust bounds to ensure destination will be on-screen int srcX = 0, srcY = 0; - if (destBounds.left < 0) { - srcX = -destBounds.left; - destBounds.left = 0; + if (destBounds.left < clipRect.left) { + srcX = clipRect.left - destBounds.left; + destBounds.left = clipRect.left; } - if (destBounds.top < 0) { - srcY = -destBounds.top; - destBounds.top = 0; + if (destBounds.top < clipRect.top) { + srcY = clipRect.top - destBounds.top; + destBounds.top = clipRect.top; } - if (destBounds.right > destSurface.w) - destBounds.right = destSurface.w; - if (destBounds.bottom > destSurface.h) - destBounds.bottom = destSurface.h; + if (destBounds.right > clipRect.right) + destBounds.right = clipRect.right; + if (destBounds.bottom > clipRect.bottom) + destBounds.bottom = clipRect.bottom; if (destBounds.isValidRect() && !((destBounds.right < 0) || (destBounds.bottom < 0) || (destBounds.left >= destSurface.w) || (destBounds.top >= destSurface.h))) { @@ -706,6 +710,11 @@ GfxElement::GfxElement() { _owner = NULL; _keycode = 0; _flags = 0; + + _fontNumber = 0; + _color1 = 0; + _color2 = 0; + _color3 = 0; } void GfxElement::setDefaults() { @@ -1061,9 +1070,16 @@ bool GfxButton::process(Event &event) { GfxDialog::GfxDialog() { _savedArea = NULL; _defaultButton = NULL; + + // For Return to Ringworld 2, backup palette when showing a dialog + if (g_vm->getGameID() == GType_Ringworld2) + g_system->getPaletteManager()->grabPalette(&_savedPalette[0], 0, 256); } GfxDialog::~GfxDialog() { + if (g_vm->getGameID() == GType_Ringworld2) + g_system->getPaletteManager()->setPalette(&_savedPalette[0], 0, 256); + remove(); } @@ -1363,6 +1379,8 @@ GfxFont::GfxFont() { _bpp = 0; _fontData = NULL; _fillFlag = false; + + _gfxManager = nullptr; } GfxFont::~GfxFont() { diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h index 7239a99a68..497cd76ad6 100644 --- a/engines/tsage/graphics.h +++ b/engines/tsage/graphics.h @@ -88,6 +88,7 @@ private: public: Common::Point _centroid; int _transColor; + Rect _clipRect; public: GfxSurface(); GfxSurface(const GfxSurface &s); @@ -319,6 +320,7 @@ public: GfxElementList _elements; GfxButton *_defaultButton; GfxSurface *_savedArea; + byte _savedPalette[256 * 3]; public: GfxDialog(); virtual ~GfxDialog(); diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp index 0584570ac2..1e9d14cdcf 100644 --- a/engines/tsage/ringworld/ringworld_logic.cpp +++ b/engines/tsage/ringworld/ringworld_logic.cpp @@ -270,6 +270,11 @@ bool DisplayObject::performAction(int action) { SceneArea::SceneArea() { _savedArea = NULL; _pt.x = _pt.y = 0; + + _resNum = 0; + _rlbNum = 0; + _subNum = 0; + _actionId = 0; } SceneArea::~SceneArea() { diff --git a/engines/tsage/ringworld/ringworld_scenes5.cpp b/engines/tsage/ringworld/ringworld_scenes5.cpp index 004ccbbb6d..725370c8a4 100644 --- a/engines/tsage/ringworld/ringworld_scenes5.cpp +++ b/engines/tsage/ringworld/ringworld_scenes5.cpp @@ -34,6 +34,9 @@ namespace Ringworld { * Scene 4000 - Village * *--------------------------------------------------------------------------*/ +Scene4000::Hotspot8::Hotspot8() : SceneObject() { + _ctr = 0; +} void Scene4000::Action1::signal() { // Quinn has the peg. Everybody enter the screen. diff --git a/engines/tsage/ringworld/ringworld_scenes5.h b/engines/tsage/ringworld/ringworld_scenes5.h index c93df2a1d8..2fe26d9712 100644 --- a/engines/tsage/ringworld/ringworld_scenes5.h +++ b/engines/tsage/ringworld/ringworld_scenes5.h @@ -99,6 +99,7 @@ class Scene4000 : public Scene { private: int _ctr; public: + Hotspot8(); virtual void synchronize(Serializer &s) { SceneObject::synchronize(s); s.syncAsUint16LE(_ctr); diff --git a/engines/tsage/ringworld/ringworld_scenes6.cpp b/engines/tsage/ringworld/ringworld_scenes6.cpp index 30a91b57aa..65c1ed39c6 100644 --- a/engines/tsage/ringworld/ringworld_scenes6.cpp +++ b/engines/tsage/ringworld/ringworld_scenes6.cpp @@ -2032,7 +2032,15 @@ void Scene5300::Hotspot8::doAction(int action) { /*--------------------------------------------------------------------------*/ Scene5300::Scene5300() : - _hotspot3(0, CURSOR_LOOK, 5300, 3, CURSOR_USE, 5300, 16, LIST_END) { + _hotspot3(0, CURSOR_LOOK, 5300, 3, CURSOR_USE, 5300, 16, LIST_END) { +} + +void Scene5300::synchronize(Serializer &s) { + Scene::synchronize(s); + if (s.getVersion() < 11) { + int useless = 0; + s.syncAsSint16LE(useless); + } } void Scene5300::postInit(SceneObjectList *OwnerList) { @@ -2119,7 +2127,6 @@ void Scene5300::postInit(SceneObjectList *OwnerList) { setAction(&_sequenceManager, this, 5306, &g_globals->_player, &_hotspot3, NULL); } - _field1B0A = 1; if (RING_INVENTORY._bone._sceneNumber == 5300) { _hotspot5.postInit(); _hotspot5.setVisage(5301); diff --git a/engines/tsage/ringworld/ringworld_scenes6.h b/engines/tsage/ringworld/ringworld_scenes6.h index bf353de415..4c10e4a711 100644 --- a/engines/tsage/ringworld/ringworld_scenes6.h +++ b/engines/tsage/ringworld/ringworld_scenes6.h @@ -318,15 +318,11 @@ public: Hotspot6 _hotspot6; Hotspot7 _hotspot7; Hotspot8 _hotspot8; - int _field1B0A; Scene5300(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); - virtual void synchronize(Serializer &s) { - Scene::synchronize(s); - s.syncAsSint16LE(_field1B0A); - } + virtual void synchronize(Serializer &s); }; } // End of namespace Ringworld diff --git a/engines/tsage/ringworld/ringworld_scenes8.cpp b/engines/tsage/ringworld/ringworld_scenes8.cpp index 9cb85a6930..f9156479e5 100644 --- a/engines/tsage/ringworld/ringworld_scenes8.cpp +++ b/engines/tsage/ringworld/ringworld_scenes8.cpp @@ -30,6 +30,10 @@ namespace TsAGE { namespace Ringworld { +NamedHotspotMult::NamedHotspotMult() : SceneHotspot() { + _useLineNum = _lookLineNum = 0; +} + void NamedHotspotMult::synchronize(Serializer &s) { SceneHotspot::synchronize(s); s.syncAsSint16LE(_useLineNum); @@ -2533,6 +2537,10 @@ Scene7700::Scene7700() { _object5._state = 0; _object6._state = 0; _prof._state = 0; + + _seatCountLeft1 = 0; + _seatCountLeft2 = 0; + _seatCountRight = 0; } void Scene7700::synchronize(Serializer &s) { diff --git a/engines/tsage/ringworld/ringworld_scenes8.h b/engines/tsage/ringworld/ringworld_scenes8.h index b24f220f8c..fa441f87da 100644 --- a/engines/tsage/ringworld/ringworld_scenes8.h +++ b/engines/tsage/ringworld/ringworld_scenes8.h @@ -40,7 +40,7 @@ using namespace TsAGE; class NamedHotspotMult : public SceneHotspot { public: int _useLineNum, _lookLineNum; - NamedHotspotMult() : SceneHotspot() {} + NamedHotspotMult(); virtual Common::String getClassName() { return "NamedHotspotMult"; } virtual void synchronize(Serializer &s); diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.cpp b/engines/tsage/ringworld2/ringworld2_dialogs.cpp index 4ebbdd602d..7c97aa041c 100644 --- a/engines/tsage/ringworld2/ringworld2_dialogs.cpp +++ b/engines/tsage/ringworld2/ringworld2_dialogs.cpp @@ -344,7 +344,7 @@ CharacterDialog::CharacterDialog() { /*--------------------------------------------------------------------------*/ void HelpDialog::show() { - // Set the palette and change the cursor + // change the cursor R2_GLOBALS._events.setCursor(CURSOR_ARROW); // Create the dialog and draw it diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index 8e5537f2d1..e5d8b0702b 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -137,6 +137,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Spaceport return new Scene1550(); case 1575: + // Spaceport - unused ship scene return new Scene1575(); case 1580: // Inside wreck @@ -179,7 +180,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Spill Mountains: Balloon Launch Platform return new Scene2350(); case 2400: - // Spill Mountains: Large empty room + // Spill Mountains: Unused large empty room return new Scene2400(); case 2425: // Spill Mountains: The Hall of Records @@ -203,7 +204,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Spill Mountains: Inside crevasse return new Scene2455(); case 2500: - // Spill Mountains: Large Cave + // Spill Mountains: Large Ledge return new Scene2500(); case 2525: // Spill Mountains: Furnace room @@ -342,6 +343,9 @@ SceneExt::SceneExt(): Scene() { _savedCanWalk = false; _preventSaving = false; + // Reset screen clipping area + R2_GLOBALS._screenSurface._clipRect = Rect(); + // WORKAROUND: In the original, playing animations don't reset the global _animationCtr // counter as scene changes unless the playing animation explicitly finishes. For now, // to make inter-scene debugging easier, I'm explicitly resetting the _animationCtr @@ -1204,25 +1208,25 @@ void Ringworld2Game::processEvent(Event &event) { case Common::KEYCODE_F4: // F4 - Restart restartGame(); - g_globals->_events.setCursorFromFlag(); + R2_GLOBALS._events.setCursorFromFlag(); break; case Common::KEYCODE_F7: // F7 - Restore restoreGame(); - g_globals->_events.setCursorFromFlag(); + R2_GLOBALS._events.setCursorFromFlag(); break; case Common::KEYCODE_F8: // F8 - Credits - warning("TODO: Show Credits"); + R2_GLOBALS._sceneManager.changeScene(205); break; case Common::KEYCODE_F10: // F10 - Pause GfxDialog::setPalette(); MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING); - g_globals->_events.setCursorFromFlag(); + R2_GLOBALS._events.setCursorFromFlag(); break; default: @@ -1352,6 +1356,7 @@ SceneArea::SceneArea(): SceneItem() { _insideArea = false; _savedCursorNum = CURSOR_NONE; _cursorState = 0; + _cursorNum = CURSOR_NONE; } void SceneArea::synchronize(Serializer &s) { @@ -1404,6 +1409,8 @@ void SceneArea::setDetails(const Rect &bounds, CursorType cursor) { SceneExit::SceneExit(): SceneArea() { _moving = false; _destPos = Common::Point(-1, -1); + + _sceneNumber = 0; } void SceneExit::synchronize(Serializer &s) { @@ -1721,6 +1728,12 @@ void AnimationSlice::load(Common::File &f) { AnimationSlices::AnimationSlices() { _pixelData = NULL; + + _dataSize = 0; + _dataSize2 = 0; + _slices->_sliceOffset = 0; + _slices->_drawMode = 0; + _slices->_secondaryIndex = 0; } AnimationSlices::~AnimationSlices() { @@ -1786,6 +1799,18 @@ AnimationPlayer::AnimationPlayer(): EventHandler() { _sliceHeight = 1; _field58 = 1; _endAction = NULL; + + _sliceCurrent = nullptr; + _sliceNext = nullptr; + _field38 = 0; + _objectMode = ANIMOBJMODE_1; + _dataNeeded = 0; + _playbackTick = 0; + _playbackTickPrior = 0; + _position = 0; + _nextSlicesPosition = 0; + _frameDelay = 0; + _gameFrame = 0; } AnimationPlayer::~AnimationPlayer() { @@ -2025,7 +2050,7 @@ void AnimationPlayer::drawFrame(int sliceIndex) { // Unlock the screen surface R2_GLOBALS._screenSurface.unlockSurface(); - if (_objectMode == 42) { + if (_objectMode == ANIMOBJMODE_42) { _screenBounds.expandPanes(); // Copy the drawn frame to the back surface @@ -2094,7 +2119,7 @@ void AnimationPlayer::close() { // Close the resource file _resourceFile.close(); - if (_objectMode != 42) { + if (_objectMode != ANIMOBJMODE_42) { // flip screen in original } @@ -2205,7 +2230,7 @@ void ModalWindow::process(Event &event) { } } -void ModalWindow::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) { +void ModalWindow::setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY) { Scene1200 *scene = (Scene1200 *)R2_GLOBALS._sceneManager._scene; _object1.postInit(); @@ -2218,7 +2243,7 @@ void ModalWindow::proc12(int visage, int stripFrameNum, int frameNum, int posX, _insetCount = R2_GLOBALS._insetUp; } -void ModalWindow::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { +void ModalWindow::setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { _object1.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL); } @@ -2477,15 +2502,15 @@ void ScannerDialog::remove() { ModalWindow::remove(); } -void ScannerDialog::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) { +void ScannerDialog::setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY) { // Stop player moving if currently doing so if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); R2_GLOBALS._events.setCursor(CURSOR_USE); - ModalWindow::proc12(visage, stripFrameNum, frameNum, posX, posY); + ModalWindow::setup2(visage, stripFrameNum, frameNum, posX, posY); - proc13(100, -1, -1, -1); + setup3(100, -1, -1, -1); _talkButton.setup(1); _scanButton.setup(2); _slider.setup(R2_GLOBALS._scannerFrequencies[R2_GLOBALS._player._characterIndex], 142, 124, 35, 5); diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h index 5c8af8d884..ff5bfc0b6f 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.h +++ b/engines/tsage/ringworld2/ringworld2_logic.h @@ -461,8 +461,8 @@ public: virtual void synchronize(Serializer &s); virtual Common::String getClassName() { return "ModalWindow"; } virtual void process(Event &event); - virtual void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY); - virtual void proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum); + virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); + virtual void setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum); }; class ScannerDialog: public ModalWindow { @@ -515,7 +515,7 @@ public: virtual Common::String getClassName() { return "ScannerDialog"; } virtual void remove(); - void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY); + virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); }; } // End of namespace Ringworld2 diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp index 5e4b4e4191..aabcd261c7 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp @@ -116,7 +116,7 @@ bool Scene100::Table::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); if (_strip == 2) { scene->_sceneMode = 108; - scene->_object3.postInit(); + scene->_tableLocker.postInit(); scene->_stasisNegator.postInit(); if (R2_INVENTORY.getObjectScene(R2_NEGATOR_GUN) == 1) { @@ -126,11 +126,13 @@ bool Scene100::Table::startAction(CursorType action, Event &event) { scene->_stasisNegator.setDetails(100, 21, 22, 23, 2, (SceneItem *)NULL); } - scene->setAction(&scene->_sequenceManager2, scene, 108, this, &scene->_object3, + // Open table locker + scene->setAction(&scene->_sequenceManager2, scene, 108, this, &scene->_tableLocker, &scene->_stasisNegator, &R2_GLOBALS._player, NULL); } else { scene->_sceneMode = 109; - scene->setAction(&scene->_sequenceManager2, scene, 109, this, &scene->_object3, + // Close table locker + scene->setAction(&scene->_sequenceManager2, scene, 109, this, &scene->_tableLocker, &scene->_stasisNegator, &R2_GLOBALS._player, NULL); } return true; @@ -140,7 +142,7 @@ bool Scene100::Table::startAction(CursorType action, Event &event) { if (_strip == 2) { SceneItem::display2(100, 18); scene->_sceneMode = 102; - scene->_object3.postInit(); + scene->_tableLocker.postInit(); scene->_stasisNegator.postInit(); if (R2_INVENTORY.getObjectScene(R2_NEGATOR_GUN) == 1) { @@ -150,12 +152,12 @@ bool Scene100::Table::startAction(CursorType action, Event &event) { scene->_stasisNegator.setDetails(100, 21, 22, 23, 2, (SceneItem *)NULL); } - scene->setAction(&scene->_sequenceManager2, scene, 102, this, &scene->_object3, + scene->setAction(&scene->_sequenceManager2, scene, 102, this, &scene->_tableLocker, &scene->_stasisNegator, NULL); } else { SceneItem::display2(100, 19); scene->_sceneMode = 103; - scene->setAction(&scene->_sequenceManager2, scene, 103, this, &scene->_object3, + scene->setAction(&scene->_sequenceManager2, scene, 103, this, &scene->_tableLocker, &scene->_stasisNegator, NULL); } return true; @@ -295,10 +297,10 @@ void Scene100::postInit(SceneObjectList *OwnerList) { switch (R2_GLOBALS._sceneManager._previousScene) { case 50: case 180: - _object5.postInit(); - _object4.postInit(); + _wardrobeColorAnim.postInit(); + _wardrobeTopAnim.postInit(); _sceneMode = 104; - setAction(&_sequenceManager1, this, 104, &R2_GLOBALS._player, &_wardrobe, &_object4, &_object5, NULL); + setAction(&_sequenceManager1, this, 104, &R2_GLOBALS._player, &_wardrobe, &_wardrobeTopAnim, &_wardrobeColorAnim, NULL); break; case 125: _sceneMode = 100; @@ -331,14 +333,14 @@ void Scene100::signal() { _table.setStrip(2); _table.setFrame(3); - _object3.remove(); + _tableLocker.remove(); _stasisNegator.remove(); R2_GLOBALS._player.enableControl(); break; case 104: _sceneMode = 0; - _object5.remove(); - _object4.remove(); + _wardrobeColorAnim.remove(); + _wardrobeTopAnim.remove(); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); R2_GLOBALS._player._numFrames = 10; @@ -387,7 +389,7 @@ void Scene100::dispatch() { SceneExt::dispatch(); if ((_sceneMode == 101) && (_door._frame == 2) && (_table._strip == 5)) { - _table.setAction(&_sequenceManager2, NULL, 103, &_table, &_object3, &_stasisNegator, NULL); + _table.setAction(&_sequenceManager2, NULL, 103, &_table, &_tableLocker, &_stasisNegator, NULL); } } @@ -414,9 +416,9 @@ Scene125::Icon::Icon(): SceneActor() { void Scene125::Icon::postInit(SceneObjectList *OwnerList) { SceneObject::postInit(); - _object1.postInit(); - _object1.fixPriority(255); - _object1.hide(); + _glyph.postInit(); + _glyph.fixPriority(255); + _glyph.hide(); _sceneText1._color1 = 92; _sceneText1._color2 = 0; @@ -459,15 +461,15 @@ void Scene125::Icon::process(Event &event) { scene->_sound1.play(14); setFrame(2); - switch (_object1._strip) { + switch (_glyph._strip) { case 1: - _object1.setStrip(2); + _glyph.setStrip(2); break; case 3: - _object1.setStrip(4); + _glyph.setStrip(4); break; case 5: - _object1.setStrip(6); + _glyph.setStrip(6); break; default: break; @@ -486,15 +488,15 @@ void Scene125::Icon::process(Event &event) { if ((event.eventType == EVENT_BUTTON_UP) && _pressed) { setFrame(1); - switch (_object1._strip) { + switch (_glyph._strip) { case 2: - _object1.setStrip(1); + _glyph.setStrip(1); break; case 4: - _object1.setStrip(3); + _glyph.setStrip(3); break; case 6: - _object1.setStrip(5); + _glyph.setStrip(5); break; default: break; @@ -518,8 +520,8 @@ void Scene125::Icon::setIcon(int id) { if (_lookLineNum) { showIcon(); - _object1.setup(161, ((id - 1) / 10) * 2 + 1, ((id - 1) % 10) + 1); - _object1.setPosition(_position); + _glyph.setup(161, ((id - 1) / 10) * 2 + 1, ((id - 1) % 10) + 1); + _glyph.setPosition(_position); _sceneText1._fontNumber = scene->_iconFontNumber; _sceneText1.setup(CONSOLE125_MESSAGES[id]); @@ -562,16 +564,16 @@ void Scene125::Icon::setIcon(int id) { void Scene125::Icon::showIcon() { _sceneText1.show(); _sceneText2.show(); - _object1.show(); - _object2.show(); + _glyph.show(); + _horizLine.show(); show(); } void Scene125::Icon::hideIcon() { _sceneText1.hide(); _sceneText2.hide(); - _object1.hide(); - _object2.hide(); + _glyph.hide(); + _horizLine.hide(); hide(); } @@ -666,28 +668,28 @@ void Scene125::signal() { case 2: _icon1.setup(160, 1, 1); _icon1.setPosition(Common::Point(65, 17)); - _icon1._object2.postInit(); - _icon1._object2.setup(160, 7, 1); - _icon1._object2.setPosition(Common::Point(106, 41)); + _icon1._horizLine.postInit(); + _icon1._horizLine.setup(160, 7, 1); + _icon1._horizLine.setPosition(Common::Point(106, 41)); _icon2.setup(160, 1, 1); _icon2.setPosition(Common::Point(80, 32)); - _icon2._object2.postInit(); - _icon2._object2.setup(160, 7, 2); - _icon2._object2.setPosition(Common::Point(106, 56)); + _icon2._horizLine.postInit(); + _icon2._horizLine.setup(160, 7, 2); + _icon2._horizLine.setPosition(Common::Point(106, 56)); _icon3.setup(160, 1, 1); _icon3.setPosition(Common::Point(65, 47)); - _icon3._object2.postInit(); - _icon3._object2.setup(160, 7, 1); - _icon3._object2.setPosition(Common::Point(106, 71)); + _icon3._horizLine.postInit(); + _icon3._horizLine.setup(160, 7, 1); + _icon3._horizLine.setPosition(Common::Point(106, 71)); _icon4.setup(160, 1, 1); _icon4.setPosition(Common::Point(80, 62)); _icon4._sceneRegionId = 5; - _icon4._object2.postInit(); - _icon4._object2.setup(160, 7, 2); - _icon4._object2.setPosition(Common::Point(106, 86)); + _icon4._horizLine.postInit(); + _icon4._horizLine.setup(160, 7, 2); + _icon4._horizLine.setPosition(Common::Point(106, 86)); _icon5.postInit(); _icon5.setup(160, 1, 1); @@ -710,16 +712,19 @@ void Scene125::signal() { case 12: _sceneMode = 129; - _object1.postInit(); - _object2.postInit(); - _object3.postInit(); + _starchart1.postInit(); + _starchart2.postInit(); + _starchart3.postInit(); if (R2_GLOBALS.getFlag(13)) { - _object4.postInit(); - setAction(&_sequenceManager, this, 130, &R2_GLOBALS._player, &_object1, &_object2, - &_object3, &_object4, NULL); + // Show starchart with Ringworld present + _starchart4.postInit(); + setAction(&_sequenceManager, this, 130, &R2_GLOBALS._player, &_starchart1, &_starchart2, + &_starchart3, &_starchart4, NULL); } else { - setAction(&_sequenceManager, this, 129, &R2_GLOBALS._player, &_object1, &_object2, &_object3, NULL); + // Show starchart without Ringworld + setAction(&_sequenceManager, this, 129, &R2_GLOBALS._player, &_starchart1, &_starchart2, + &_starchart3, NULL); } break; case 13: @@ -920,7 +925,7 @@ void Scene125::consoleAction(int id) { _icon4.setPosition(Common::Point(52, 107)); _icon4._sceneRegionId = 9; _icon4.setIcon(25); - _icon4._object2.hide(); + _icon4._horizLine.hide(); _icon6.setIcon(26); _sceneMode = 10; @@ -963,7 +968,7 @@ void Scene125::consoleAction(int id) { _icon4.setPosition(Common::Point(52, 107)); _icon4._sceneRegionId = 9; _icon4.setIcon(25); - _icon4._object2.hide(); + _icon4._horizLine.hide(); _icon6.setIcon(26); _sceneMode = 10; @@ -1047,7 +1052,7 @@ void Scene125::consoleAction(int id) { break; case 24: _icon4.setIcon(25); - _icon4._object2.hide(); + _icon4._horizLine.hide(); if (_consoleMode == 10) { setDetails(127, --_logIndex); @@ -1059,7 +1064,7 @@ void Scene125::consoleAction(int id) { break; case 25: _icon4.setIcon(25); - _icon4._object2.hide(); + _icon4._horizLine.hide(); if (_consoleMode == 10) { setDetails(127, ++_logIndex); @@ -1077,10 +1082,10 @@ void Scene125::consoleAction(int id) { _icon4.hideIcon(); R2_GLOBALS._player.hide(); - _object1.hide(); - _object2.hide(); - _object3.hide(); - _object4.hide(); + _starchart1.hide(); + _starchart2.hide(); + _starchart3.hide(); + _starchart4.hide(); _sceneMode = 11; _palette.loadPalette(160); @@ -1103,7 +1108,7 @@ void Scene125::consoleAction(int id) { _icon4.setPosition(Common::Point(52, 107)); _icon4._sceneRegionId = 9; _icon4.setIcon(25); - _icon4._object2.hide(); + _icon4._horizLine.hide(); _icon6.setIcon(26); _sceneMode = 10; @@ -1425,6 +1430,7 @@ Scene160::Scene160(): SceneExt() { void Scene160::postInit(SceneObjectList *OwnerList) { loadScene(4001); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); R2_GLOBALS._player._uiEnabled = false; @@ -1446,6 +1452,8 @@ void Scene160::synchronize(Serializer &s) { s.syncAsSint16LE(_frameNumber); s.syncAsSint16LE(_yChange); s.syncAsSint16LE(_lineNum); + + _creditsList.synchronize(s); } void Scene160::remove() { @@ -1500,11 +1508,9 @@ void Scene180::Action1::signal() { /*--------------------------------------------------------------------------*/ Scene180::Scene180(): SceneExt() { - _field412 = 0; + _helpEnabled = false; _frameInc = 0; _frameNumber = R2_GLOBALS._events.getFrameNumber(); - _field480 = 1; - _field482 = -1; _fontNumber = R2_GLOBALS.gfxManager()._font._fontNumber; GfxFont font; @@ -1549,9 +1555,7 @@ void Scene180::synchronize(Serializer &s) { SceneExt::synchronize(s); s.syncAsSint16LE(_frameNumber); - s.syncAsSint16LE(_field412); - s.syncAsSint16LE(_field480); - s.syncAsSint16LE(_field482); + s.syncAsSint16LE(_helpEnabled); s.syncAsSint16LE(_frameInc); s.syncAsSint16LE(_fontNumber); s.syncAsSint16LE(_fontHeight); @@ -1566,7 +1570,7 @@ void Scene180::signal() { break; case 1: - _field412 = 1; + _helpEnabled = true; R2_GLOBALS._sceneManager._hasPalette = true; _animationPlayer._paletteMode = ANIMPALMODE_NONE; _animationPlayer._isActive = true; @@ -1604,7 +1608,8 @@ void Scene180::signal() { case 30: case 43: case 47: - _field412 = 0; + _helpEnabled = false; + R2_GLOBALS._screenSurface.fillRect(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); _palette.loadPalette(0); _palette.loadPalette(9998); R2_GLOBALS._scenePalette.addFader(_palette._palette, 256, 8, this); @@ -1617,7 +1622,7 @@ void Scene180::signal() { R2_GLOBALS._scene180Mode = 2; _animationPlayer.load(2); - _field412 = 1; + _helpEnabled = true; R2_GLOBALS._scenePalette.addFader(_animationPlayer._subData._palData, 256, 6, NULL); R2_GLOBALS._sound1.play(2); break; @@ -1654,7 +1659,7 @@ void Scene180::signal() { break; case 11: - _field412 = 1; + _helpEnabled = true; _door.postInit(); _shipDisplay.postInit(); setAction(&_sequenceManager, this, 4000, &_door, &_shipDisplay, NULL); @@ -1701,21 +1706,21 @@ void Scene180::signal() { break; case 27: - _field412 = 0; + _helpEnabled = false; _door.remove(); _shipDisplay.remove(); setSceneDelay(2); break; case 28: - _field412 = 0; + _helpEnabled = false; _palette.loadPalette(0); _palette.loadPalette(9998); R2_GLOBALS._scenePalette.addFader(_palette._palette, 256, 100, this); break; case 29: - _field412 = 1; + _helpEnabled = true; _animationPlayer._paletteMode = ANIMPALMODE_REPLACE_PALETTE; _animationPlayer._isActive = true; _animationPlayer._objectMode = ANIMOBJMODE_42; @@ -1744,7 +1749,7 @@ void Scene180::signal() { break; case 32: - _field412 = 1; + _helpEnabled = true; _teal.postInit(); _teal.setPosition(Common::Point(161, 97)); @@ -1794,7 +1799,7 @@ void Scene180::signal() { break; case 37: - _field412 = 0; + _helpEnabled = false; _dutyOfficer.remove(); _palette.loadPalette(9998); R2_GLOBALS._scenePalette.addFader(_palette._palette, 256, 8, this); @@ -1808,6 +1813,8 @@ void Scene180::signal() { // TODO: Figure out why end action on sounds aren't firing. For now, I'm // simply setting up a scene delay to ensure the signal() method gets // called again after a brief delay + _backSurface.fillRect(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); + R2_GLOBALS._screenSurface.fillRect(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); setSceneDelay(10); R2_GLOBALS._sound2.fadeOut2(NULL); R2_GLOBALS._sound1.fadeOut2(NULL /* this */); @@ -1832,7 +1839,7 @@ void Scene180::signal() { break; case 41: - _field412 = 1; + _helpEnabled = true; _animationPlayer._isActive = true; break; @@ -1852,12 +1859,12 @@ void Scene180::signal() { break; case 45: - _field412 = 1; + _helpEnabled = true; _stripManager.start(28, this); break; case 48: - _field412 = 1; + _helpEnabled = true; _animationPlayer._paletteMode = ANIMPALMODE_NONE; _animationPlayer._isActive = true; _animationPlayer._objectMode = ANIMOBJMODE_1; @@ -1871,13 +1878,21 @@ void Scene180::signal() { case 49: R2_GLOBALS._scene180Mode = 15; R2_GLOBALS._paneRefreshFlag[0] = 3; + + _backSurface.fillRect(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); + R2_GLOBALS._screenSurface.fillRect(Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); + setSceneDelay(1); break; case 50: R2_GLOBALS._scene180Mode = 0; - _field412 = 0; - R2_GLOBALS._sceneManager.changeScene(100); + _helpEnabled = false; + + // WORKAROUND: The original changed to scene 100 here, Quinn's Bedroom, + // but instead we're changing to the previously unused scene 50, which shows + // a closeup of Quinn in the floatation bed first + R2_GLOBALS._sceneManager.changeScene(50); break; } } @@ -1889,11 +1904,10 @@ void Scene180::setSceneDelay(int v) { void Scene180::process(Event &event) { if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { - event.handled = 1; - if (!_field412) { - if (R2_GLOBALS._scenePalette._listeners.size() == 0) { + event.handled = true; + if (_helpEnabled) { + if (R2_GLOBALS._scenePalette._listeners.size() == 0) HelpDialog::show(); - } } } @@ -2340,12 +2354,21 @@ Scene205::Scene205(): SceneExt() { GfxFont font; font.setFontNumber(4); _fontHeight = font.getHeight(); + + for (int i = 0; i < 3; i++) { + _starList1[i] = nullptr; + _starList2[i] = nullptr; + } + + for (int i = 0; i < 4; i++) + _starList3[i] = nullptr; } void Scene205::postInit(SceneObjectList *OwnerList) { loadScene(4000); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); - BF_GLOBALS._interfaceY = 200; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._player._uiEnabled = false; R2_GLOBALS._sound1.play(337); @@ -2360,11 +2383,11 @@ void Scene205::synchronize(Serializer &s) { SceneExt::synchronize(s); for (int idx = 0; idx < 3; ++idx) - SYNC_POINTER(_objList1[idx]); + SYNC_POINTER(_starList1[idx]); for (int idx = 0; idx < 3; ++idx) - SYNC_POINTER(_objList2[idx]); + SYNC_POINTER(_starList2[idx]); for (int idx = 0; idx < 4; ++idx) - SYNC_POINTER(_objList3[idx]); + SYNC_POINTER(_starList3[idx]); s.syncAsSint16LE(_textIndex); s.syncAsSint16LE(_lineNum); @@ -2386,9 +2409,9 @@ void Scene205::process(Event &event) { } void Scene205::dispatch() { - processList(_objList3, 4, Common::Rect(0, 0, 319, 200), 1, 1, 160, 100); - processList(_objList2, 3, Common::Rect(0, 0, 319, 200), 2, 2, 160, 100); - processList(_objList1, 3, Common::Rect(0, 0, 319, 200), 4, 3, 160, 100); + processList(_starList3, 4, Common::Rect(0, 0, 319, 200), 1, 1, 160, 100); + processList(_starList2, 3, Common::Rect(0, 0, 319, 200), 2, 2, 160, 100); + processList(_starList1, 3, Common::Rect(0, 0, 319, 200), 4, 3, 160, 100); Scene::dispatch(); } @@ -2400,10 +2423,10 @@ void Scene205::setup() { Common::Point(140, 149), Common::Point(91, 166), Common::Point(299, 46), Common::Point(314, 10) }; - // Set up the first object list + // Set up the first star list for (int idx = 0; idx < 3; ++idx) { - Object *obj = new Object(); - _objList1[idx] = obj; + Star *obj = new Star(); + _starList1[idx] = obj; obj->postInit(); obj->_flags |= OBJFLAG_CLONED; @@ -2416,10 +2439,10 @@ void Scene205::setup() { obj->fixPriority(12); } - // Setup the second object list + // Setup the second star list for (int idx = 0; idx < 3; ++idx) { - Object *obj = new Object(); - _objList2[idx] = obj; + Star *obj = new Star(); + _starList2[idx] = obj; obj->postInit(); obj->_flags |= OBJFLAG_CLONED; @@ -2432,10 +2455,10 @@ void Scene205::setup() { obj->fixPriority(11); } - // Setup the third object list + // Setup the third star list for (int idx = 0; idx < 4; ++idx) { - Object *obj = new Object(); - _objList3[idx] = obj; + Star *obj = new Star(); + _starList3[idx] = obj; obj->postInit(); obj->_flags |= OBJFLAG_CLONED; @@ -2452,10 +2475,10 @@ void Scene205::setup() { /** * Handles moving a group of stars in the scene background */ -void Scene205::processList(Object **ObjList, int count, const Common::Rect &bounds, +void Scene205::processList(Star **ObjList, int count, const Common::Rect &bounds, int xMultiply, int yMultiply, int xCenter, int yCenter) { for (int idx = 0; idx < count; ++idx) { - Object *obj = ObjList[idx]; + Star *obj = ObjList[idx]; Common::Point pt(obj->_position.x - xCenter, obj->_position.y - yCenter); if ((obj->_position.x <= 319) && (obj->_position.x >= 0) && @@ -2606,11 +2629,11 @@ void Scene250::synchronize(Serializer &s) { void Scene250::postInit(SceneObjectList *OwnerList) { loadScene(250); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); - BF_GLOBALS._interfaceY = 200; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._player.postInit(); - R2_GLOBALS._uiElements._active = false; R2_GLOBALS._player.setVisage(10); R2_GLOBALS._player.hide(); R2_GLOBALS._player.enableControl(); @@ -2888,11 +2911,11 @@ void Scene300::Action4::signal() { Scene300 *scene = (Scene300 *)R2_GLOBALS._sceneManager._scene; if (!R2_GLOBALS._playStream.isPlaying()) { - scene->_object7.setStrip2(R2_GLOBALS._randomSource.getRandomNumber(2)); - scene->_object7.setFrame(1); + scene->_mirandaScreen.setStrip2(R2_GLOBALS._randomSource.getRandomNumber(2)); + scene->_mirandaScreen.setFrame(1); - scene->_object9.setStrip2(3); - scene->_object9.setFrame(1); + scene->_quinnScreen.setStrip2(3); + scene->_quinnScreen.setFrame(1); } setDelay(60 + R2_GLOBALS._randomSource.getRandomNumber(479)); @@ -3223,29 +3246,29 @@ void Scene300::postInit(SceneObjectList *OwnerList) { _rotation->_countdown = 1; if (R2_GLOBALS.getFlag(51) && !R2_GLOBALS.getFlag(25)) { - _object1.postInit(); - _object1.setup(301, 7, 2); - _object1.setPosition(Common::Point(65, 24)); + _atmosphereLeftWindow.postInit(); + _atmosphereLeftWindow.setup(301, 7, 2); + _atmosphereLeftWindow.setPosition(Common::Point(65, 24)); - _object2.postInit(); - _object2.setup(301, 8, 2); - _object2.setPosition(Common::Point(254, 24)); + _atmosphereRightWindow.postInit(); + _atmosphereRightWindow.setup(301, 8, 2); + _atmosphereRightWindow.setPosition(Common::Point(254, 24)); } _doorway.postInit(); _doorway.setVisage(300); _doorway.setPosition(Common::Point(159, 79)); - _object3.postInit(); - _object3.setup(300, 4, 1); - _object3.setPosition(Common::Point(84, 48)); - _object3.animate(ANIM_MODE_2, NULL); - _object3._numFrames = 5; + _leftVerticalBarsAnim.postInit(); + _leftVerticalBarsAnim.setup(300, 4, 1); + _leftVerticalBarsAnim.setPosition(Common::Point(84, 48)); + _leftVerticalBarsAnim.animate(ANIM_MODE_2, NULL); + _leftVerticalBarsAnim._numFrames = 5; - _object4.postInit(); - _object4.setup(300, 5, 1); - _object4.setPosition(Common::Point(236, 48)); - _object4.animate(ANIM_MODE_2, NULL); + _rightVerticalBarsAnim.postInit(); + _rightVerticalBarsAnim.setup(300, 5, 1); + _rightVerticalBarsAnim.setPosition(Common::Point(236, 48)); + _rightVerticalBarsAnim.animate(ANIM_MODE_2, NULL); _protocolDisplay.postInit(); _protocolDisplay.setup(300, 6, 1); @@ -3253,32 +3276,32 @@ void Scene300::postInit(SceneObjectList *OwnerList) { _protocolDisplay.animate(ANIM_MODE_7, 0, NULL); _protocolDisplay._numFrames = 5; - _object6.postInit(); - _object6.setup(300, 7, 1); - _object6.setPosition(Common::Point(214, 37)); - _object6.animate(ANIM_MODE_2, NULL); - _object6._numFrames = 3; - - _object7.postInit(); - _object7.setup(301, 1, 1); - _object7.setPosition(Common::Point(39, 97)); - _object7.fixPriority(124); - _object7.animate(ANIM_MODE_2, NULL); - _object7._numFrames = 5; - _object7.setAction(&_action4); - - _object8.postInit(); - _object8.setup(300, 8, 1); - _object8.setPosition(Common::Point(105, 37)); - _object8.animate(ANIM_MODE_2, NULL); - _object8._numFrames = 5; - - _object9.postInit(); - _object9.setup(301, 6, 1); - _object9.setPosition(Common::Point(274, 116)); - _object9.fixPriority(143); - _object9.animate(ANIM_MODE_2, NULL); - _object9._numFrames = 5; + _rightTextDisplay.postInit(); + _rightTextDisplay.setup(300, 7, 1); + _rightTextDisplay.setPosition(Common::Point(214, 37)); + _rightTextDisplay.animate(ANIM_MODE_2, NULL); + _rightTextDisplay._numFrames = 3; + + _mirandaScreen.postInit(); + _mirandaScreen.setup(301, 1, 1); + _mirandaScreen.setPosition(Common::Point(39, 97)); + _mirandaScreen.fixPriority(124); + _mirandaScreen.animate(ANIM_MODE_2, NULL); + _mirandaScreen._numFrames = 5; + _mirandaScreen.setAction(&_action4); + + _leftTextDisplay.postInit(); + _leftTextDisplay.setup(300, 8, 1); + _leftTextDisplay.setPosition(Common::Point(105, 37)); + _leftTextDisplay.animate(ANIM_MODE_2, NULL); + _leftTextDisplay._numFrames = 5; + + _quinnScreen.postInit(); + _quinnScreen.setup(301, 6, 1); + _quinnScreen.setPosition(Common::Point(274, 116)); + _quinnScreen.fixPriority(143); + _quinnScreen.animate(ANIM_MODE_2, NULL); + _quinnScreen._numFrames = 5; _quinnWorkstation1.setDetails(Rect(243, 148, 315, 167), 300, 30, 31, 32, 1, NULL); _mirandaWorkstation1.setDetails(Rect(4, 128, 69, 167), 300, 33, 31, 35, 1, NULL); @@ -3752,9 +3775,9 @@ Scene325::Icon::Icon(): SceneActor() { void Scene325::Icon::postInit(SceneObjectList *OwnerList) { SceneObject::postInit(); - _object1.postInit(); - _object1.fixPriority(21); - _object1.hide(); + _glyph.postInit(); + _glyph.fixPriority(21); + _glyph.hide(); _sceneText1._color1 = 92; _sceneText1._color2 = 0; @@ -3793,18 +3816,18 @@ void Scene325::Icon::process(Event &event) { scene->_sound1.play(14); setFrame(2); - switch (_object1._strip) { + switch (_glyph._strip) { case 1: - _object1.setStrip(2); + _glyph.setStrip(2); break; case 3: - _object1.setStrip(4); + _glyph.setStrip(4); break; case 5: - _object1.setStrip(6); + _glyph.setStrip(6); break; case 7: - _object1.setStrip(8); + _glyph.setStrip(8); break; default: break; @@ -3823,15 +3846,15 @@ void Scene325::Icon::process(Event &event) { if ((event.eventType == EVENT_BUTTON_UP) && _pressed) { setFrame(1); - switch (_object1._strip) { + switch (_glyph._strip) { case 2: - _object1.setStrip(1); + _glyph.setStrip(1); break; case 4: - _object1.setStrip(3); + _glyph.setStrip(3); break; case 6: - _object1.setStrip(5); + _glyph.setStrip(5); break; default: break; @@ -3855,8 +3878,8 @@ void Scene325::Icon::setIcon(int id) { if (_lookLineNum) { showIcon(); - _object1.setup(325, ((id - 1) / 10) * 2 + 1, ((id - 1) % 10) + 1); - _object1.setPosition(_position); + _glyph.setup(325, ((id - 1) / 10) * 2 + 1, ((id - 1) % 10) + 1); + _glyph.setPosition(_position); _sceneText1._fontNumber = scene->_iconFontNumber; _sceneText1.setup(CONSOLE325_MESSAGES[id]); @@ -3897,26 +3920,26 @@ void Scene325::Icon::setIcon(int id) { void Scene325::Icon::showIcon() { _sceneText1.show(); _sceneText2.show(); - _object1.show(); - _object2.show(); + _glyph.show(); + _horizLine.show(); show(); } void Scene325::Icon::hideIcon() { _sceneText1.hide(); _sceneText2.hide(); - _object1.hide(); - _object2.hide(); + _glyph.hide(); + _horizLine.hide(); hide(); } /*--------------------------------------------------------------------------*/ Scene325::Scene325(): SceneExt() { - _field412 = 7; + _consoleAction = 7; _iconFontNumber = 50; - _field416 = _field418 = 0; - _field41A = _field41C = _field41E = _scannerLocation = 0; + _databasePage = _priorConsoleAction = 0; + _moveCounter = _yChange = _yDirection = _scannerLocation = 0; _soundCount = _soundIndex = 0; for (int idx = 0; idx < 10; ++idx) @@ -3944,13 +3967,13 @@ void Scene325::postInit(SceneObjectList *OwnerList) { void Scene325::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_consoleAction); s.syncAsSint16LE(_iconFontNumber); - s.syncAsSint16LE(_field416); - s.syncAsSint16LE(_field418); - s.syncAsSint16LE(_field41A); - s.syncAsSint16LE(_field41C); - s.syncAsSint16LE(_field41E); + s.syncAsSint16LE(_databasePage); + s.syncAsSint16LE(_priorConsoleAction); + s.syncAsSint16LE(_moveCounter); + s.syncAsSint16LE(_yChange); + s.syncAsSint16LE(_yDirection); s.syncAsSint16LE(_scannerLocation); s.syncAsSint16LE(_soundCount); s.syncAsSint16LE(_soundIndex); @@ -3983,28 +4006,28 @@ void Scene325::signal() { case 1: _icon1.setup(160, 1, 1); _icon1.setPosition(Common::Point(65, 17)); - _icon1._object2.postInit(); - _icon1._object2.setup(160, 7, 1); - _icon1._object2.setPosition(Common::Point(106, 41)); + _icon1._horizLine.postInit(); + _icon1._horizLine.setup(160, 7, 1); + _icon1._horizLine.setPosition(Common::Point(106, 41)); _icon2.setup(160, 1, 1); _icon2.setPosition(Common::Point(80, 32)); - _icon2._object2.postInit(); - _icon2._object2.setup(160, 7, 2); - _icon2._object2.setPosition(Common::Point(106, 56)); + _icon2._horizLine.postInit(); + _icon2._horizLine.setup(160, 7, 2); + _icon2._horizLine.setPosition(Common::Point(106, 56)); _icon3.setup(160, 1, 1); _icon3.setPosition(Common::Point(65, 47)); - _icon3._object2.postInit(); - _icon3._object2.setup(160, 7, 1); - _icon3._object2.setPosition(Common::Point(106, 71)); + _icon3._horizLine.postInit(); + _icon3._horizLine.setup(160, 7, 1); + _icon3._horizLine.setPosition(Common::Point(106, 71)); _icon4.setup(160, 1, 1); _icon4.setPosition(Common::Point(80, 62)); _icon4._sceneRegionId = 5; - _icon4._object2.postInit(); - _icon4._object2.setup(160, 7, 2); - _icon4._object2.setPosition(Common::Point(106, 86)); + _icon4._horizLine.postInit(); + _icon4._horizLine.setup(160, 7, 2); + _icon4._horizLine.setPosition(Common::Point(106, 86)); _icon5.postInit(); _icon5.setup(160, 1, 1); @@ -4023,29 +4046,33 @@ void Scene325::signal() { R2_GLOBALS._player._canWalk = false; break; case 9: - switch (_field412) { + // Fade to black for console sub-section: database, or starchart + switch (_consoleAction) { case 3: + // Starchart _sceneMode = 129; - _object1.postInit(); - _object2.postInit(); - _object3.postInit(); + _starGrid1.postInit(); + _starGrid2.postInit(); + _starGrid3.postInit(); if (R2_GLOBALS.getFlag(13)) { - _object4.postInit(); - setAction(&_sequenceManager1, this, 130, &R2_GLOBALS._player, &_object1, - &_object2, &_object3, &_object4, NULL); + // Show starchart with Ringworld present + _starGrid4.postInit(); + setAction(&_sequenceManager1, this, 130, &R2_GLOBALS._player, &_starGrid1, + &_starGrid2, &_starGrid3, &_starGrid4, NULL); } else { - setAction(&_sequenceManager1, this, 129, &R2_GLOBALS._player, &_object1, - &_object2, &_object3, NULL); + // Show starchart without Ringworld + setAction(&_sequenceManager1, this, 129, &R2_GLOBALS._player, &_starGrid1, + &_starGrid2, &_starGrid3, NULL); } break; case 17: case 18: case 19: case 20: { - int v = 10 - ((21 - _field412) * 2); + int v = 10 - ((21 - _consoleAction) * 2); if (R2_GLOBALS.getFlag(50)) --v; - if (_field418 == 5) + if (_priorConsoleAction == 5) v += 8; if (R2_GLOBALS.getFlag(51) && (v == 2)) R2_GLOBALS.setFlag(57); @@ -4056,70 +4083,70 @@ void Scene325::signal() { } else { _scannerLocation = 864; - _object12.postInit(); - _object12.setup(326, 4, 1); - _object12.setPosition(Common::Point(149, 128)); - _object12.fixPriority(20); - - _scannerTab.postInit(); - _scannerTab.setup(326, 4, 2); - _scannerTab.setPosition(Common::Point(149, 22 + (int)(_scannerLocation * ADJUST_FACTOR))); - _scannerTab.fixPriority(21); - - _object10.postInit(); - _object10.setup(326, 1, 1); - _object10.setPosition(Common::Point(210, 20)); - _object10.fixPriority(10); - - _object1.postInit(); - _object1.setup(326, 1, 1); - _object1.setPosition(Common::Point(210, 32)); - _object1.fixPriority(10); - - _object2.postInit(); - _object2.setup(326, 1, 1); - _object2.setPosition(Common::Point(210, 44)); - _object2.fixPriority(10); - - _object3.postInit(); - _object3.setup(326, 1, 1); - _object3.setPosition(Common::Point(210, 56)); - _object3.fixPriority(10); - - _object4.postInit(); - _object4.setup(326, 1, 1); - _object4.setPosition(Common::Point(210, 68)); - _object4.fixPriority(10); - - _object5.postInit(); - _object5.setup(326, 1, 1); - _object5.setPosition(Common::Point(210, 80)); - _object5.fixPriority(10); - - _object6.postInit(); - _object6.setup(326, 1, 1); - _object6.setPosition(Common::Point(210, 92)); - _object6.fixPriority(10); - - _object7.postInit(); - _object7.setup(326, 1, 1); - _object7.setPosition(Common::Point(210, 104)); - _object7.fixPriority(10); - - _object8.postInit(); - _object8.setup(326, 1, 1); - _object8.setPosition(Common::Point(210, 116)); - _object8.fixPriority(10); - - _object9.postInit(); - _object9.setup(326, 1, 1); - _object9.setPosition(Common::Point(210, 128)); - _object9.fixPriority(10); - - _object11.postInit(); - _object11.setup(326, 1, 1); - _object11.setPosition(Common::Point(210, 150)); - _object11.fixPriority(10); + _starGrid12.postInit(); + _starGrid12.setup(326, 4, 1); + _starGrid12.setPosition(Common::Point(149, 128)); + _starGrid12.fixPriority(20); + + _starGrid13.postInit(); + _starGrid13.setup(326, 4, 2); + _starGrid13.setPosition(Common::Point(149, 22 + (int)(_scannerLocation * ADJUST_FACTOR))); + _starGrid13.fixPriority(21); + + _starGrid10.postInit(); + _starGrid10.setup(326, 1, 1); + _starGrid10.setPosition(Common::Point(210, 20)); + _starGrid10.fixPriority(10); + + _starGrid1.postInit(); + _starGrid1.setup(326, 1, 1); + _starGrid1.setPosition(Common::Point(210, 32)); + _starGrid1.fixPriority(10); + + _starGrid2.postInit(); + _starGrid2.setup(326, 1, 1); + _starGrid2.setPosition(Common::Point(210, 44)); + _starGrid2.fixPriority(10); + + _starGrid3.postInit(); + _starGrid3.setup(326, 1, 1); + _starGrid3.setPosition(Common::Point(210, 56)); + _starGrid3.fixPriority(10); + + _starGrid4.postInit(); + _starGrid4.setup(326, 1, 1); + _starGrid4.setPosition(Common::Point(210, 68)); + _starGrid4.fixPriority(10); + + _starGrid5.postInit(); + _starGrid5.setup(326, 1, 1); + _starGrid5.setPosition(Common::Point(210, 80)); + _starGrid5.fixPriority(10); + + _starGrid6.postInit(); + _starGrid6.setup(326, 1, 1); + _starGrid6.setPosition(Common::Point(210, 92)); + _starGrid6.fixPriority(10); + + _starGrid7.postInit(); + _starGrid7.setup(326, 1, 1); + _starGrid7.setPosition(Common::Point(210, 104)); + _starGrid7.fixPriority(10); + + _starGrid8.postInit(); + _starGrid8.setup(326, 1, 1); + _starGrid8.setPosition(Common::Point(210, 116)); + _starGrid8.fixPriority(10); + + _starGrid9.postInit(); + _starGrid9.setup(326, 1, 1); + _starGrid9.setPosition(Common::Point(210, 128)); + _starGrid9.fixPriority(10); + + _starGrid11.postInit(); + _starGrid11.setup(326, 1, 1); + _starGrid11.setPosition(Common::Point(210, 150)); + _starGrid11.fixPriority(10); } } else if (R2_GLOBALS.getFlag(51)) { setMessage(329, (v == 12) ? 10 : v); @@ -4131,41 +4158,42 @@ void Scene325::signal() { case 21: _sceneMode = 129; - _object1.postInit(); - _object1.setup(327, 1, 1); - _object1.setPosition(Common::Point(170, 80)); - _object1.fixPriority(10); - _object1.animate(ANIM_MODE_5, NULL); + _starGrid1.postInit(); + _starGrid1.setup(327, 1, 1); + _starGrid1.setPosition(Common::Point(170, 80)); + _starGrid1.fixPriority(10); + _starGrid1.animate(ANIM_MODE_5, NULL); break; case 22: _sceneMode = 129; - _object1.postInit(); - _object1.setup(327, 2, 1); - _object1.setPosition(Common::Point(160, 80)); - _object1.fixPriority(10); - _object1.animate(ANIM_MODE_5, NULL); + _starGrid1.postInit(); + _starGrid1.setup(327, 2, 1); + _starGrid1.setPosition(Common::Point(160, 80)); + _starGrid1.fixPriority(10); + _starGrid1.animate(ANIM_MODE_5, NULL); break; case 24: R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - _field416 = 37; - setMessage(128, _field416); + _databasePage = 37; + setMessage(128, _databasePage); break; case 25: R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - _field416 = 68; - setMessage(128, _field416); + _databasePage = 68; + setMessage(128, _databasePage); break; case 26: R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - _field416 = 105; - setMessage(128, _field416); + _databasePage = 105; + setMessage(128, _databasePage); break; default: - _field416 = 0; + _databasePage = 0; + setMessage(128, _databasePage); break; } @@ -4176,7 +4204,7 @@ void Scene325::signal() { R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - if ((_field412 >= 17) && (_field412 <= 20)) { + if ((_consoleAction >= 17) && (_consoleAction <= 20)) { _icon5.setIcon(8); consoleAction(4); } else { @@ -4227,7 +4255,7 @@ void Scene325::consoleAction(int id) { if (id == 7) _icon5.setIcon(9); - else if ((_field412 != 3) && ((_field412 < 17) || (_field412 > 26))) + else if ((_consoleAction != 3) && ((_consoleAction < 17) || (_consoleAction > 26))) _icon5.setIcon(8); switch (id - 1) { @@ -4236,10 +4264,12 @@ void Scene325::consoleAction(int id) { _icon2.setIcon(11); break; case 1: + // Database screen _icon1.setIcon(23); _icon2.setIcon(24); _icon3.setIcon(25); _icon4.setIcon(26); + break; case 2: case 16: case 17: @@ -4253,13 +4283,13 @@ void Scene325::consoleAction(int id) { _icon2.hideIcon(); _icon3.hideIcon(); - if (id == 2 || (id == 19 && _field418 == 5 && R2_GLOBALS.getFlag(50) && + if (id == 2 || (id == 19 && _priorConsoleAction == 5 && R2_GLOBALS.getFlag(50) && R2_GLOBALS.getFlag(44) && !R2_GLOBALS.getFlag(51))) { _icon5.setIcon(13); _icon4.setPosition(Common::Point(52, 107)); _icon4._sceneRegionId = 9; _icon4.setIcon(14); - _icon4._object2.hide(); + _icon4._horizLine.hide(); } else { _icon4.hideIcon(); @@ -4269,16 +4299,17 @@ void Scene325::consoleAction(int id) { _icon6.setIcon(12); _sceneMode = 10; _palette.loadPalette(161); - BF_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); + R2_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); break; case 22: case 23: case 24: case 25: + // Database sub-sections: A-G, N-O, P-S, T-Z R2_GLOBALS._player.disableControl(); consoleAction(2); - _field412 = id; + _consoleAction = id; _icon1.hideIcon(); _icon2.hideIcon(); _icon3.hideIcon(); @@ -4288,12 +4319,12 @@ void Scene325::consoleAction(int id) { _icon4.setPosition(Common::Point(52, 107)); _icon4._sceneRegionId = 9; _icon4.setIcon(14); - _icon4._object2.hide(); + _icon4._horizLine.hide(); _icon6.setIcon(12); _sceneMode = 10; _palette.loadPalette(161); - BF_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); + R2_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); break; case 11: @@ -4311,24 +4342,25 @@ void Scene325::consoleAction(int id) { _icon4._sceneRegionId = 5; _icon4.hideIcon(); - _object12.remove(); - _scannerTab.remove(); - _object10.remove(); - _object1.remove(); - _object2.remove(); - _object3.remove(); - _object4.remove(); - _object5.remove(); - _object6.remove(); - _object7.remove(); - _object8.remove(); - _object9.remove(); - _object11.remove(); + R2_GLOBALS._player.hide(); + _starGrid1.remove(); + _starGrid2.remove(); + _starGrid3.remove(); + _starGrid4.remove(); + _starGrid5.remove(); + _starGrid6.remove(); + _starGrid7.remove(); + _starGrid8.remove(); + _starGrid9.remove(); + _starGrid10.remove(); + _starGrid11.remove(); + _starGrid12.remove(); + _starGrid13.remove(); _palette.loadPalette(160); _sceneMode = 11; - BF_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); + R2_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); } break; @@ -4339,58 +4371,66 @@ void Scene325::consoleAction(int id) { break; case 4: case 5: - _field418 = id; + _priorConsoleAction = id; _icon1.setIcon(17); _icon2.setIcon(18); _icon3.setIcon(19); _icon4.setIcon(20); break; case 7: - consoleAction(((_field412 == 5) || (_field412 == 6) || (_field412 == 15)) ? 4 : 7); + consoleAction(((_consoleAction == 5) || (_consoleAction == 6) || (_consoleAction == 15)) ? 4 : 7); break; case 8: R2_GLOBALS._sceneManager.changeScene(300); + break; case 9: case 10: + // Set language: Interworld or Hero's Tongue _iconFontNumber = (id - 1) == 9 ? 50 : 52; _text1.remove(); _icon6.setIcon(7); + consoleAction(1); break; case 12: + // Page up button _icon4.setIcon(14); - _icon4._object2.hide(); + _icon4._horizLine.hide(); - switch (_field412) { + switch (_consoleAction) { case 17: case 18: case 19: case 20: if (_scannerLocation) { R2_GLOBALS._player.disableControl(); - _field41A = 1296; - _field41E = 1; + _moveCounter = 1296; + _yDirection = 1; } break; default: - setMessage(128, --_field416); + setMessage(128, --_databasePage); break; } return; case 13: + // Page down button _icon4.setIcon(14); - _icon4._object2.hide(); + _icon4._horizLine.hide(); - switch (_field412) { + switch (_consoleAction) { case 17: case 18: case 19: case 20: if (_scannerLocation < 1620) { R2_GLOBALS._player.disableControl(); - _field41A = 1296; - _field41E = -1; + _moveCounter = 1296; + _yDirection = -1; } break; + default: + setMessage(128, ++_databasePage); + break; } return; case 14: @@ -4409,6 +4449,7 @@ void Scene325::consoleAction(int id) { break; case 6: default: + // Initial starting screen _icon1.setIcon(1); _icon2.setIcon(2); _icon3.setIcon(3); @@ -4418,7 +4459,7 @@ void Scene325::consoleAction(int id) { } if (id != 8) - _field412 = id; + _consoleAction = id; } void Scene325::process(Event &event) { @@ -4435,48 +4476,48 @@ void Scene325::process(Event &event) { } void Scene325::dispatch() { - if (_field41A) { - switch (_field41A) { + if (_moveCounter) { + switch (_moveCounter) { case 13: - _field41C = 1; + _yChange = 1; break; case 1296: R2_GLOBALS._sound3.play(87); - _field41C = 1; + _yChange = 1; break; case 33: case 1283: - _field41C = 2; + _yChange = 2; break; case 63: case 1263: - _field41C = 3; + _yChange = 3; break; case 103: case 1233: - _field41C = 4; + _yChange = 4; break; case 153: case 1193: - _field41C = 5; + _yChange = 5; break; case 213: case 1143: - _field41C = 6; + _yChange = 6; break; case 283: case 1083: - _field41C = 7; + _yChange = 7; break; case 1013: - _field41C = 8; + _yChange = 8; break; default: break; } - _field41A -= _field41C; - int yp = _field41E * _field41C + _object10._position.y; + _moveCounter -= _yChange; + int yp = _yDirection * _yChange + _starGrid10._position.y; bool flag = false; if (yp >= 30) { @@ -4489,51 +4530,51 @@ void Scene325::dispatch() { ++_scannerLocation; flag = true; } - _scannerTab.setPosition(Common::Point(149, 22 + (int)(_scannerLocation * ADJUST_FACTOR))); + _starGrid13.setPosition(Common::Point(149, 22 + (int)(_scannerLocation * ADJUST_FACTOR))); for (int idx = 0; idx < 4; ++idx) _objList[idx].remove(); if (flag) { int v = _scannerLocation - 758; - _object10.setFrame((v++ <= 0) ? 1 : v); - _object1.setFrame((v++ <= 0) ? 1 : v); - _object2.setFrame((v++ <= 0) ? 1 : v); - _object3.setFrame((v++ <= 0) ? 1 : v); - _object4.setFrame((v++ <= 0) ? 1 : v); - _object5.setFrame((v++ <= 0) ? 1 : v); - _object6.setFrame((v++ <= 0) ? 1 : v); - _object7.setFrame((v++ <= 0) ? 1 : v); - _object8.setFrame((v++ <= 0) ? 1 : v); - _object9.setFrame((v++ <= 0) ? 1 : v); - _object11.setFrame((v++ <= 0) ? 1 : v); + _starGrid10.setFrame((v++ <= 0) ? 1 : v); + _starGrid1.setFrame((v++ <= 0) ? 1 : v); + _starGrid2.setFrame((v++ <= 0) ? 1 : v); + _starGrid3.setFrame((v++ <= 0) ? 1 : v); + _starGrid4.setFrame((v++ <= 0) ? 1 : v); + _starGrid5.setFrame((v++ <= 0) ? 1 : v); + _starGrid6.setFrame((v++ <= 0) ? 1 : v); + _starGrid7.setFrame((v++ <= 0) ? 1 : v); + _starGrid8.setFrame((v++ <= 0) ? 1 : v); + _starGrid9.setFrame((v++ <= 0) ? 1 : v); + _starGrid11.setFrame((v++ <= 0) ? 1 : v); } - _object10.setPosition(Common::Point(210, yp)); + _starGrid10.setPosition(Common::Point(210, yp)); yp += 12; - _object1.setPosition(Common::Point(210, yp)); + _starGrid1.setPosition(Common::Point(210, yp)); yp += 12; - _object2.setPosition(Common::Point(210, yp)); + _starGrid2.setPosition(Common::Point(210, yp)); yp += 12; - _object3.setPosition(Common::Point(210, yp)); + _starGrid3.setPosition(Common::Point(210, yp)); yp += 12; - _object4.setPosition(Common::Point(210, yp)); + _starGrid4.setPosition(Common::Point(210, yp)); yp += 12; - _object5.setPosition(Common::Point(210, yp)); + _starGrid5.setPosition(Common::Point(210, yp)); yp += 12; - _object6.setPosition(Common::Point(210, yp)); + _starGrid6.setPosition(Common::Point(210, yp)); yp += 12; - _object7.setPosition(Common::Point(210, yp)); + _starGrid7.setPosition(Common::Point(210, yp)); yp += 12; - _object8.setPosition(Common::Point(210, yp)); + _starGrid8.setPosition(Common::Point(210, yp)); yp += 12; - _object9.setPosition(Common::Point(210, yp)); + _starGrid9.setPosition(Common::Point(210, yp)); yp += 12; - _object11.setPosition(Common::Point(210, yp)); + _starGrid11.setPosition(Common::Point(210, yp)); - if (!_field41A) { + if (!_moveCounter) { R2_GLOBALS._sound3.stop(); - _field41C = 0; + _yChange = 0; if (_scannerLocation == 756) { R2_GLOBALS._player.disableControl(); @@ -4551,9 +4592,11 @@ void Scene325::dispatch() { } void Scene325::setMessage(int resNum, int lineNum) { - Common::String msg = g_resourceManager->getMessage(resNum, lineNum); + removeText(); + Common::String msg = g_resourceManager->getMessage(resNum, lineNum, true); if (!msg.empty()) { + // Found valid database entry to display Common::String msgText = parseMessage(msg); _text1._fontNumber = _iconFontNumber; @@ -4571,7 +4614,9 @@ void Scene325::setMessage(int resNum, int lineNum) { R2_GLOBALS._playStream.play(_soundQueue[_soundIndex++], this); } } else { - _field412 = 13; + // No message for given database index, so we must have passed beyond + // the start or end of the database + _consoleAction = 13; R2_GLOBALS._player.disableControl(); R2_GLOBALS._player.hide(); @@ -4581,7 +4626,7 @@ void Scene325::setMessage(int resNum, int lineNum) { _palette.loadPalette(160); _sceneMode = 11; - BF_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); + R2_GLOBALS._scenePalette.addFader(&_palette._palette[0], 256, 5, this); } } @@ -4603,6 +4648,7 @@ Common::String Scene325::parseMessage(const Common::String &msg) { return Common::String(msgP); } + /*-------------------------------------------------------------------------- * Scene 400 - Science Lab * @@ -5122,7 +5168,7 @@ void Scene500::PanelDialog::setDetails(int visage, int strip, int frameNumber, } void Scene500::PanelDialog::remove() { - Scene500 *scene = (Scene500 *)BF_GLOBALS._sceneManager._scene; + Scene500 *scene = (Scene500 *)R2_GLOBALS._sceneManager._scene; scene->_sceneAreas.remove(&_button1); scene->_sceneAreas.remove(&_button2); scene->_sceneAreas.remove(&_button3); @@ -5167,7 +5213,7 @@ void Scene500::PanelDialog::Button::setupButton(int buttonId) { break; } - Scene500 *scene = (Scene500 *)BF_GLOBALS._sceneManager._scene; + Scene500 *scene = (Scene500 *)R2_GLOBALS._sceneManager._scene; scene->_sceneAreas.push_front(this); } @@ -5678,7 +5724,7 @@ bool Scene600::Doorway::startAction(CursorType action, Event &event) { } if ((R2_GLOBALS.getFlag(9)) && (R2_INVENTORY.getObjectScene(R2_COM_SCANNER) == 600)) - SceneItem::display(600, 31, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(600, 31, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); else { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 601; @@ -5696,7 +5742,7 @@ bool Scene600::Laser::startAction(CursorType action, Event &event) { // If laser is destroyed if (R2_GLOBALS.getFlag(6)) { if (R2_GLOBALS.getFlag(8)) { - SceneItem::display(600, 29, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(600, 29, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; } else { R2_GLOBALS._player.disableControl(); @@ -5712,7 +5758,7 @@ bool Scene600::Laser::startAction(CursorType action, Event &event) { break; case R2_AEROSOL: if (R2_GLOBALS.getFlag(5)) { - SceneItem::display(600, 28, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(600, 28, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; } else { R2_GLOBALS._player.disableControl(); @@ -6413,7 +6459,7 @@ void Scene700::signal() { _sceneMode = 2; R2_GLOBALS._player.setStrip(4); if (R2_GLOBALS._player._position.x != 164) { - SceneItem::display(700, 36, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(700, 36, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); R2_GLOBALS._player.enableControl(); } else { R2_GLOBALS._sound2.play(19); @@ -6844,14 +6890,12 @@ void Scene800::signal() { Scene825::Button::Button(): SceneObject() { _buttonId = 0; - _v2 = 0; _buttonDown = false; } void Scene825::Button::synchronize(Serializer &s) { SceneObject::synchronize(s); s.syncAsSint16LE(_buttonId); - s.syncAsSint16LE(_v2); s.syncAsSint16LE(_buttonDown); } @@ -6885,7 +6929,6 @@ bool Scene825::Button::startAction(CursorType action, Event &event) { void Scene825::Button::setButton(int buttonId) { SceneObject::postInit(); - _v2 = buttonId; _buttonDown = 0; _sceneText._color1 = 92; _sceneText._color2 = 0; @@ -6954,11 +6997,11 @@ Scene825::Scene825(): SceneExt() { void Scene825::postInit(SceneObjectList *OwnerList) { loadScene(825); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); - BF_GLOBALS._interfaceY = 200; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._player.postInit(); - R2_GLOBALS._uiElements._active = false; R2_GLOBALS._player._effect = 0; R2_GLOBALS._player.setVisage(10); R2_GLOBALS._player.hide(); @@ -7514,11 +7557,11 @@ bool Scene900::Button::startAction(CursorType action, Event &event) { return true; break; case 8: - SceneItem::display(5, 11, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(5, 11, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; case 9: - SceneItem::display(5, 12, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(5, 12, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; default: @@ -7543,7 +7586,7 @@ bool Scene900::Button::startAction(CursorType action, Event &event) { } } else if (action == CURSOR_LOOK) { SceneItem::display(900, ((_buttonId == 2) && (scene->_controlsScreenNumber == 2)) ? 21 : _buttonId + 11, - SET_WIDTH, 280, SET_X, 160, SET_POS_MODE, 1, SET_Y, 20, SET_EXT_BGCOLOR, 7, -999); + SET_WIDTH, 280, SET_X, 160, SET_POS_MODE, 1, SET_Y, 20, SET_EXT_BGCOLOR, 7, LIST_END); return true; } else { return SceneActor::startAction(action, event); diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.h b/engines/tsage/ringworld2/ringworld2_scenes0.h index fe42f1e33e..2013b041c7 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes0.h +++ b/engines/tsage/ringworld2/ringworld2_scenes0.h @@ -85,7 +85,7 @@ class Scene100: public SceneExt { public: NamedHotspot _background, _duct, _bed, _desk; Terminal _terminal; - SceneActor _bedLights1, _bedLights2, _object3, _object4, _object5; + SceneActor _bedLights1, _bedLights2, _tableLocker, _wardrobeTopAnim, _wardrobeColorAnim; SceneActor _wardrobe; Door _door; Table _table; @@ -111,7 +111,7 @@ class Scene125: public SceneExt { public: int _lookLineNum, _iconId; bool _pressed; - SceneObject _object1, _object2; + SceneObject _glyph, _horizLine; SceneText _sceneText1, _sceneText2; Icon(); @@ -136,7 +136,8 @@ public: ASoundExt _sound1; NamedHotspot _background, _item2, _item3; DiskSlot _diskSlot; - SceneActor _object1, _object2, _object3, _object4, _food, _foodDispenser, _infoDisk; + SceneActor _starchart1, _starchart2, _starchart3, _starchart4; + SceneActor _food, _foodDispenser, _infoDisk; Icon _icon1, _icon2, _icon3, _icon4, _icon5, _icon6; SequenceManager _sequenceManager; SceneText _sceneText; @@ -175,7 +176,6 @@ public: ASound _sound1; Action1 _action1; int _frameNumber, _yChange; - SceneObject _object1, _object2, _object3; int _lineNum; SynchronizedList<SceneText *> _creditsList; public: @@ -210,10 +210,9 @@ public: ASoundExt _sound1; int _frameNumber; - int _field412, _field480; - int _field482, _frameInc; + bool _helpEnabled; + int _frameInc; int _fontNumber, _fontHeight; - int _scene180Mode; public: Scene180(); @@ -263,6 +262,13 @@ public: virtual void signal(); }; +class Star: public SceneObject { +public: + int _x100, _y100; +public: + virtual Common::String getClassName() { return "Scene205_Star"; } +}; + class Scene205: public SceneExt { /* Actions */ class Action1: public Action { @@ -271,26 +277,18 @@ class Scene205: public SceneExt { public: virtual void signal(); }; - - /* Objects */ - class Object: public SceneObject { - public: - int _x100, _y100; - public: - // TODO: Check if this derives from DataManager? and flesh out - }; private: void setup(); - void processList(Object **ObjList, int count, const Common::Rect &bounds, + void processList(Star **ObjList, int count, const Common::Rect &bounds, int xMultiply, int yMultiply, int xCenter, int yCenter); void handleText(); public: AnimationPlayer _animationPlayer; int _fontHeight; SceneText _textList[15]; - Object *_objList1[3]; - Object *_objList2[3]; - Object *_objList3[4]; + Star *_starList1[3]; + Star *_starList2[3]; + Star *_starList3[4]; ASound _sound1; Action1 _action1; int _yp; @@ -402,8 +400,8 @@ public: QuinnWorkstation _quinnWorkstation1, _quinnWorkstation2; SeekerWorkstation _seekerWorkstation; MirandaWorkstation _mirandaWorkstation1, _mirandaWorkstation2; - SceneActor _object1, _object2, _object3, _object4, _protocolDisplay; - SceneActor _object6, _object7, _object8, _object9; + SceneActor _atmosphereLeftWindow, _atmosphereRightWindow, _leftVerticalBarsAnim, _rightVerticalBarsAnim, _protocolDisplay; + SceneActor _rightTextDisplay, _mirandaScreen, _leftTextDisplay, _quinnScreen; SceneActor _teal, _soldier, _object12; Doorway _doorway; Miranda _miranda; @@ -430,7 +428,7 @@ class Scene325: public SceneExt { public: int _lookLineNum, _iconId; bool _pressed; - SceneObject _object1, _object2; + SceneObject _glyph, _horizLine; SceneText _sceneText1, _sceneText2; Icon(); @@ -450,16 +448,17 @@ private: void setMessage(int resNum, int lineNum); Common::String parseMessage(const Common::String &msg); public: - int _field412, _iconFontNumber, _field416, _field418; - int _field41A, _field41C, _field41E, _scannerLocation; + int _consoleAction, _iconFontNumber, _databasePage, _priorConsoleAction; + int _moveCounter, _yChange, _yDirection, _scannerLocation; int _soundCount, _soundIndex; int _soundQueue[10]; SpeakerQuinn _quinnSpeaker; ScenePalette _palette; SceneHotspot _background, _terminal; - SceneObject _object1, _object2, _object3, _object4, _object5; - SceneObject _object6, _object7, _object8, _object9, _object10; - SceneObject _object11, _object12, _scannerTab; + SceneObject _starGrid1, _starGrid2, _starGrid3; // Both starchart & scan grid objects + SceneObject _starGrid4, _starGrid5, _starGrid6, _starGrid7; + SceneObject _starGrid8, _starGrid9, _starGrid10, _starGrid11; + SceneObject _starGrid12, _starGrid13; SceneObject _objList[4]; Icon _icon1, _icon2, _icon3, _icon4, _icon5, _icon6; ASoundExt _sound1; @@ -628,7 +627,6 @@ public: virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); - }; class Scene600 : public SceneExt { @@ -808,7 +806,7 @@ class Scene825: public SceneExt { /* Objects */ class Button: public SceneObject { public: - int _buttonId, _v2; + int _buttonId; bool _buttonDown; SceneText _sceneText; public: diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 0932c70f04..3d99ecd035 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -479,9 +479,9 @@ void Scene1000::dispatch() { void Scene1010::postInit(SceneObjectList *OwnerList) { loadScene(1010); - SceneExt::postInit(); - R2_GLOBALS._interfaceY = 200; R2_GLOBALS._uiElements._active = false; + SceneExt::postInit(); + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; setZoomPercents(100, 1, 160, 100); R2_GLOBALS._player.postInit(); @@ -540,14 +540,14 @@ void Scene1010::signal() { void Scene1020::postInit(SceneObjectList *OwnerList) { loadScene(1020); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); if (R2_GLOBALS._sceneManager._previousScene == 1010) _sceneBounds = Rect(160, 0, SCREEN_WIDTH + 160, 200); - R2_GLOBALS._interfaceY = 200; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._v558B6.set(160, 0, 160, 161); - R2_GLOBALS._uiElements._active = false; R2_GLOBALS._player.postInit(); if (R2_GLOBALS._sceneManager._previousScene == 1010) { @@ -694,13 +694,13 @@ bool Scene1100::Seeker::startAction(CursorType action, Event &event) { } else { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 55; - if (R2_GLOBALS._v565AE >= 3) { + if (R2_GLOBALS._stripModifier >= 3) { if (R2_GLOBALS._player._characterIndex == R2_QUINN) scene->_stripManager.start3(329, scene, R2_GLOBALS._stripManager_lookupList); else scene->_stripManager.start3(330, scene, R2_GLOBALS._stripManager_lookupList); } else { - ++R2_GLOBALS._v565AE; + ++R2_GLOBALS._stripModifier; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); if (R2_GLOBALS._player._characterIndex == R2_QUINN) scene->_stripManager.start3(304, scene, R2_GLOBALS._stripManager_lookupList); @@ -878,7 +878,7 @@ void Scene1100::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._moveDiff = Common::Point(16, 2); _rightLandslide.setup2(1104, 2, 1, 175, 125, 102, 1); - _object2.setup2(1102, 5, 1, 216, 167, 1, 0); + _purplePlant.setup2(1102, 5, 1, 216, 167, 1, 0); _leftImpacts.postInit(); _leftImpacts.setup(1113, 2, 1); @@ -1482,8 +1482,8 @@ void Scene1200::LaserPanel::postInit(SceneObjectList *OwnerList) { scene->_field41A = 1; R2_GLOBALS._events.setCursor(CURSOR_USE); - proc12(1003, 1, 1, 100, 40); - proc13(1200, 11, -1, -1); + setup2(1003, 1, 1, 100, 40); + setup3(1200, 11, -1, -1); R2_GLOBALS._sound2.play(259); _jumper1.init(1); _jumper2.init(2); @@ -1852,10 +1852,10 @@ void Scene1200::process(Event &event) { if (R2_GLOBALS._scientistConvIndex >= 4) R2_GLOBALS._sceneManager.changeScene(3250); else - SceneItem::display(1200, 6, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(1200, 6, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; default: - SceneItem::display(1200, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(1200, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; } event.handled = true; @@ -1868,7 +1868,7 @@ void Scene1200::process(Event &event) { switch (cellPos.x) { case 3: // It was your cell. - SceneItem::display(1200, 8, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 8, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 9: R2_GLOBALS._sceneManager.changeScene(3240); @@ -1878,7 +1878,7 @@ void Scene1200::process(Event &event) { R2_GLOBALS._sceneManager.changeScene(3210); else // A vent grill - SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 17: switch (cellPos.y) { @@ -1893,21 +1893,22 @@ void Scene1200::process(Event &event) { break; default: // A vent grill - SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; } + break; case 33: R2_GLOBALS._sceneManager.changeScene(3245); break; default: - SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; } } if (cellId > 36) { // "An anti-pest laser" event.handled = true; - SceneItem::display(1200, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } break; case CURSOR_TALK: @@ -2242,6 +2243,11 @@ Scene1337::Scene1337() { _field424A = 0; _field424C = 0; _field424E = 0; + + _unkFctPtr412 = nullptr; + _field3EF0 = nullptr; + _field3EF4 = nullptr; + _field3EF8 = nullptr; } void Scene1337::synchronize(Serializer &s) { @@ -4307,12 +4313,12 @@ void Scene1337::postInit(SceneObjectList *OwnerList) { // In the original, may be found in subPostInit. // Without it, enableControl asserts loadScene(1330); + R2_GLOBALS._uiElements._active = false; SceneExt::postInit(); // // Hide the user interface - R2_GLOBALS._uiElements._active = false; - BF_GLOBALS._interfaceY = 200; + BF_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; @@ -4947,7 +4953,7 @@ void Scene1337::subC2C2F() { if (!found) { for (int i = 0; i <= 7; i++) { - if ((_arrunkObj1337[3]._arr2[i]._field34 == 1) && (!subC2687(_arrunkObj1337[3]._arr3[i]._field34))) { + if ((_arrunkObj1337[3]._arr2[i]._field34 == 1) && (!subC2687(_arrunkObj1337[3]._arr3[0]._field34))) { int tmpVal = 0; for (int j = 0; j <= 7; j++) { @@ -6900,49 +6906,49 @@ void Scene1500::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor2.postInit(); - _actor2.setup(1401, 1, 1); - _actor2._effect = 5; - _actor2.fixPriority(10); - _actor2._field9C = _field312; + _starshipShadow.postInit(); + _starshipShadow.setup(1401, 1, 1); + _starshipShadow._effect = 5; + _starshipShadow.fixPriority(10); + _starshipShadow._field9C = _field312; - _actor1.postInit(); - _actor1.setup(1400, 1, 1); - _actor1._moveDiff = Common::Point(1, 1); - _actor1._linkedActor = &_actor2; + _starship.postInit(); + _starship.setup(1400, 1, 1); + _starship._moveDiff = Common::Point(1, 1); + _starship._linkedActor = &_starshipShadow; if (R2_GLOBALS._sceneManager._previousScene != 1010) { - _actor4.postInit(); - _actor4.setup(1401, 2, 1); - _actor4._effect = 5; - _actor4.fixPriority(10); - _actor4._field9C = _field312; + _smallShipShadow.postInit(); + _smallShipShadow.setup(1401, 2, 1); + _smallShipShadow._effect = 5; + _smallShipShadow.fixPriority(10); + _smallShipShadow._field9C = _field312; - _actor3.postInit(); - _actor3._moveRate = 30; - _actor3._moveDiff = Common::Point(1, 1); - _actor3._linkedActor = &_actor4; + _smallShip.postInit(); + _smallShip._moveRate = 30; + _smallShip._moveDiff = Common::Point(1, 1); + _smallShip._linkedActor = &_smallShipShadow; } if (R2_GLOBALS._sceneManager._previousScene == 300) { - _actor1.setPosition(Common::Point(189, 139), 5); + _starship.setPosition(Common::Point(189, 139), 5); - _actor3.setup(1400, 1, 2); - _actor3.setPosition(Common::Point(148, 108), 0); + _smallShip.setup(1400, 1, 2); + _smallShip.setPosition(Common::Point(148, 108), 0); _sceneMode = 20; R2_GLOBALS._sound1.play(110); } else if (R2_GLOBALS._sceneManager._previousScene == 1550) { - _actor1.setPosition(Common::Point(189, 139), 5); + _starship.setPosition(Common::Point(189, 139), 5); - _actor3.setup(1400, 2, 1); - _actor3.changeZoom(-1); - _actor3.setPosition(Common::Point(298, 258), 5); + _smallShip.setup(1400, 2, 1); + _smallShip.changeZoom(-1); + _smallShip.setPosition(Common::Point(298, 258), 5); _sceneMode = 10; R2_GLOBALS._sound1.play(106); } else { - _actor1.setPosition(Common::Point(289, 239), -30); + _starship.setPosition(Common::Point(289, 239), -30); _sceneMode = 0; R2_GLOBALS._sound1.play(102); } @@ -6964,8 +6970,8 @@ void Scene1500::signal() { setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL); // No break on purpose case 1: - if (_actor1._yDiff < 50) { - _actor1.setPosition(Common::Point(289, 239), _actor1._yDiff + 1); + if (_starship._yDiff < 50) { + _starship.setPosition(Common::Point(289, 239), _starship._yDiff + 1); _sceneMode = 1; } setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL); @@ -6973,12 +6979,12 @@ void Scene1500::signal() { case 2: { Common::Point pt(189, 139); NpcMover *mover = new NpcMover(); - _actor1.addMover(mover, &pt, this); + _starship.addMover(mover, &pt, this); } break; case 3: - if (_actor1._yDiff > 5) { - _actor1.setPosition(Common::Point(189, 139), _actor1._yDiff - 1); + if (_starship._yDiff > 5) { + _starship.setPosition(Common::Point(189, 139), _starship._yDiff - 1); _sceneMode = 3; } setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL); @@ -6997,7 +7003,7 @@ void Scene1500::signal() { case 11: { Common::Point pt(148, 108); NpcMover *mover = new NpcMover(); - _actor3.addMover(mover, &pt, this); + _smallShip.addMover(mover, &pt, this); } break; case 12: @@ -7006,13 +7012,13 @@ void Scene1500::signal() { case 21: { Common::Point pt(-2, -42); NpcMover *mover = new NpcMover(); - _actor3.addMover(mover, &pt, NULL); + _smallShip.addMover(mover, &pt, NULL); signal(); } break; case 22: - if (_actor1._yDiff < 50) { - _actor1.setPosition(Common::Point(189, 139), _actor1._yDiff + 1); + if (_starship._yDiff < 50) { + _starship.setPosition(Common::Point(189, 139), _starship._yDiff + 1); _sceneMode = 22; } setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL); @@ -7020,7 +7026,7 @@ void Scene1500::signal() { case 23: { Common::Point pt(-13, -61); NpcMover *mover = new NpcMover(); - _actor1.addMover(mover, &pt, this); + _starship.addMover(mover, &pt, this); } break; case 24: @@ -7033,9 +7039,9 @@ void Scene1500::signal() { void Scene1500::dispatch() { if (_sceneMode > 10) { - float yDiff = sqrt((float) (_actor3._position.x * _actor3._position.x) + (_actor3._position.y * _actor3._position.y)); + float yDiff = sqrt((float) (_smallShip._position.x * _smallShip._position.x) + (_smallShip._position.y * _smallShip._position.y)); if (yDiff > 6) - _actor3.setPosition(_actor3._position, (int) yDiff); + _smallShip.setPosition(_smallShip._position, (int) yDiff); } Scene::dispatch(); @@ -7122,15 +7128,15 @@ void Scene1530::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._moveRate = 30; R2_GLOBALS._player._moveDiff = Common::Point(4, 1); - _actor2.postInit(); - _actor2.setup(1516, 7, 1); - _actor2.setPosition(Common::Point(121, 41)); - _actor2.animate(ANIM_MODE_2, NULL); + _leftReactor.postInit(); + _leftReactor.setup(1516, 7, 1); + _leftReactor.setPosition(Common::Point(121, 41)); + _leftReactor.animate(ANIM_MODE_2, NULL); - _actor3.postInit(); - _actor3.setup(1516, 8, 1); - _actor3.setPosition(Common::Point(107, 116)); - _actor3.animate(ANIM_MODE_2, NULL); + _rightReactor.postInit(); + _rightReactor.setup(1516, 8, 1); + _rightReactor.setPosition(Common::Point(107, 116)); + _rightReactor.animate(ANIM_MODE_2, NULL); R2_GLOBALS._player.disableControl(); Common::Point pt(480, 75); @@ -7140,14 +7146,14 @@ void Scene1530::postInit(SceneObjectList *OwnerList) { _sceneMode = 1; } else { - _actor1.postInit(); - _actor1._effect = 1; + _seeker.postInit(); + _seeker._effect = 1; R2_GLOBALS._player.postInit(); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); R2_GLOBALS._player.disableControl(); - setAction(&_sequenceManager, this, 1530, &R2_GLOBALS._player, &_actor1, NULL); + setAction(&_sequenceManager, this, 1530, &R2_GLOBALS._player, &_seeker, NULL); _sceneMode = 2; } @@ -7180,8 +7186,8 @@ void Scene1530::dispatch() { int16 x = R2_GLOBALS._player._position.x; int16 y = R2_GLOBALS._player._position.y; - _actor2.setPosition(Common::Point(x - 39, y - 85)); - _actor3.setPosition(Common::Point(x - 53, y - 9)); + _leftReactor.setPosition(Common::Point(x - 39, y - 85)); + _rightReactor.setPosition(Common::Point(x - 53, y - 9)); Scene::dispatch(); } @@ -7221,13 +7227,13 @@ bool Scene1550::Junk::startAction(CursorType action, Event &event) { if (_visage == 1561) { switch (_frame) { case 2: - SceneItem::display(1550, 23, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 23, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 3: - SceneItem::display(1550, 26, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 26, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 4: - SceneItem::display(1550, 35, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 35, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; default: break; @@ -7235,13 +7241,13 @@ bool Scene1550::Junk::startAction(CursorType action, Event &event) { } else { switch ((((_strip - 1) * 5) + _frame) % 3) { case 0: - SceneItem::display(1550, 62, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 62, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 1: - SceneItem::display(1550, 53, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 53, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; case 2: - SceneItem::display(1550, 76, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 76, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; default: break; @@ -7285,11 +7291,11 @@ bool Scene1550::ShipComponent::startAction(CursorType action, Event &event) { break; case CURSOR_LOOK: if (_componentId == 8) - SceneItem::display(1550, 75, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 75, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); else if (_frame == 1) - SceneItem::display(1550, 70, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 70, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); else - SceneItem::display(1550, 71, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 71, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; case R2_FUEL_CELL: @@ -7548,8 +7554,8 @@ void Scene1550::UnkArea1550::process(Event &event) { } } -void Scene1550::UnkArea1550::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) { - // UnkArea1200::proc12(); +void Scene1550::UnkArea1550::setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY) { + // UnkArea1200::setup2(); Scene1550 *scene = (Scene1550 *)R2_GLOBALS._sceneManager._scene; _areaActor.postInit(); @@ -7562,7 +7568,7 @@ void Scene1550::UnkArea1550::proc12(int visage, int stripFrameNum, int frameNum, _field20 = R2_GLOBALS._insetUp; // - proc13(1550, 67, -1, -1); + setup3(1550, 67, -1, -1); _unkObj155031.postInit(); _unkObj155031._fieldA4 = 1; if (scene->_actor4._frame == 1) @@ -7585,7 +7591,7 @@ void Scene1550::UnkArea1550::proc12(int visage, int stripFrameNum, int frameNum, _unkObj155032.setDetails(1550, 69, -1, -1, 2, (SceneItem *) NULL); } -void Scene1550::UnkArea1550::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { +void Scene1550::UnkArea1550::setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { // Copy of Scene1200::LaserPanel::proc13 _areaActor.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL); } @@ -7655,7 +7661,7 @@ bool Scene1550::Actor9::startAction(CursorType action, Event &event) { return true; break; case CURSOR_LOOK: - SceneItem::display(1550, 41, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 41, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; default: @@ -7742,7 +7748,7 @@ bool Scene1550::Actor13::startAction(CursorType action, Event &event) { scene->_sceneMode = 1564; scene->setAction(&scene->_sequenceManager1, scene, 1564, &R2_GLOBALS._player, NULL); } else - SceneItem::display(1550, 64, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 64, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; case CURSOR_LOOK: @@ -7750,9 +7756,9 @@ bool Scene1550::Actor13::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); if (R2_INVENTORY.getObjectScene(R2_BATTERY) == 1550) { - SceneItem::display(1550, 74, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 74, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } else - SceneItem::display(1550, 64, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 64, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; default: @@ -7832,7 +7838,7 @@ void Scene1550::postInit(SceneObjectList *OwnerList) { switch (R2_GLOBALS._sceneManager._previousScene) { case 1530: - R2_GLOBALS._v565AE = 0; + R2_GLOBALS._stripModifier = 0; // No break on purpose case 300: // No break on purpose @@ -7904,7 +7910,6 @@ void Scene1550::signal() { // No break on purpose case 7: _field412 = 0; - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); break; case 20: @@ -7915,7 +7920,7 @@ void Scene1550::signal() { // No break on purpose case 1563: R2_GLOBALS.clearFlag(20); - _unkArea1.proc12(1559, 1, 1, 160, 125); + _unkArea1.setup2(1559, 1, 1, 160, 125); R2_GLOBALS._player.enableControl(); _sceneMode = 0; break; @@ -8058,33 +8063,33 @@ void Scene1550::signal() { _sceneMode = 60; R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (R2_GLOBALS._v565AE >= 3) { + if (R2_GLOBALS._stripModifier >= 3) { if (R2_GLOBALS._player._characterIndex == R2_QUINN) _stripManager.start(572, this); else _stripManager.start(573, this); } else { - ++R2_GLOBALS._v565AE; + ++R2_GLOBALS._stripModifier; if (R2_GLOBALS._player._characterIndex == R2_QUINN) - _stripManager.start(499 + R2_GLOBALS._v565AE, this); + _stripManager.start(499 + R2_GLOBALS._stripModifier, this); else - _stripManager.start(502 + R2_GLOBALS._v565AE, this); + _stripManager.start(502 + R2_GLOBALS._stripModifier, this); } } else { _sceneMode = 60; R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); - if (R2_GLOBALS._v565AE >= 4) { + if (R2_GLOBALS._stripModifier >= 4) { if (R2_GLOBALS._player._characterIndex == R2_QUINN) _stripManager.start(572, this); else _stripManager.start(573, this); } else { - ++R2_GLOBALS._v565AE; + ++R2_GLOBALS._stripModifier; if (R2_GLOBALS._player._characterIndex == R2_QUINN) - _stripManager.start(563 + R2_GLOBALS._v565AE, this); + _stripManager.start(563 + R2_GLOBALS._stripModifier, this); else - _stripManager.start(567 + R2_GLOBALS._v565AE, this); + _stripManager.start(567 + R2_GLOBALS._stripModifier, this); } } break; @@ -8116,7 +8121,7 @@ void Scene1550::signal() { case 1558: _actor13.fixPriority(124); _field415 = 1; - _unkArea1.proc12(1559, 1, 1, 160, 125); + _unkArea1.setup2(1559, 1, 1, 160, 125); R2_GLOBALS._player.enableControl(); break; case 1559: @@ -8209,7 +8214,7 @@ void Scene1550::signal() { R2_GLOBALS._player.enableControl(); break; case 1585: - SceneItem::display(1550, 66, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1550, 66, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); R2_GLOBALS._player.enableControl(); break; case 1586: @@ -8262,8 +8267,11 @@ void Scene1550::dispatch() { if ((R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].x == 15) && (R2_GLOBALS._s1550PlayerArea[R2_GLOBALS._player._characterIndex].y == 16)) { R2_GLOBALS._player._shade = 0; - // Original game contains a switch based on an uninitialized variable. - // Until we understand what should really happen there, this code is unused on purpose + + // NOTE: Original game contains a switch based on an uninitialized variable. + // We're leaving this code here, but ifdef'ed out, in case we can ever figure out + // what the original programmers intended the value to come from +#if 0 int missingVariable = 0; switch (missingVariable) { case 144: @@ -8285,6 +8293,7 @@ void Scene1550::dispatch() { default: break; } +#endif } if (_field412 != 0) @@ -9289,178 +9298,207 @@ void Scene1550::enterArea() { } /*-------------------------------------------------------------------------- - * Scene 1575 - + * Scene 1575 - Spaceport - unused ship scene * *--------------------------------------------------------------------------*/ -Scene1575::Scene1575() { - _field412 = 0; - _field414 = 0; - _field416 = 0; - _field418 = 0; - _field41A = 0; +Scene1575::Button::Button() { + _buttonId = 0; + _pressed = false; } -void Scene1575::synchronize(Serializer &s) { - SceneExt::synchronize(s); +void Scene1575::Button::synchronize(Serializer &s) { + NamedHotspot::synchronize(s); - s.syncAsSint16LE(_field412); - s.syncAsSint16LE(_field414); - s.syncAsSint16LE(_field416); - s.syncAsSint16LE(_field418); - s.syncAsSint16LE(_field41A); + s.syncAsSint16LE(_buttonId); + s.syncAsSint16LE(_pressed); } -Scene1575::Hotspot1::Hotspot1() { - _field34 = 0; - _field36 = 0; -} +void Scene1575::Button::process(Event &event) { + Scene1575 *scene = (Scene1575 *)R2_GLOBALS._sceneManager._scene; + bool isInBounds = _bounds.contains(event.mousePos); + CursorType cursor = R2_GLOBALS._events.getCursor(); -void Scene1575::Hotspot1::synchronize(Serializer &s) { - NamedHotspot::synchronize(s); + if ((event.eventType == EVENT_BUTTON_DOWN && cursor == CURSOR_USE && isInBounds) || + (_pressed && _buttonId != 1 && event.eventType == EVENT_BUTTON_UP && isInBounds)) { + // Button pressed + _pressed = true; + Common::Point pos = scene->_actor1._position; + event.handled = true; - s.syncAsSint16LE(_field34); - s.syncAsSint16LE(_field36); -} + if (!R2_GLOBALS.getFlag(18) || _buttonId <= 1 || _buttonId >= 6) { + switch (_buttonId) { + case 1: + if (R2_GLOBALS.getFlag(18)) { + scene->_actor14.hide(); + scene->_actor15.hide(); + R2_GLOBALS.clearFlag(18); + } else if ((scene->_actor12._position.x == 85) && (scene->_actor12._position.y == 123)) { + scene->_actor14.show(); + scene->_actor15.show(); + R2_GLOBALS.setFlag(18); + } else { + SceneItem::display("That's probably not a good thing, ya know!"); + } + break; + case 2: + if (scene->_field41A < 780) { + if (pos.x > 54) + pos.x -= 65; + pos.x += 2; + scene->_field41A += 2; + + for (int i = 0; i < 17; i++) + scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x + 2, scene->_arrActor[i]._position.y)); + + scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x + 2, scene->_actor13._position.y)); + scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x + 2, scene->_actor12._position.y)); + scene->_actor1.setPosition(Common::Point(pos.x, pos.y)); + scene->_actor2.setPosition(Common::Point(pos.x + 65, pos.y)); + scene->_actor3.setPosition(Common::Point(pos.x + 130, pos.y)); + } + break; + case 3: + if (scene->_field41A > 0) { + if (pos.x < -8) + pos.x += 65; + + pos.x -= 2; + scene->_field41A -= 2; + for (int i = 0; i < 17; i++) + scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x - 2, scene->_arrActor[i]._position.y)); + + scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x - 2, scene->_actor13._position.y)); + scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x - 2, scene->_actor12._position.y)); + scene->_actor1.setPosition(Common::Point(pos.x, pos.y)); + scene->_actor2.setPosition(Common::Point(pos.x + 65, pos.y)); + scene->_actor3.setPosition(Common::Point(pos.x + 130, pos.y)); + } + break; + case 4: { + if (pos.y < 176) { + ++pos.y; + for (int i = 0; i < 17; ++i) + scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x, scene->_arrActor[i]._position.y + 1)); + + scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x, scene->_actor13._position.y + 1)); + scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x, scene->_actor12._position.y + 1)); + scene->_actor1.setPosition(Common::Point(pos.x, pos.y)); + scene->_actor2.setPosition(Common::Point(pos.x + 65, pos.y)); + scene->_actor3.setPosition(Common::Point(pos.x + 130, pos.y)); + } + } + break; + case 5: { + if (pos.y > 145) { + --pos.y; + for (int i = 0; i < 17; ++i) + scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x, scene->_arrActor[i]._position.y - 1)); + + scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x, scene->_actor13._position.y - 1)); + scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x, scene->_actor12._position.y - 1)); + scene->_actor1.setPosition(Common::Point(pos.x, pos.y)); + scene->_actor2.setPosition(Common::Point(pos.x + 65, pos.y)); + scene->_actor3.setPosition(Common::Point(pos.x + 130, pos.y)); + } + } + break; + case 6: + R2_GLOBALS._sceneManager.changeScene(1550); + break; + default: + break; + } -void Scene1575::Hotspot1::process(Event &event) { - if ((event.eventType != EVENT_BUTTON_DOWN) || (R2_GLOBALS._events.getCursor() != R2_STEPPING_DISKS) || (!_bounds.contains(event.mousePos))) { - if (_field36 == 0) - return; - if ((_field34 == 1) || (event.eventType == EVENT_BUTTON_UP) || (!_bounds.contains(event.mousePos))) { - _field36 = 0; - return; - } - } - _field36 = 1; - Scene1575 *scene = (Scene1575 *)R2_GLOBALS._sceneManager._scene; + int j = 0; + for (int i = 0; i < 17; i++) { + if (scene->_arrActor[i]._bounds.contains(85, 116)) + j = i; + } - event.handled = true; - if (R2_GLOBALS.getFlag(18) && (_field34 > 1) && (_field34 < 6)) { - warning("sub1A03B(\"Better not move the laser while it\'s firing!\", 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);"); - return; - } - int di = scene->_actor1._position.x; + if (scene->_actor13._bounds.contains(85, 116)) + j = 18; - switch (_field34 - 1) { - case 0: - if (R2_GLOBALS.getFlag(18)) { - scene->_actor14.hide(); - scene->_actor15.hide(); - R2_GLOBALS.clearFlag(18); - } else if ((scene->_actor12._position.x == 85) && (scene->_actor12._position.y == 123)) { - scene->_actor14.show(); - scene->_actor15.show(); - R2_GLOBALS.setFlag(18); + if (scene->_actor12._bounds.contains(85, 116)) + j = 19; + + if (j) + scene->_actor11.show(); + else + scene->_actor11.hide(); } else { - warning("sub1A03B(\"That\'s probably not a good thing, ya know!\", 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999);"); + SceneItem::display("Better not move the laser while it's firing!"); } - break; - case 1: - if (scene->_field41A < 780) { - if (di > 54) - di -= 65; - di += 2; - scene->_field41A += 2; + } else { + _pressed = false; + } +} - for (int i = 0; i < 17; i++) - scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x + 2, scene->_arrActor[i]._position.y)); +bool Scene1575::Button::startAction(CursorType action, Event &event) { + if (action == CURSOR_USE) + return false; + return SceneHotspot::startAction(action, event); +} - scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x + 2, scene->_actor13._position.y)); - scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x + 2, scene->_actor12._position.y)); - scene->_actor1.setPosition(Common::Point(di, scene->_actor1._position.y)); - scene->_actor2.setPosition(Common::Point(di + 65, scene->_actor1._position.y)); - scene->_actor3.setPosition(Common::Point(di + 130, scene->_actor1._position.y)); - } +void Scene1575::Button::initButton(int buttonId) { + _buttonId = buttonId; + _pressed = false; + EventHandler::postInit(); + + switch (_buttonId) { + case 1: + setDetails(Rect(53, 165, 117, 190), -1, -1, -1, 2, 1, NULL); break; case 2: - if (scene->_field41A > 0) { - if (di < -8) - di += 65; - - di -= 2; - scene->_field41A -= 2; - for (int i = 0; i < 17; i++) - scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x - 2, scene->_arrActor[i]._position.y)); - - scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x - 2, scene->_actor13._position.y)); - scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x - 2, scene->_actor12._position.y)); - scene->_actor1.setPosition(Common::Point(di, scene->_actor1._position.y)); - scene->_actor2.setPosition(Common::Point(di + 65, scene->_actor1._position.y)); - scene->_actor3.setPosition(Common::Point(di + 130, scene->_actor1._position.y)); - } + setDetails(Rect(151, 142, 189, 161), -1, -1, -1, 2, 1, NULL); break; - case 3: { - int tmpPosY = scene->_actor1._position.y; - if (tmpPosY < 176) { - ++tmpPosY; - for (int i = 0; i < 17; ++i) - scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x, scene->_arrActor[i]._position.y + 1)); - - scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x, scene->_actor13._position.y + 1)); - scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x, scene->_actor12._position.y + 1)); - scene->_actor1.setPosition(Common::Point(di, scene->_actor1._position.y)); - scene->_actor2.setPosition(Common::Point(di + 65, scene->_actor1._position.y)); - scene->_actor3.setPosition(Common::Point(di + 130, scene->_actor1._position.y)); - } - } + case 3: + setDetails(Rect(225, 142, 263, 161), -1, -1, -1, 2, 1, NULL); break; - case 4: { - int tmpPosY = scene->_actor1._position.y; - if (tmpPosY > 145) { - tmpPosY--; - for (int i = 0; i < 17; ++i) - scene->_arrActor[i].setPosition(Common::Point(scene->_arrActor[i]._position.x, scene->_arrActor[i]._position.y - 1)); - - scene->_actor13.setPosition(Common::Point(scene->_actor13._position.x, scene->_actor13._position.y - 1)); - scene->_actor12.setPosition(Common::Point(scene->_actor12._position.x, scene->_actor12._position.y - 1)); - scene->_actor1.setPosition(Common::Point(di, scene->_actor1._position.y)); - scene->_actor2.setPosition(Common::Point(di + 65, scene->_actor1._position.y)); - scene->_actor3.setPosition(Common::Point(di + 130, scene->_actor1._position.y)); - } - } + case 4: + setDetails(Rect(188, 122, 226, 140), -1, -1, -1, 2, 1, NULL); break; case 5: - R2_GLOBALS._sceneManager.changeScene(1550); + setDetails(Rect(188, 162, 226, 180), -1, -1, -1, 2, 1, NULL); + break; + case 6: + setDetails(Rect(269, 169, 301, 185), -1, -1, -1, 2, 1, NULL); break; default: break; } +} - int j = 0; - for (int i = 0; i < 17; i++) { - if (scene->_arrActor[i]._bounds.contains(85, 116)) - j = i; - } - - if (scene->_actor13._bounds.contains(85, 116)) - j = 18; - - if (scene->_actor12._bounds.contains(85, 116)) - j = 19; +/*--------------------------------------------------------------------------*/ - if (j) - scene->_actor11.show(); - else - scene->_actor11.hide(); +Scene1575::Scene1575() { + _field412 = 0; + _field414 = 390; + _field416 = 0; + _field418 = 0; + _field41A = 0; } -bool Scene1575::Hotspot1::startAction(CursorType action, Event &event) { - if (action == CURSOR_USE) - return false; - return SceneHotspot::startAction(action, event); +void Scene1575::synchronize(Serializer &s) { + SceneExt::synchronize(s); + + s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_field414); + s.syncAsSint16LE(_field416); + s.syncAsSint16LE(_field418); + s.syncAsSint16LE(_field41A); } -void Scene1575::Hotspot1::subA910D(int indx) { - warning("STUB: Scene1575:Hotspot1::subA910D(%d)", indx); +// TODO: Remove this method stub with proper sub-method call +double unk(double v1, double v2) { + return sqrt(v1 * v1 + v2 * v2); } void Scene1575::postInit(SceneObjectList *OwnerList) { loadScene(1575); R2_GLOBALS._uiElements._active = false; - R2_GLOBALS._v5589E = Rect(0, 0, 320, 200); SceneExt::postInit(); - _field414 = 390; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; _actor1.postInit(); _actor1.setup(1575, 1, 1); @@ -9479,8 +9517,17 @@ void Scene1575::postInit(SceneObjectList *OwnerList) { for (int i = 0; i < 17; i++) { _arrActor[i].postInit(); - _arrActor[i].setup(1575, 2, k5A7F6[(3 * i) + 2]); - warning("TODO: immense pile of floating operations"); + _arrActor[i].setup(1575, 2, k5A7F6[3 * i + 2]); + + double v1 = unk(2.0, 3 - k5A7F6[3 * i]); + v1 += unk(2.0, 3 - k5A7F6[3 * i + 1]); + int yp = (int)(sqrt(v1) * 75.0 / 17.0 - 161.0); + + int angle = R2_GLOBALS._gfxManagerInstance.getAngle( + Common::Point(3, 16), Common::Point(k5A7F6[3 * i], k5A7F6[3 * i + 1])); + int xp = angle * 78 / 9 - 319; + + _arrActor[i].setPosition(Common::Point(xp, yp)); _arrActor[i].fixPriority(6); } @@ -9512,12 +9559,13 @@ void Scene1575::postInit(SceneObjectList *OwnerList) { _actor10.setup(1575, 3, 2); _actor10.setPosition(Common::Point(287, 91)); - _item1.subA910D(1); - _item1.subA910D(2); - _item1.subA910D(3); - _item1.subA910D(4); - _item1.subA910D(5); - _item1.subA910D(6); + // Initialise buttons + _button1.initButton(1); + _button2.initButton(2); + _button3.initButton(3); + _button4.initButton(4); + _button5.initButton(5); + _button6.initButton(6); _actor11.postInit(); _actor11.setup(1575, 4, 2); @@ -9545,6 +9593,7 @@ void Scene1575::postInit(SceneObjectList *OwnerList) { _actor13.postInit(); _actor13.setup(1575, 2, 4); + // TODO warning("TODO: another immense pile of floating operations"); _actor12.postInit(); @@ -9684,16 +9733,16 @@ void Scene1580::synchronize(Serializer &s) { s.syncAsSint16LE(_field412); } -bool Scene1580::Hotspot1::startAction(CursorType action, Event &event) { +bool Scene1580::JoystickPlug::startAction(CursorType action, Event &event) { Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; if (action == R2_JOYSTICK) { R2_INVENTORY.setObjectScene(R2_JOYSTICK, 1580); - R2_GLOBALS._sceneItems.remove(&scene->_item1); - scene->_actor2.postInit(); - scene->_actor2.setup(1580, 1, 4); - scene->_actor2.setPosition(Common::Point(159, 163)); - scene->_actor2.setDetails(1550, 78, -1, -1, 2, (SceneItem *) NULL); + R2_GLOBALS._sceneItems.remove(&scene->_joystickPlug); + scene->_joystick.postInit(); + scene->_joystick.setup(1580, 1, 4); + scene->_joystick.setPosition(Common::Point(159, 163)); + scene->_joystick.setDetails(1550, 78, -1, -1, 2, (SceneItem *) NULL); scene->_arrActor[5].remove(); @@ -9703,28 +9752,28 @@ bool Scene1580::Hotspot1::startAction(CursorType action, Event &event) { return SceneHotspot::startAction(action, event); } -bool Scene1580::Hotspot2::startAction(CursorType action, Event &event) { +bool Scene1580::ScreenSlot::startAction(CursorType action, Event &event) { Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; if (action == R2_DIAGNOSTICS_DISPLAY) { R2_INVENTORY.setObjectScene(R2_DIAGNOSTICS_DISPLAY, 1580); R2_GLOBALS._player.disableControl(); - R2_GLOBALS._sceneItems.remove(&scene->_item2); + R2_GLOBALS._sceneItems.remove(&scene->_screenSlot); - scene->_actor3.postInit(); - scene->_actor3.setup(1580, 1, 1); - scene->_actor3.setPosition(Common::Point(124, 108)); - scene->_actor3.fixPriority(10); + scene->_screen.postInit(); + scene->_screen.setup(1580, 1, 1); + scene->_screen.setPosition(Common::Point(124, 108)); + scene->_screen.fixPriority(10); if (R2_INVENTORY.getObjectScene(R2_JOYSTICK) == 1580) - scene->_actor3.setDetails(1550, 14, -1, -1, 5, &scene->_actor2); + scene->_screen.setDetails(1550, 14, -1, -1, 5, &scene->_joystick); else - scene->_actor3.setDetails(1550, 14, -1, -1, 2, (SceneItem *)NULL); + scene->_screen.setDetails(1550, 14, -1, -1, 2, (SceneItem *)NULL); - scene->_actor1.postInit(); - scene->_actor1.setup(1580, 3, 1); - scene->_actor1.setPosition(Common::Point(124, 109)); - scene->_actor1.fixPriority(20); + scene->_screenDisplay.postInit(); + scene->_screenDisplay.setup(1580, 3, 1); + scene->_screenDisplay.setPosition(Common::Point(124, 109)); + scene->_screenDisplay.fixPriority(20); scene->_field412 = 1; scene->_sceneMode = 10; scene->setAction(&scene->_sequenceManager, scene, 1, &R2_GLOBALS._player, NULL); @@ -9735,7 +9784,7 @@ bool Scene1580::Hotspot2::startAction(CursorType action, Event &event) { return SceneHotspot::startAction(action, event); } -bool Scene1580::Actor2::startAction(CursorType action, Event &event) { +bool Scene1580::Joystick::startAction(CursorType action, Event &event) { if ( (action == CURSOR_USE) && (R2_INVENTORY.getObjectScene(R2_DIAGNOSTICS_DISPLAY) == 1580) && (R2_INVENTORY.getObjectScene(R2_FUEL_CELL) == 0) && (R2_INVENTORY.getObjectScene(R2_GUIDANCE_MODULE) == 0) && (R2_INVENTORY.getObjectScene(R2_RADAR_MECHANISM) == 0) && (R2_INVENTORY.getObjectScene(R2_GYROSCOPE) == 0) @@ -9755,13 +9804,13 @@ bool Scene1580::Actor2::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); } -bool Scene1580::Actor3::startAction(CursorType action, Event &event) { +bool Scene1580::Screen::startAction(CursorType action, Event &event) { if ((action == CURSOR_USE) && (R2_INVENTORY.getObjectScene(R2_BROKEN_DISPLAY) == 1580)) { Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; R2_INVENTORY.setObjectScene(R2_BROKEN_DISPLAY, R2_GLOBALS._player._characterIndex); - scene->_item2.setDetails(Rect(69, 29, 177, 108), 1550, 82, -1, -1, 2, NULL); - scene->_actor1.remove(); + scene->_screenSlot.setDetails(Rect(69, 29, 177, 108), 1550, 82, -1, -1, 2, NULL); + scene->_screenDisplay.remove(); remove(); return true; } @@ -9769,21 +9818,21 @@ bool Scene1580::Actor3::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); } -bool Scene1580::Actor4::startAction(CursorType action, Event &event) { +bool Scene1580::StorageCompartment::startAction(CursorType action, Event &event) { if (action != CURSOR_USE) return SceneActor::startAction(action, event); Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); - R2_GLOBALS._sceneItems.remove(&scene->_actor4); + R2_GLOBALS._sceneItems.remove(&scene->_storageCompartment); scene->_sceneMode = 0; animate(ANIM_MODE_5, scene); return true; } -bool Scene1580::Actor5::startAction(CursorType action, Event &event) { +bool Scene1580::HatchButton::startAction(CursorType action, Event &event) { if (action != CURSOR_USE) return SceneActor::startAction(action, event); @@ -9797,7 +9846,7 @@ bool Scene1580::Actor5::startAction(CursorType action, Event &event) { return true; } -bool Scene1580::Actor6::startAction(CursorType action, Event &event) { +bool Scene1580::ThrusterValve::startAction(CursorType action, Event &event) { Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; switch (action) { @@ -9829,7 +9878,7 @@ bool Scene1580::Actor6::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); } -bool Scene1580::Actor7::startAction(CursorType action, Event &event) { +bool Scene1580::Ignitor::startAction(CursorType action, Event &event) { Scene1580 *scene = (Scene1580 *)R2_GLOBALS._sceneManager._scene; switch (action) { @@ -9876,89 +9925,90 @@ void Scene1580::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.disableControl(); if (R2_INVENTORY.getObjectScene(R2_JOYSTICK) == 1580) { - _actor2.postInit(); - _actor2.setup(1580, 1, 4); - _actor2.setPosition(Common::Point(159, 163)); - _actor2.setDetails(1550, 78, -1, -1, 1, (SceneItem *) NULL); + _joystick.postInit(); + _joystick.setup(1580, 1, 4); + _joystick.setPosition(Common::Point(159, 163)); + _joystick.setDetails(1550, 78, -1, -1, 1, (SceneItem *) NULL); } else { - _item1.setDetails(Rect(141, 148, 179, 167), 1550, 79, -1, -1, 1, NULL); + _joystickPlug.setDetails(Rect(141, 148, 179, 167), 1550, 79, -1, -1, 1, NULL); } if (R2_INVENTORY.getObjectScene(R2_BROKEN_DISPLAY) == 1580) { - _actor3.postInit(); - _actor3.setup(1580, 1, 1); - _actor3.setPosition(Common::Point(124, 108)); - _actor3.fixPriority(10); - _actor3.setDetails(1550, 13, -1, -1, 1, (SceneItem *) NULL); - - _actor1.postInit(); - _actor1.setup(1580, 1, 3); - _actor1.setPosition(Common::Point(124, 96)); - _actor1.fixPriority(20); + _screen.postInit(); + _screen.setup(1580, 1, 1); + _screen.setPosition(Common::Point(124, 108)); + _screen.fixPriority(10); + _screen.setDetails(1550, 13, -1, -1, 1, (SceneItem *) NULL); + + _screenDisplay.postInit(); + _screenDisplay.setup(1580, 1, 3); + _screenDisplay.setPosition(Common::Point(124, 96)); + _screenDisplay.fixPriority(20); } else if (R2_INVENTORY.getObjectScene(R2_DIAGNOSTICS_DISPLAY) == 1580) { - _actor3.postInit(); - _actor3.setup(1580, 1, 1); - _actor3.setPosition(Common::Point(124, 108)); - _actor3.fixPriority(10); - _actor3.setDetails(1550, 14, -1, -1, 1, (SceneItem *) NULL); - - _actor1.postInit(); - _actor1.setup(1580, 3, 1); - _actor1.setPosition(Common::Point(124, 109)); - _actor1.fixPriority(20); + _screen.postInit(); + _screen.setup(1580, 1, 1); + _screen.setPosition(Common::Point(124, 108)); + _screen.fixPriority(10); + _screen.setDetails(1550, 14, -1, -1, 1, (SceneItem *) NULL); + + _screenDisplay.postInit(); + _screenDisplay.setup(1580, 3, 1); + _screenDisplay.setPosition(Common::Point(124, 109)); + _screenDisplay.fixPriority(20); + _screenDisplay.setZoom(200); _sceneMode = 10; } else { - _item2.setDetails(Rect(69, 29, 177, 108), 1550, 82, -1, -1, 1, NULL); + _screenSlot.setDetails(Rect(69, 29, 177, 108), 1550, 82, -1, -1, 1, NULL); } - _actor4.postInit(); + _storageCompartment.postInit(); if (R2_GLOBALS.getFlag(58) == 0) { - _actor4.setup(1580, 5, 1); - _actor4.setDetails(1550, 80, -1, -1, 1, (SceneItem *) NULL); + _storageCompartment.setup(1580, 5, 1); + _storageCompartment.setDetails(1550, 80, -1, -1, 1, (SceneItem *) NULL); } else { - _actor4.setup(1580, 5, 6); + _storageCompartment.setup(1580, 5, 6); } - _actor4.setPosition(Common::Point(216, 108)); - _actor4.fixPriority(100); + _storageCompartment.setPosition(Common::Point(216, 108)); + _storageCompartment.fixPriority(100); - _actor5.postInit(); - _actor5.setup(1580, 4, 1); - _actor5.setPosition(Common::Point(291, 147)); - _actor5.fixPriority(100); - _actor5.setDetails(1550, 81, -1, -1, 1, (SceneItem *) NULL); + _hatchButton.postInit(); + _hatchButton.setup(1580, 4, 1); + _hatchButton.setPosition(Common::Point(291, 147)); + _hatchButton.fixPriority(100); + _hatchButton.setDetails(1550, 81, -1, -1, 1, (SceneItem *) NULL); if (R2_INVENTORY.getObjectScene(R2_THRUSTER_VALVE) == 1580) { - _actor6.postInit(); - _actor6.setup(1580, 6, 2); - _actor6.setPosition(Common::Point(222, 108)); - _actor6.fixPriority(50); - _actor6.setDetails(1550, 32, -1, 34, 1, (SceneItem *) NULL); + _thrusterValve.postInit(); + _thrusterValve.setup(1580, 6, 2); + _thrusterValve.setPosition(Common::Point(222, 108)); + _thrusterValve.fixPriority(50); + _thrusterValve.setDetails(1550, 32, -1, 34, 1, (SceneItem *) NULL); } if (R2_INVENTORY.getObjectScene(R2_IGNITOR) == 1580) { - _actor7.postInit(); - _actor7.setup(1580, 6, 1); - _actor7.setPosition(Common::Point(195, 108)); - _actor7.fixPriority(50); - _actor7.setDetails(1550, 38, -1, 34, 1, (SceneItem *) NULL); + _ignitor.postInit(); + _ignitor.setup(1580, 6, 1); + _ignitor.setPosition(Common::Point(195, 108)); + _ignitor.fixPriority(50); + _ignitor.setDetails(1550, 38, -1, 34, 1, (SceneItem *) NULL); } R2_GLOBALS._player.postInit(); R2_GLOBALS._player.hide(); setAction(&_sequenceManager, this, 1, &R2_GLOBALS._player, NULL); - _item3.setDetails(Rect(0, 0, 320, 200), 1550, 50, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 1550, 50, -1, -1, 1, NULL); } void Scene1580::signal() { switch (_sceneMode++) { case 10: - _actor1.animate(ANIM_MODE_5, this); + _screenDisplay.animate(ANIM_MODE_5, this); break; case 11: - _actor1.setup(1580, 1, 2); - _actor1.setPosition(Common::Point(124, 94)); + _screenDisplay.setup(1580, 1, 2); + _screenDisplay.setPosition(Common::Point(124, 94)); if (R2_INVENTORY.getObjectScene(R2_GYROSCOPE) != 0) { _arrActor[0].postInit(); @@ -10037,8 +10087,8 @@ bool Scene1625::Wire::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 1631; - scene->_actor3.postInit(); - scene->setAction(&scene->_sequenceManager, scene, 1631, &scene->_actor3, &scene->_wire, NULL); + scene->_mirandaMouth.postInit(); + scene->setAction(&scene->_sequenceManager, scene, 1631, &scene->_mirandaMouth, &scene->_wire, NULL); return true; } @@ -10069,10 +10119,10 @@ void Scene1625::postInit(SceneObjectList *OwnerList) { _wire.setPosition(Common::Point(206, 133)); _wire.setDetails(1625, 0, -1, -1, 1, (SceneItem *) NULL); - _actor5.postInit(); - _actor5.setup(1625, 8, 1); - _actor5.setPosition(Common::Point(190, 131)); - _actor5.setDetails(1625, 6, -1, 2, 1, (SceneItem *) NULL); + _wristRestraints.postInit(); + _wristRestraints.setup(1625, 8, 1); + _wristRestraints.setPosition(Common::Point(190, 131)); + _wristRestraints.setDetails(1625, 6, -1, 2, 1, (SceneItem *) NULL); if (R2_GLOBALS._player._oldCharacterScene[R2_MIRANDA] == 1625) { if (!R2_GLOBALS.getFlag(83)) { @@ -10084,18 +10134,18 @@ void Scene1625::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; } else { - _actor1.postInit(); - _actor1.fixPriority(10); + _teal.postInit(); + _teal.fixPriority(10); - _actor6.postInit(); + _tealRightArm.postInit(); R2_GLOBALS._player.disableControl(); _sceneMode = 1625; - setAction(&_sequenceManager, this, 1625, &_actor1, &_actor6, NULL); + setAction(&_sequenceManager, this, 1625, &_teal, &_tealRightArm, NULL); } R2_GLOBALS._sound1.play(245); - _item1.setDetails(Rect(0, 0, 320, 200), 1625, 12, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 1625, 12, -1, -1, 1, NULL); R2_GLOBALS._player._oldCharacterScene[R2_MIRANDA] = 1625; R2_GLOBALS._player._characterScene[R2_MIRANDA] = 1625; } @@ -10130,11 +10180,11 @@ void Scene1625::signal() { switch (_stripManager._exitMode) { case 1: _sceneMode = 1627; - setAction(&_sequenceManager, this, 1627, &_actor3, &_glass, NULL); + setAction(&_sequenceManager, this, 1627, &_mirandaMouth, &_glass, NULL); break; case 2: _sceneMode = 1629; - setAction(&_sequenceManager, this, 1629, &_tealHead, &_actor5, NULL); + setAction(&_sequenceManager, this, 1629, &_tealHead, &_wristRestraints, NULL); break; case 4: R2_GLOBALS._player._oldCharacterScene[R2_MIRANDA] = 3150; @@ -10145,7 +10195,7 @@ void Scene1625::signal() { case 5: _sceneMode = 1628; _tealHead.remove(); - setAction(&_sequenceManager, this, 1628, &_actor3, &_glass, NULL); + setAction(&_sequenceManager, this, 1628, &_mirandaMouth, &_glass, NULL); break; case 6: _glass.postInit(); @@ -10159,20 +10209,20 @@ void Scene1625::signal() { break; case 8: _sceneMode = 1635; - setAction(&_sequenceManager, this, 1635, &_actor3, &_actor5, NULL); + setAction(&_sequenceManager, this, 1635, &_mirandaMouth, &_wristRestraints, NULL); break; case 9: _glass.postInit(); _glass.setDetails(1625, -1, -1, -1, 2, (SceneItem *) NULL); _sceneMode = 1634; - setAction(&_sequenceManager, this, 1634, &_actor3, &_actor5, NULL); + setAction(&_sequenceManager, this, 1634, &_mirandaMouth, &_wristRestraints, NULL); break; case 3: // No break on purpose default: _sceneMode = 1630; _tealHead.remove(); - setAction(&_sequenceManager, this, 1630, &_actor1, &_actor6, NULL); + setAction(&_sequenceManager, this, 1630, &_teal, &_tealRightArm, NULL); break; } _field412 = _stripManager._field2E8; @@ -10191,18 +10241,18 @@ void Scene1625::signal() { _tealHead.setPosition(Common::Point(68, 68)); _tealHead.show(); - _actor3.postInit(); - _actor3.setup(1627, 3, 1); - _actor3.setPosition(Common::Point(196, 65)); + _mirandaMouth.postInit(); + _mirandaMouth.setup(1627, 3, 1); + _mirandaMouth.setPosition(Common::Point(196, 65)); _sceneMode = 99; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); _stripManager.start(832, this); break; case 1627: - _actor3.setup(1627, 3, 1); - _actor3.setPosition(Common::Point(196, 65)); - _actor3.show(); + _mirandaMouth.setup(1627, 3, 1); + _mirandaMouth.setPosition(Common::Point(196, 65)); + _mirandaMouth.show(); _sceneMode = 99; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -10214,9 +10264,9 @@ void Scene1625::signal() { _tealHead.setup(1627, 1, 1); _tealHead.setPosition(Common::Point(68, 68)); - _actor3.setup(1627, 3, 1); - _actor3.setPosition(Common::Point(196, 65)); - _actor3.show(); + _mirandaMouth.setup(1627, 3, 1); + _mirandaMouth.setPosition(Common::Point(196, 65)); + _mirandaMouth.show(); _sceneMode = 99; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -10236,21 +10286,21 @@ void Scene1625::signal() { R2_GLOBALS._player._canWalk = true; break; case 1631: - _actor3.setup(1627, 3, 1); - _actor3.setPosition(Common::Point(196, 65)); - _actor3.show(); + _mirandaMouth.setup(1627, 3, 1); + _mirandaMouth.setPosition(Common::Point(196, 65)); + _mirandaMouth.show(); _wire.remove(); - _actor1.postInit(); - _actor1.fixPriority(10); + _teal.postInit(); + _teal.fixPriority(10); - _actor6.postInit(); + _tealRightArm.postInit(); R2_INVENTORY.setObjectScene(R2_SUPERCONDUCTOR_WIRE, 3); _sceneMode = 14; - setAction(&_sequenceManager, this, 1625, &_actor1, &_actor6, NULL); + setAction(&_sequenceManager, this, 1625, &_teal, &_tealRightArm, NULL); break; case 1632: _tealHead.setup(1627, 1, 1); @@ -10273,9 +10323,9 @@ void Scene1625::signal() { _stripManager.start(836, this); break; case 1635: - _actor3.setup(1627, 3, 1); - _actor3.setPosition(Common::Point(196, 65)); - _actor3.show(); + _mirandaMouth.setup(1627, 3, 1); + _mirandaMouth.setPosition(Common::Point(196, 65)); + _mirandaMouth.show(); _sceneMode = 99; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); @@ -10732,7 +10782,6 @@ void Scene1700::signal() { _stripManager.start(541, this); break; case 31: - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_TALK); break; case 40: @@ -10915,6 +10964,8 @@ Scene1750::Scene1750() { _field419 = 0; _field41B = 0; _field41D = 0; + + _rotation = nullptr; } void Scene1750::synchronize(Serializer &s) { @@ -11348,7 +11399,7 @@ void Scene1800::postInit(SceneObjectList *OwnerList) { _locationMode = 0; scalePalette(65, 65, 65); - _exit1.setDetails(Rect(0, 160, 319, 168), EXITCURSOR_S, 1800); + _southExit.setDetails(Rect(0, 160, 319, 168), EXITCURSOR_S, 1800); _background.setDetails(Rect(0, 0, 320, 200), -1, -1, -1, -1, 1, NULL); _lever.postInit(); @@ -11468,29 +11519,29 @@ void Scene1800::postInit(SceneObjectList *OwnerList) { } } - _actor1.postInit(); - _actor1.fixPriority(10); + _playerShadow.postInit(); + _playerShadow.fixPriority(10); if (R2_GLOBALS._player._characterIndex == R2_QUINN) - _actor1.setVisage(1111); + _playerShadow.setVisage(1111); else - _actor1.setVisage(1110); + _playerShadow.setVisage(1110); - _actor1._effect = 5; - _actor1._field9C = _field312; + _playerShadow._effect = 5; + _playerShadow._field9C = _field312; - R2_GLOBALS._player._linkedActor = &_actor1; + R2_GLOBALS._player._linkedActor = &_playerShadow; - _actor3.postInit(); - _actor3.fixPriority(10); + _companionShadow.postInit(); + _companionShadow.fixPriority(10); if (R2_GLOBALS._player._characterIndex == R2_QUINN) - _actor3.setVisage(1110); + _companionShadow.setVisage(1110); else - _actor3.setVisage(1111); + _companionShadow.setVisage(1111); - _actor3._effect = 5; - _actor3._field9C = _field312; + _companionShadow._effect = 5; + _companionShadow._field9C = _field312; - _companion._linkedActor = &_actor3; + _companion._linkedActor = &_companionShadow; R2_GLOBALS._player._characterScene[R2_QUINN] = 1800; R2_GLOBALS._player._characterScene[R2_SEEKER] = 1800; @@ -11501,7 +11552,7 @@ void Scene1800::postInit(SceneObjectList *OwnerList) { // Original was calling _item3.setDetails(Rect(1800, 11, 24, 23), 25, -1, -1, -1, 1, NULL); // This is *wrong*. The following statement is a wild guess based on good common sense _item3.setDetails(11, 1800, 23, 24, 25); - _item4.setDetails(Rect(0, 0, 320, 200), 1800, 17, -1, 19, 1, NULL); + _secBackground.setDetails(Rect(0, 0, 320, 200), 1800, 17, -1, 19, 1, NULL); R2_GLOBALS._player.disableControl(); if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 1800) { @@ -11732,9 +11783,9 @@ bool Scene1850::Robot::startAction(CursorType action, Event &event) { break; case CURSOR_LOOK: if (R2_GLOBALS.getFlag(34)) - SceneItem::display(1850, 2, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1850, 2, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); else - SceneItem::display(1850, 1, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1850, 1, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; break; @@ -11799,7 +11850,7 @@ bool Scene1850::Actor6::startAction(CursorType action, Event &event) { Scene1850 *scene = (Scene1850 *)R2_GLOBALS._sceneManager._scene; if (R2_GLOBALS.getFlag(32)) { - SceneItem::display(3240, 4, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(3240, 4, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); return true; } @@ -12788,23 +12839,23 @@ void Scene1900::postInit(SceneObjectList *OwnerList) { _rightDoor.setDetails(1900, 0, 1, -1, 1, (SceneItem *) NULL); if (R2_GLOBALS._sceneManager._previousScene != 1875) { - _object1.postInit(); - _object1.setup(1945, 6, 1); - _object1.setPosition(Common::Point(96, 109)); - _object1.fixPriority(80); + _leftDoorFrame.postInit(); + _leftDoorFrame.setup(1945, 6, 1); + _leftDoorFrame.setPosition(Common::Point(96, 109)); + _leftDoorFrame.fixPriority(80); - _object2.postInit(); - _object2.setup(1945, 6, 2); - _object2.setPosition(Common::Point(223, 109)); - _object2.fixPriority(80); + _rightDoorFrame.postInit(); + _rightDoorFrame.setup(1945, 6, 2); + _rightDoorFrame.setPosition(Common::Point(223, 109)); + _rightDoorFrame.fixPriority(80); } if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 1875) { R2_GLOBALS._player._characterIndex = R2_QUINN; - _actor1.postInit(); + _companion.postInit(); _sceneMode = 20; R2_GLOBALS._player.setAction(&_sequenceManager1, NULL, 1901, &R2_GLOBALS._player, &_leftDoor, NULL); - _actor1.setAction(&_sequenceManager2, this, 1900, &_actor1, &_rightDoor, NULL); + _companion.setAction(&_sequenceManager2, this, 1900, &_companion, &_rightDoor, NULL); } else if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 1925) { if (R2_GLOBALS.getFlag(29)) { R2_GLOBALS.clearFlag(29); @@ -12823,24 +12874,24 @@ void Scene1900::postInit(SceneObjectList *OwnerList) { } if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); - _actor1.setPosition(Common::Point(30, 110)); + _companion.postInit(); + _companion.setPosition(Common::Point(30, 110)); R2_GLOBALS._walkRegions.disableRegion(1); - _actor1.setup(2008, 3, 1); - _actor1.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); + _companion.setup(2008, 3, 1); + _companion.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); } R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] = 1900; } else { if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); - _actor1.setPosition(Common::Point(30, 110)); + _companion.postInit(); + _companion.setPosition(Common::Point(30, 110)); R2_GLOBALS._walkRegions.disableRegion(1); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(20, 3, 1); - _actor1.setDetails(9002, 1, -1, -1, 1, (SceneItem *) NULL); + _companion.setup(20, 3, 1); + _companion.setDetails(9002, 1, -1, -1, 1, (SceneItem *) NULL); } else { - _actor1.setup(2008, 3, 1); - _actor1.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); + _companion.setup(2008, 3, 1); + _companion.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); } } @@ -12903,7 +12954,7 @@ void Scene1900::signal() { break; case 22: _sceneMode = 1910; - _actor1.setAction(&_sequenceManager2, this, 1910, &_actor1, NULL); + _companion.setAction(&_sequenceManager2, this, 1910, &_companion, NULL); break; case 1904: R2_GLOBALS._scene1925CurrLevel = -3; @@ -12934,7 +12985,7 @@ void Scene1900::signal() { *--------------------------------------------------------------------------*/ Scene1925::Scene1925() { - _field9B8 = 0; + _newSceneMode = 0; for (int i = 0; i < 5; i++) _levelResNum[i] = 0; } @@ -12942,7 +12993,7 @@ Scene1925::Scene1925() { void Scene1925::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field9B8); + s.syncAsSint16LE(_newSceneMode); for (int i = 0; i < 5; i++) s.syncAsSint16LE(_levelResNum[i]); } @@ -12964,7 +13015,8 @@ bool Scene1925::Button::startAction(CursorType action, Event &event) { scene->_sceneMode = 1930; R2_GLOBALS._player.disableControl(CURSOR_WALK); - scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, &scene->_actor1, NULL); + scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, + &scene->_door, NULL); return true; } @@ -12978,9 +13030,10 @@ bool Scene1925::Ladder::startAction(CursorType action, Event &event) { scene->_sceneMode = 0; if ((R2_GLOBALS._player._position.x == 110) && (R2_GLOBALS._player._position.y == 100)) { - scene->_exit3._enabled = false; + scene->_westExit._enabled = false; scene->_sceneMode = 1925; - scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, &scene->_actor1, NULL); + scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, + &R2_GLOBALS._player, &scene->_door, NULL); return true; } @@ -13015,10 +13068,11 @@ void Scene1925::ExitUp::changeScene() { scene->_sceneMode = 0; if ((R2_GLOBALS._player._position.x == 110) && (R2_GLOBALS._player._position.y == 100)) { - scene->_exit3._enabled = false; - scene->_field9B8 = 1927; + scene->_westExit._enabled = false; + scene->_newSceneMode = 1927; scene->_sceneMode = 1925; - scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, &scene->_actor1, NULL); + scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, + &R2_GLOBALS._player, &scene->_door, NULL); return; } @@ -13037,7 +13091,7 @@ void Scene1925::ExitUp::changeScene() { } } -void Scene1925::Exit2::changeScene() { +void Scene1925::ExitDown::changeScene() { Scene1925 *scene = (Scene1925 *)R2_GLOBALS._sceneManager._scene; _moving = false; @@ -13045,10 +13099,11 @@ void Scene1925::Exit2::changeScene() { scene->_sceneMode = 0; if ((R2_GLOBALS._player._position.x == 110) && (R2_GLOBALS._player._position.y == 100)) { - scene->_exit3._enabled = false; - scene->_field9B8 = 1926; + scene->_westExit._enabled = false; + scene->_newSceneMode = 1926; scene->_sceneMode = 1925; - scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, &scene->_actor1, NULL); + scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, + &R2_GLOBALS._player, &scene->_door, NULL); return; } @@ -13066,7 +13121,7 @@ void Scene1925::Exit2::changeScene() { scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, NULL); } -void Scene1925::Exit3::changeScene() { +void Scene1925::WestExit::changeScene() { Scene1925 *scene = (Scene1925 *)R2_GLOBALS._sceneManager._scene; _moving = false; @@ -13075,7 +13130,7 @@ void Scene1925::Exit3::changeScene() { scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, NULL); } -void Scene1925::Exit4::changeScene() { +void Scene1925::EastExit::changeScene() { Scene1925 *scene = (Scene1925 *)R2_GLOBALS._sceneManager._scene; _moving = false; @@ -13106,8 +13161,8 @@ void Scene1925::changeLevel(bool upFlag) { case 3: loadScene(_levelResNum[4]); _button.setDetails(Rect(133, 68, 140, 77), 1925, 3, -1, 5, 2, NULL); - _actor1.setDetails(1925, 0, 1, 2, 2, (SceneItem *) NULL); - _actor1.show(); + _door.setDetails(1925, 0, 1, 2, 2, (SceneItem *) NULL); + _door.show(); break; case 512: R2_GLOBALS._scene1925CurrLevel = 508; @@ -13115,8 +13170,8 @@ void Scene1925::changeLevel(bool upFlag) { default: loadScene(_levelResNum[(R2_GLOBALS._scene1925CurrLevel % 4)]); R2_GLOBALS._sceneItems.remove(&_button); - R2_GLOBALS._sceneItems.remove(&_actor1); - _actor1.hide(); + R2_GLOBALS._sceneItems.remove(&_door); + _door.hide(); break; } @@ -13146,32 +13201,33 @@ void Scene1925::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.disableControl(); R2_GLOBALS._player._characterScene[R2_SEEKER] = 1925; R2_GLOBALS._player._characterIndex = R2_SEEKER; + switch (R2_GLOBALS._scene1925CurrLevel) { case -2: - _exit4.setDetails(Rect(203, 44, 247, 111), EXITCURSOR_E, 1925); + _eastExit.setDetails(Rect(203, 44, 247, 111), EXITCURSOR_E, 1925); _ladder.setDetails(Rect(31, 3, 45, 167), 1925, 6, -1, 8, 1, NULL); break; case 3: - _actor1.setDetails(1925, 0, 1, 2, 1, (SceneItem *) NULL); + _door.setDetails(1925, 0, 1, 2, 1, (SceneItem *) NULL); _button.setDetails(Rect(133, 68, 140, 77), 1925, 3, -1, 5, 1, NULL); // No break on purpose case -3: - _exit3.setDetails(Rect(83, 38, 128, 101), EXITCURSOR_W, 1925); + _westExit.setDetails(Rect(83, 38, 128, 101), EXITCURSOR_W, 1925); // No break on purpose default: _exitUp.setDetails(Rect(128, 0, 186, 10), EXITCURSOR_N, 1925); - _exit2.setDetails(Rect(128, 160, 190, 167), EXITCURSOR_S, 1925); + _exitDown.setDetails(Rect(128, 160, 190, 167), EXITCURSOR_S, 1925); _ladder.setDetails(Rect(141, 11, 167, 159), 1925, 6, -1, -1, 1, NULL); break; } - _actor1.postInit(); - _actor1.setup(1925, 5, 1); - _actor1.setPosition(Common::Point(128, 35)); - _actor1.hide(); + _door.postInit(); + _door.setup(1925, 5, 1); + _door.setPosition(Common::Point(128, 35)); + _door.hide(); if (R2_GLOBALS._scene1925CurrLevel == 3) - _actor1.show(); + _door.show(); R2_GLOBALS._player.enableControl(CURSOR_USE); switch (R2_GLOBALS._scene1925CurrLevel) { @@ -13181,7 +13237,7 @@ void Scene1925::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.setPosition(Common::Point(224, 109)); break; case -3: - _actor1.hide(); + _door.hide(); R2_GLOBALS._player.setup(20, 5, 1); R2_GLOBALS._player.setPosition(Common::Point(110, 100)); break; @@ -13196,9 +13252,9 @@ void Scene1925::postInit(SceneObjectList *OwnerList) { } R2_GLOBALS._player._canWalk = false; - _field9B8 = 0; + _newSceneMode = 0; R2_GLOBALS._sceneManager._previousScene = 1925; - _item1.setDetails(Rect(27, 0, 292, 200), 1925, 9, -1, -1, 1, NULL); + _background.setDetails(Rect(27, 0, 292, 200), 1925, 9, -1, -1, 1, NULL); } void Scene1925::remove() { @@ -13234,10 +13290,10 @@ void Scene1925::signal() { changeLevel(true); break; case 1925: - _exit3._enabled = false; - if (_field9B8 != 0) { - _sceneMode = _field9B8; - _field9B8 = 0; + _westExit._enabled = false; + if (_newSceneMode != 0) { + _sceneMode = _newSceneMode; + _newSceneMode = 0; setAction(&_sequenceManager, this, _sceneMode, &R2_GLOBALS._player, NULL); } // No break on purpose @@ -13432,14 +13488,14 @@ void Scene1945::postInit(SceneObjectList *OwnerList) { else _gunpowder.hide(); - _actor1.postInit(); - _actor1.setup(1945, 8, 1); - _actor1.setPosition(Common::Point(253, 169)); - _actor1.fixPriority(130); + _coveringIce.postInit(); + _coveringIce.setup(1945, 8, 1); + _coveringIce.setPosition(Common::Point(253, 169)); + _coveringIce.fixPriority(130); - _actor2.postInit(); - _actor2.setup(1945, 3, 1); - _actor2.hide(); + _alcoholLamp.postInit(); + _alcoholLamp.setup(1945, 3, 1); + _alcoholLamp.hide(); } else { _corridorExit._enabled = true; } @@ -13468,8 +13524,8 @@ void Scene1945::postInit(SceneObjectList *OwnerList) { _nextSceneMode2 = 0; _ice.setDetails(11, 1945, 3, -1, 5); - _item1.setDetails(Rect(238, 144, 274, 167), 1945, 0, -1, 2, 1, NULL); - _item2.setDetails(Rect(27, 3, 292, 167), 1945, 3, -1, -1, 1, NULL); + _hole.setDetails(Rect(238, 144, 274, 167), 1945, 0, -1, 2, 1, NULL); + _ice2.setDetails(Rect(27, 3, 292, 167), 1945, 3, -1, -1, 1, NULL); } void Scene1945::remove() { @@ -13482,7 +13538,7 @@ void Scene1945::signal() { case 1940: if (_nextSceneMode1 == 1943) { _sceneMode = _nextSceneMode1; - setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_actor2, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_alcoholLamp, NULL); } else { _sceneMode = 1946; setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, NULL); @@ -13509,7 +13565,7 @@ void Scene1945::signal() { R2_GLOBALS._sound1.fadeOut2(NULL); R2_INVENTORY.setObjectScene(_lampUsed, 0); _sceneMode = 1948; - setAction(&_sequenceManager1, this, _sceneMode, &_gunpowder, &_actor2, &_actor1, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &_gunpowder, &_alcoholLamp, &_coveringIce, NULL); R2_GLOBALS._player.setAction(&_sequenceManager2, NULL, 1941, &R2_GLOBALS._player, NULL); return; case 1944: @@ -13529,7 +13585,7 @@ void Scene1945::signal() { if (_nextSceneMode1 == 1943) { _sceneMode = _nextSceneMode1; _nextSceneMode1 = 1948; - setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_actor2, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_alcoholLamp, NULL); } else { _sceneMode = 1941; setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, NULL); @@ -13548,7 +13604,7 @@ void Scene1945::signal() { if (_nextSceneMode2 == 1943) { _nextSceneMode1 = _nextSceneMode2; _nextSceneMode2 = 0; - setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_actor2, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, &_alcoholLamp, NULL); } else { _nextSceneMode1 = 0; setAction(&_sequenceManager1, this, _sceneMode, &R2_GLOBALS._player, NULL); @@ -13662,24 +13718,24 @@ void Scene1950::KeypadWindow::remove() { } } -void Scene1950::KeypadWindow::proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY) { +void Scene1950::KeypadWindow::setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY) { Scene1950 *scene = (Scene1950 *)R2_GLOBALS._sceneManager._scene; if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); R2_GLOBALS._player._canWalk = false; - ModalWindow::proc12(visage, stripFrameNum, frameNum, posX, posY); + ModalWindow::setup2(visage, stripFrameNum, frameNum, posX, posY); _object1.fixPriority(248); scene->_eastExit._enabled = false; - proc13(1950, 27, 28, 27); + setup3(1950, 27, 28, 27); for (_buttonIndex = 0; _buttonIndex < 16; _buttonIndex++) _buttons[_buttonIndex].init(_buttonIndex); } -void Scene1950::KeypadWindow::proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { +void Scene1950::KeypadWindow::setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { // Copy of Scene1200::LaserPanel::proc13() _areaActor.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL); } @@ -13777,7 +13833,7 @@ void Scene1950::Vampire::signal() { setStrip(1); NpcMover *mover = new NpcMover(); - addMover(mover, &scene->_field418, scene); + addMover(mover, &scene->_vampireDestPos, scene); } break; case 20: { @@ -13864,14 +13920,14 @@ void Scene1950::Vampire::signal() { else scene->_westExit._enabled = true; - scene->_field416 = 0; + scene->_vampireActive = false; break; case 22: - SceneItem::display(1950, 18, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 18, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); R2_GLOBALS._player.enableControl(CURSOR_WALK); break; case 23: - SceneItem::display(1950, 25, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 25, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); scene->_sceneMode = R2_GLOBALS._flubMazeEntryDirection; scene->setAction(&scene->_sequenceManager, scene, 1960, &R2_GLOBALS._player, NULL); break; @@ -13928,7 +13984,7 @@ void Scene1950::UpExit::changeScene() { R2_GLOBALS._flubMazeEntryDirection = 2; scene->_sceneMode = 12; - if (scene->_field412 == 0) { + if (!scene->_upExitStyle) { if (R2_GLOBALS.getFlag(36)) scene->setAction(&scene->_sequenceManager, scene, 1953, &R2_GLOBALS._player, NULL); else @@ -13949,7 +14005,7 @@ void Scene1950::EastExit::changeScene() { R2_GLOBALS._flubMazeEntryDirection = 3; scene->_sceneMode = 13; - if (scene->_field416 != 0) + if (scene->_vampireActive) R2_GLOBALS._player.animate(ANIM_MODE_9); Common::Point pt(340, 160); @@ -14000,16 +14056,16 @@ void Scene1950::WestExit::changeScene() { R2_GLOBALS._player.addMover(mover, &pt, scene); } else { if (!R2_GLOBALS.getFlag(36)) - SceneItem::display(1950, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); if ((R2_INVENTORY.getObjectScene(R2_SAPPHIRE_BLUE) == 1950) || (R2_INVENTORY.getObjectScene(R2_ANCIENT_SCROLLS) == 1950)) - SceneItem::display(1950, 34, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 34, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); scene->_sceneMode = 0; Common::Point pt(30, 160); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, scene); } } else { - if (scene->_field416 != 0) + if (scene->_vampireActive) R2_GLOBALS._player.animate(ANIM_MODE_9); scene->_sceneMode = 16; @@ -14039,7 +14095,7 @@ void Scene1950::DoorExit::changeScene() { scene->_sceneMode = 1975; scene->setAction(&scene->_sequenceManager, scene, 1975, &R2_GLOBALS._player, NULL); } else { - SceneItem::display(1950, 22, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 22, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); R2_GLOBALS._flubMazeEntryDirection = 0; scene->_sceneMode = 0; Common::Point pt(250, 150); @@ -14052,21 +14108,21 @@ void Scene1950::DoorExit::changeScene() { /*--------------------------------------------------------------------------*/ Scene1950::Scene1950() { - _field412 = 0; - _field414 = 0; - _field416 = 0; - _field418 = Common::Point(0, 0); + _upExitStyle = false; + _removeFlag = false; + _vampireActive = false; + _vampireDestPos = Common::Point(0, 0); _vampireIndex = 0; } void Scene1950::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); - s.syncAsSint16LE(_field414); - s.syncAsSint16LE(_field416); - s.syncAsSint16LE(_field418.x); - s.syncAsSint16LE(_field418.y); + s.syncAsSint16LE(_upExitStyle); + s.syncAsSint16LE(_removeFlag); + s.syncAsSint16LE(_vampireActive); + s.syncAsSint16LE(_vampireDestPos.x); + s.syncAsSint16LE(_vampireDestPos.y); s.syncAsSint16LE(_vampireIndex); } @@ -14095,7 +14151,7 @@ void Scene1950::initArea() { _westExit._moving = false; _shaftExit._moving = false; _doorExit._moving = false; - _field412 = 0; + _upExitStyle = false; switch (R2_GLOBALS._flubMazeArea - 1) { case 0: @@ -14322,7 +14378,7 @@ void Scene1950::initArea() { // No break on purpose case 67: loadScene(1985); - _field412 = 1; + _upExitStyle = true; break; default: break; @@ -14769,7 +14825,7 @@ void Scene1950::enterArea() { _door.remove(); _scrolls.remove(); - _field416 = 0; + _vampireActive = false; _vampireIndex = 0; // Certain areas have a vampire in them @@ -14855,7 +14911,7 @@ void Scene1950::enterArea() { _vampire.setPosition(Common::Point(160, 130)); _vampire.animate(ANIM_MODE_2, NULL); _vampire.setDetails(1950, 12, -1, 14, 2, (SceneItem *) NULL); - _field416 = 1; + _vampireActive = true; } } if ((R2_GLOBALS._flubMazeArea == 1) && (R2_INVENTORY.getObjectScene(R2_SCRITH_KEY) != 0)) { @@ -14885,13 +14941,13 @@ void Scene1950::enterArea() { _cube.setPosition(Common::Point(193, 158)); _cube.setDetails(1950, 3, 4, 5, 2, (SceneItem *) NULL); - _actor7.postInit(); - _actor7.setVisage(1970); - _actor7.setStrip(3); - _actor7.animate(ANIM_MODE_2, NULL); - _actor7._numFrames = 6; - _actor7.setPosition(Common::Point(194, 158)); - _actor7.fixPriority(159); + _pulsingLights.postInit(); + _pulsingLights.setVisage(1970); + _pulsingLights.setStrip(3); + _pulsingLights.animate(ANIM_MODE_2, NULL); + _pulsingLights._numFrames = 6; + _pulsingLights.setPosition(Common::Point(194, 158)); + _pulsingLights.fixPriority(159); _keypad.setDetails(Rect(188, 124, 199, 133), 1950, 27, 28, -1, 2, NULL); @@ -14931,12 +14987,12 @@ void Scene1950::enterArea() { else _scrolls.setFrame(1); - _field414 = 1; - } else if (_field414 != 0) { + _removeFlag = true; + } else if (_removeFlag) { _cube.remove(); _containmentField.remove(); _gem.remove(); - _actor7.remove(); + _pulsingLights.remove(); _scrolls.remove(); R2_GLOBALS._sceneItems.remove(&_background); @@ -14947,7 +15003,6 @@ void Scene1950::enterArea() { case 0: _sceneMode = 1950; if (R2_INVENTORY.getObjectScene(R2_SCRITH_KEY) == 0) { - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); } else { setAction(&_sequenceManager, this, 1950, &R2_GLOBALS._player, NULL); @@ -14970,7 +15025,7 @@ void Scene1950::enterArea() { break; case 3: // Entering from the left - if (_field416 == 0) { + if (!_vampireActive) { _sceneMode = R2_GLOBALS._flubMazeEntryDirection; R2_GLOBALS._player.setPosition(Common::Point(-20, 160)); Common::Point pt(30, 160); @@ -14979,14 +15034,13 @@ void Scene1950::enterArea() { } else { _sceneMode = 18; _eastExit._enabled = false; - _field418 = Common::Point(60, 152); - R2_GLOBALS._v56AAB = 0; + _vampireDestPos = Common::Point(60, 152); R2_GLOBALS._player.enableControl(CURSOR_USE); R2_GLOBALS._player._canWalk = false; _vampire.setStrip(2); NpcMover *mover = new NpcMover(); - _vampire.addMover(mover, &_field418, this); + _vampire.addMover(mover, &_vampireDestPos, this); R2_GLOBALS._player.setPosition(Common::Point(-20, 160)); Common::Point pt2(30, 160); @@ -14996,7 +15050,7 @@ void Scene1950::enterArea() { break; case 4: _sceneMode = R2_GLOBALS._flubMazeEntryDirection; - if (_field412 == 0) { + if (!_upExitStyle) { if (R2_GLOBALS.getFlag(36)) setAction(&_sequenceManager, this, 1955, &R2_GLOBALS._player, NULL); else @@ -15018,7 +15072,7 @@ void Scene1950::enterArea() { break; case 6: // Entering from the right - if (_field416 == 0) { + if (!_vampireActive) { _sceneMode = R2_GLOBALS._flubMazeEntryDirection; if (R2_GLOBALS._flubMazeArea == 1) { setAction(&_sequenceManager, this, 1961, &R2_GLOBALS._player, NULL); @@ -15031,15 +15085,14 @@ void Scene1950::enterArea() { } else { _sceneMode = 17; _westExit._enabled = false; - _field418 = Common::Point(259, 152); + _vampireDestPos = Common::Point(259, 152); - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_USE); R2_GLOBALS._player._canWalk = false; _vampire.setStrip(1); NpcMover *mover = new NpcMover(); - _vampire.addMover(mover, &_field418, this); + _vampire.addMover(mover, &_vampireDestPos, this); R2_GLOBALS._player.setPosition(Common::Point(340, 160)); Common::Point pt2(289, 160); @@ -15134,9 +15187,9 @@ void Scene1950::doButtonPress(int indx) { } void Scene1950::postInit(SceneObjectList *OwnerList) { - _field412 = 0; - _field414 = 0; - _field416 = 0; + _upExitStyle = false; + _removeFlag = false; + _vampireActive = false; _vampireIndex = 0; if (R2_GLOBALS._sceneManager._previousScene == 300) R2_GLOBALS._flubMazeArea = 103; @@ -15233,7 +15286,7 @@ void Scene1950::signal() { case 17: { _sceneMode = 13; R2_GLOBALS._flubMazeEntryDirection = 3; - _field416 = 0; + _vampireActive = false; R2_GLOBALS._player.disableControl(CURSOR_WALK); R2_GLOBALS._player._canWalk = true; R2_GLOBALS._player.setVisage(22); @@ -15249,7 +15302,7 @@ void Scene1950::signal() { case 18: { _sceneMode = 16; R2_GLOBALS._flubMazeEntryDirection = 6; - _field416 = 0; + _vampireActive = false; R2_GLOBALS._player.disableControl(CURSOR_WALK); R2_GLOBALS._player._canWalk = true; R2_GLOBALS._player.setVisage(22); @@ -15273,14 +15326,12 @@ void Scene1950::signal() { R2_GLOBALS._sceneManager.changeScene(1945); break; case 1958: - SceneItem::display(1950, 24, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); - R2_GLOBALS._v56AAB = 0; + SceneItem::display(1950, 24, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); R2_GLOBALS._player.enableControl(CURSOR_WALK); _doorExit._enabled = true; break; case 1959: R2_INVENTORY.setObjectScene(R2_SOAKED_FACEMASK, 0); - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); _doorExit._enabled = true; break; @@ -15288,13 +15339,13 @@ void Scene1950::signal() { // No break on purpose case 1963: R2_GLOBALS._player.enableControl(); - _KeypadWindow.proc12(1971, 1, 1, 160, 135); + _KeypadWindow.setup2(1971, 1, 1, 160, 135); break; case 1964: // No break on purpose case 1965: if (!R2_GLOBALS.getFlag(37)) { - SceneItem::display(1950, 26, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1950, 26, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } R2_GLOBALS._player.enableControl(); break; @@ -15335,7 +15386,6 @@ void Scene1950::signal() { R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); break; default: - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); break; } diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h index c0088236b4..a663fbe5bc 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.h +++ b/engines/tsage/ringworld2/ringworld2_scenes1.h @@ -117,7 +117,7 @@ public: SceneActor _runningGuy2; SceneActor _runningGuy3; BackgroundSceneObject _rightLandslide; - BackgroundSceneObject _object2; + BackgroundSceneObject _purplePlant; Seeker _seeker; Trooper _trooper; Chief _chief; @@ -386,10 +386,10 @@ public: class Scene1500 : public SceneExt { public: - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; - SceneActor _actor4; + SceneActor _starship; + SceneActor _starshipShadow; + SceneActor _smallShip; + SceneActor _smallShipShadow; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -410,9 +410,9 @@ class Scene1530 : public SceneExt { public: SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; + SceneActor _seeker; + SceneActor _leftReactor; + SceneActor _rightReactor; SequenceManager _sequenceManager; @@ -468,8 +468,8 @@ class Scene1550 : public SceneExt { virtual void remove(); virtual void process(Event &event); - virtual void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY); - virtual void proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum); + virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); + virtual void setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum); }; class WorkingShip : public NamedHotspot { @@ -576,14 +576,14 @@ public: }; class Scene1575 : public SceneExt { - class Hotspot1 : public NamedHotspot { + class Button : public NamedHotspot { public: - int _field34; - int _field36; + int _buttonId; + bool _pressed; - Hotspot1(); + Button(); void synchronize(Serializer &s); - void subA910D(int indx); + void initButton(int buttonId); virtual void process(Event &event); virtual bool startAction(CursorType action, Event &event); @@ -594,12 +594,12 @@ public: int _field416; int _field418; int _field41A; - Hotspot1 _item1; - Hotspot1 _item2; - Hotspot1 _item3; - Hotspot1 _item4; - Hotspot1 _item5; - Hotspot1 _item6; + Button _button1; + Button _button2; + Button _button3; + Button _button4; + Button _button5; + Button _button6; SceneActor _actor1; SceneActor _actor2; SceneActor _actor3; @@ -629,54 +629,55 @@ public: }; class Scene1580 : public SceneExt { - class Hotspot1 : public NamedHotspot { + class JoystickPlug : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; - class Hotspot2 : public NamedHotspot { + class ScreenSlot : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor2 : public SceneActor { + class Joystick : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor3 : public SceneActor { + class Screen : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor4 : public SceneActor { + class StorageCompartment : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor5 : public SceneActor { + class HatchButton : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor6 : public SceneActor { + class ThrusterValve : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; - class Actor7 : public SceneActor { + class Ignitor : public SceneActor { public: virtual bool startAction(CursorType action, Event &event); }; public: + //CHECKME: Useless variable? int _field412; SpeakerQuinn _quinnSpeaker; SpeakerSeeker _seekerSpeaker; - Hotspot1 _item1; - Hotspot2 _item2; - NamedHotspot _item3; - SceneActor _actor1; + JoystickPlug _joystickPlug; + ScreenSlot _screenSlot; + NamedHotspot _background; + SceneActor _screenDisplay; SceneActor _arrActor[8]; - Actor2 _actor2; - Actor3 _actor3; - Actor4 _actor4; - Actor5 _actor5; - Actor6 _actor6; - Actor7 _actor7; + Joystick _joystick; + Screen _screen; + StorageCompartment _storageCompartment; + HatchButton _hatchButton; + ThrusterValve _thrusterValve; + Ignitor _ignitor; SequenceManager _sequenceManager; Scene1580(); @@ -692,17 +693,18 @@ class Scene1625 : public SceneExt { virtual bool startAction(CursorType action, Event &event); }; public: + //CHECKME: Useless variable int _field412; SpeakerMiranda1625 _mirandaSpeaker; SpeakerTeal1625 _tealSpeaker; SpeakerSoldier1625 _soldierSpeaker; - NamedHotspot _item1; - SceneActor _actor1; + NamedHotspot _background; + SceneActor _teal; SceneActor _tealHead; - SceneActor _actor3; + SceneActor _mirandaMouth; SceneActor _glass; - SceneActor _actor5; - SceneActor _actor6; + SceneActor _wristRestraints; + SceneActor _tealRightArm; Wire _wire; SequenceManager _sequenceManager; @@ -870,18 +872,18 @@ public: NamedHotspot _item1; NamedHotspot _item2; NamedHotspot _item3; - NamedHotspot _item4; + NamedHotspot _secBackground; Background _background; - SceneActor _actor1; + SceneActor _playerShadow; SceneActor _companion; - SceneActor _actor3; + SceneActor _companionShadow; SceneActor _leftStaircase; SceneActor _rightStaircase; Lever _lever; Doors _doors; PassengerDoor _leftDoor; PassengerDoor _rightDoor; - Exit1 _exit1; + Exit1 _southExit; SequenceManager _sequenceManager; Scene1800(); @@ -996,9 +998,9 @@ public: SpeakerSeeker1900 _seekerSpeaker; NamedHotspot _background; NamedHotspot _elevator; - SceneActor _actor1; - BackgroundSceneObject _object1; - BackgroundSceneObject _object2; + SceneActor _companion; + BackgroundSceneObject _leftDoorFrame; + BackgroundSceneObject _rightDoorFrame; LiftDoor _leftDoor, _rightDoor; WestExit _westExit; EastExit _eastExit; @@ -1024,30 +1026,30 @@ class Scene1925 : public SceneExt { public: virtual void changeScene(); }; - class Exit2 : public SceneExit { + class ExitDown : public SceneExit { public: virtual void changeScene(); }; - class Exit3 : public SceneExit { + class WestExit : public SceneExit { public: virtual void changeScene(); }; - class Exit4 : public SceneExit { + class EastExit : public SceneExit { public: virtual void changeScene(); }; public: - NamedHotspot _item1; + NamedHotspot _background; Button _button; Ladder _ladder; - SceneActor _actor1; + SceneActor _door; ExitUp _exitUp; - Exit2 _exit2; - Exit3 _exit3; - Exit4 _exit4; + ExitDown _exitDown; + WestExit _westExit; + EastExit _eastExit; SequenceManager _sequenceManager; - int _field9B8; + int _newSceneMode; int _levelResNum[5]; Scene1925(); @@ -1083,12 +1085,12 @@ class Scene1945 : public SceneExt { virtual void changeScene(); }; public: - NamedHotspot _item1; - NamedHotspot _item2; + NamedHotspot _hole; + NamedHotspot _ice2; Ice _ice; Ladder _ladder; - SceneActor _actor1; - SceneActor _actor2; + SceneActor _coveringIce; + SceneActor _alcoholLamp; Gunpowder _gunpowder; ExitUp _exitUp; CorridorExit _corridorExit; @@ -1134,8 +1136,8 @@ class Scene1950 : public SceneExt { KeypadWindow(); virtual void synchronize(Serializer &s); virtual void remove(); - virtual void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY); - virtual void proc13(int resNum, int lookLineNum, int talkLineNum, int useLineNum); + virtual void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY); + virtual void setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum); }; class Keypad : public NamedHotspot { @@ -1223,7 +1225,7 @@ public: SceneActor _containmentField; Gem _gem; SceneActor _cube; - SceneActor _actor7; + SceneActor _pulsingLights; Vampire _vampire; KeypadWindow _KeypadWindow; NorthExit _northExit; @@ -1236,10 +1238,10 @@ public: DoorExit _doorExit; SequenceManager _sequenceManager; - int _field412; - int _field414; - int _field416; - Common::Point _field418; + bool _upExitStyle; + bool _removeFlag; + bool _vampireActive; + Common::Point _vampireDestPos; int _vampireIndex; Scene1950(); diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.cpp b/engines/tsage/ringworld2/ringworld2_scenes2.cpp index 510855b162..42df9d6a6a 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes2.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes2.cpp @@ -132,25 +132,28 @@ void Scene2000::initPlayer() { } for (int i = 0; i < 11; i++) { if (R2_GLOBALS._spillLocation[R2_GLOBALS._player._characterIndex] == R2_GLOBALS._spillLocation[3 + i]) - _objList1[i].show(); + _persons[i].show(); } - if ((R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) && (R2_GLOBALS._spillLocation[R2_QUINN] == R2_GLOBALS._spillLocation[R2_SEEKER])) { - _object1.postInit(); + if ((R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) + && (R2_GLOBALS._spillLocation[R2_QUINN] == R2_GLOBALS._spillLocation[R2_SEEKER])) { + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _object1.setup(20, 5, 1); - _object1.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + // Seeker is in room with Quinn + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _object1.setup(2008, 5, 1); - _object1.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); + // Quinn is in room with Seeker + _companion.setup(2008, 5, 1); + _companion.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); } if (_westExit._enabled) { if (_eastExit._enabled) - _object1.setPosition(Common::Point(180, 128)); + _companion.setPosition(Common::Point(180, 128)); else - _object1.setPosition(Common::Point(75, 128)); + _companion.setPosition(Common::Point(75, 128)); } else - _object1.setPosition(Common::Point(300, 128)); + _companion.setPosition(Common::Point(300, 128)); } } @@ -174,9 +177,9 @@ void Scene2000::initExits() { _doorExit._moving = false; for (int i = 0; i < 11; i++) - _objList1[i].hide(); + _persons[i].hide(); - _object1.remove(); + _companion.remove(); switch (R2_GLOBALS._spillLocation[R2_GLOBALS._player._characterIndex]) { case 3: @@ -393,11 +396,11 @@ void Scene2000::Action1::signal() { _actionIndex = 1; Common::Point pt(-20, 127); NpcMover *mover = new NpcMover(); - scene->_objList1[_state].addMover(mover, &pt, scene); + scene->_persons[_state].addMover(mover, &pt, scene); break; } case 1: - scene->_objList1[_state].setPosition(Common::Point(340, 127)); + scene->_persons[_state].setPosition(Common::Point(340, 127)); --R2_GLOBALS._spillLocation[4 + _state]; _actionIndex = 0; switch (_state - 1) { @@ -426,9 +429,9 @@ void Scene2000::Action1::signal() { } if (R2_GLOBALS._spillLocation[3 + _state] == R2_GLOBALS._spillLocation[R2_GLOBALS._player._characterIndex]) - scene->_objList1[_state].show(); + scene->_persons[_state].show(); else - scene->_objList1[_state].hide(); + scene->_persons[_state].hide(); signal(); break; @@ -436,11 +439,11 @@ void Scene2000::Action1::signal() { _actionIndex = 6; Common::Point pt(340, 127); NpcMover *mover = new NpcMover(); - scene->_objList1[_state].addMover(mover, &pt, this); + scene->_persons[_state].addMover(mover, &pt, this); break; } case 6: - scene->_objList1[_state].setPosition(Common::Point(-20, 127)); + scene->_persons[_state].setPosition(Common::Point(-20, 127)); ++R2_GLOBALS._spillLocation[3 + _state]; _actionIndex = 5; switch (_state - 1) { @@ -469,33 +472,33 @@ void Scene2000::Action1::signal() { } if (R2_GLOBALS._spillLocation[3 + _state] == R2_GLOBALS._spillLocation[R2_GLOBALS._player._characterIndex]) - scene->_objList1[_state].show(); + scene->_persons[_state].show(); else - scene->_objList1[_state].hide(); + scene->_persons[_state].hide(); signal(); break; case 10: { Common::Point pt(290, 127); NpcMover *mover = new NpcMover(); - scene->_objList1[_state].addMover(mover, &pt, this); + scene->_persons[_state].addMover(mover, &pt, this); _actionIndex = 11; break; } case 11: if (_state == 1) - scene->_objList1[0].setStrip(1); + scene->_persons[0].setStrip(1); else if (_state == 5) - scene->_objList1[4].setStrip(1); + scene->_persons[4].setStrip(1); setDelay(600); _actionIndex = 12; break; case 12: if (_state == 1) - scene->_objList1[0].setStrip(2); + scene->_persons[0].setStrip(2); else if (_state == 5) - scene->_objList1[4].setStrip(2); - scene->_objList1[_state].setStrip(1); + scene->_persons[4].setStrip(2); + scene->_persons[_state].setStrip(1); _actionIndex = 5; signal(); break; @@ -503,29 +506,29 @@ void Scene2000::Action1::signal() { if ((R2_GLOBALS._spillLocation[3 + _state] == 13) || (R2_GLOBALS._spillLocation[3 + _state] == 22) || (R2_GLOBALS._spillLocation[3 + _state] == 27)) { Common::Point pt(30, 127); NpcMover *mover = new NpcMover(); - scene->_objList1[_state].addMover(mover, &pt, this); + scene->_persons[_state].addMover(mover, &pt, this); _actionIndex = 16; } else { Common::Point pt(120, 127); NpcMover *mover = new NpcMover(); - scene->_objList1[_state].addMover(mover, &pt, this); + scene->_persons[_state].addMover(mover, &pt, this); _actionIndex = 16; } break; case 16: if (_state == 1) - scene->_objList1[2].setStrip(2); + scene->_persons[2].setStrip(2); else if (_state == 8) - scene->_objList1[9].setStrip(2); + scene->_persons[9].setStrip(2); setDelay(600); _actionIndex = 17; break; case 17: if (_state == 1) - scene->_objList1[2].setStrip(1); + scene->_persons[2].setStrip(1); else if (_state == 8) - scene->_objList1[9].setStrip(1); - scene->_objList1[_state].setStrip(2); + scene->_persons[9].setStrip(1); + scene->_persons[_state].setStrip(2); _actionIndex = 0; break; case 99: @@ -806,57 +809,57 @@ void Scene2000::postInit(SceneObjectList *OwnerList) { _action5._state = 3; for (int i = 0; i < 11; i++) - _objList1[i].postInit(); + _persons[i].postInit(); - _objList1[0].setVisage(2000); - _objList1[0].setStrip(2); - _objList1[0].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[0].setVisage(2000); + _persons[0].setStrip(2); + _persons[0].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[1].setVisage(2001); - _objList1[1].setStrip(2); - _objList1[1].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[1].setVisage(2001); + _persons[1].setStrip(2); + _persons[1].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[2].setVisage(2003); - _objList1[2].setStrip(1); - _objList1[2].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[2].setVisage(2003); + _persons[2].setStrip(1); + _persons[2].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[3].setVisage(2007); - _objList1[3].setStrip(2); - _objList1[3].setDetails(2001, 12, -1, -1, 1, (SceneItem *)NULL); + _persons[3].setVisage(2007); + _persons[3].setStrip(2); + _persons[3].setDetails(2001, 12, -1, -1, 1, (SceneItem *)NULL); - _objList1[4].setVisage(2004); - _objList1[4].setStrip(2); - _objList1[4].setDetails(2001, 19, -1, -1, 1, (SceneItem *)NULL); + _persons[4].setVisage(2004); + _persons[4].setStrip(2); + _persons[4].setDetails(2001, 19, -1, -1, 1, (SceneItem *)NULL); - _objList1[5].setVisage(2003); - _objList1[5].setStrip(2); - _objList1[5].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[5].setVisage(2003); + _persons[5].setStrip(2); + _persons[5].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[6].setVisage(2000); - _objList1[6].setStrip(1); - _objList1[6].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[6].setVisage(2000); + _persons[6].setStrip(1); + _persons[6].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[7].setVisage(2000); - _objList1[7].setStrip(2); - _objList1[7].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[7].setVisage(2000); + _persons[7].setStrip(2); + _persons[7].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[8].setVisage(2000); - _objList1[8].setStrip(2); - _objList1[8].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); + _persons[8].setVisage(2000); + _persons[8].setStrip(2); + _persons[8].setDetails(2001, 0, -1, -1, 1, (SceneItem *)NULL); - _objList1[9].setVisage(2006); - _objList1[9].setStrip(1); - _objList1[9].setDetails(2001, 6, -1, -1, 1, (SceneItem *)NULL); + _persons[9].setVisage(2006); + _persons[9].setStrip(1); + _persons[9].setDetails(2001, 6, -1, -1, 1, (SceneItem *)NULL); - _objList1[10].setVisage(2007); - _objList1[10].setStrip(1); - _objList1[10].setDetails(2001, 12, -1, -1, 1, (SceneItem *)NULL); + _persons[10].setVisage(2007); + _persons[10].setStrip(1); + _persons[10].setDetails(2001, 12, -1, -1, 1, (SceneItem *)NULL); for (int i = 0; i < 11; i++) { - _objList1[i].animate(ANIM_MODE_1, NULL); - _objList1[i]._moveDiff.x = 3; - _objList1[i]._moveRate = 8; - _objList1[i].hide(); + _persons[i].animate(ANIM_MODE_1, NULL); + _persons[i]._moveDiff.x = 3; + _persons[i]._moveRate = 8; + _persons[i].hide(); switch (i - 1) { case 0: if (R2_GLOBALS._spillLocation[3 + i] == 1) @@ -899,28 +902,28 @@ void Scene2000::postInit(SceneObjectList *OwnerList) { case 22: case 27: case 30: - _objList1[i].setPosition(Common::Point(265, 127)); + _persons[i].setPosition(Common::Point(265, 127)); break; case 5: case 12: case 17: case 21: case 26: - _objList1[i].setPosition(Common::Point(55, 127)); + _persons[i].setPosition(Common::Point(55, 127)); break; default: - _objList1[i].setPosition(Common::Point(160, 127)); + _persons[i].setPosition(Common::Point(160, 127)); break; } } - _objList1[1].setAction(&_action2); - _objList1[3].setAction(&_action5); - _objList1[5].setAction(&_action4); - _objList1[8].setAction(&_action1); + _persons[1].setAction(&_action2); + _persons[3].setAction(&_action5); + _persons[5].setAction(&_action4); + _persons[8].setAction(&_action1); initPlayer(); - _item1.setDetails(Rect(0, 0, 320, 200), 2000, 0, -1, 23, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2000, 0, -1, 23, 1, NULL); SceneExt::postInit(); } @@ -997,8 +1000,6 @@ void Scene2000::signal() { g_globals->_sceneManager.changeScene(2535); break; default: - if (R2_GLOBALS._v56AAB != 0) - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); break; } @@ -1008,7 +1009,6 @@ void Scene2000::signal() { g_globals->_sceneManager.changeScene(2350); break; default: - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(); break; } @@ -1039,20 +1039,20 @@ void Scene2000::synchronize(Serializer &s) { * *--------------------------------------------------------------------------*/ -bool Scene2350::Actor2::startAction(CursorType action, Event &event) { +bool Scene2350::Companion::startAction(CursorType action, Event &event) { if (action != R2_SENSOR_PROBE) return(SceneActor::startAction(action, event)); return true; } -bool Scene2350::Actor3::startAction(CursorType action, Event &event) { +bool Scene2350::Balloon::startAction(CursorType action, Event &event) { Scene2350 *scene = (Scene2350 *)R2_GLOBALS._sceneManager._scene; if ((action == R2_REBREATHER_TANK) && (R2_GLOBALS.getFlag(74))) { R2_GLOBALS._player.disableControl(); - scene->_actor1.postInit(); + scene->_person.postInit(); scene->_sceneMode = 2355; - scene->setAction(&scene->_sequenceManager, scene, 2355, &R2_GLOBALS._player, &scene->_actor1, NULL); + scene->setAction(&scene->_sequenceManager, scene, 2355, &R2_GLOBALS._player, &scene->_person, NULL); return true; } @@ -1109,33 +1109,33 @@ void Scene2350::postInit(SceneObjectList *OwnerList) { } if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor2.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor2.setup(20, 5, 1); - _actor2.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _actor2.setup(2008, 5, 1); - _actor2.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); + _companion.setup(2008, 5, 1); + _companion.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); } - _actor2.setPosition(Common::Point(135, 128)); + _companion.setPosition(Common::Point(135, 128)); } - _actor3.postInit(); - _actor4.postInit(); + _balloon.postInit(); + _harness.postInit(); if (R2_INVENTORY.getObjectScene(R2_REBREATHER_TANK) == 2350) { - _actor3.hide(); - _actor4.hide(); + _balloon.hide(); + _harness.hide(); } else { - _actor3.setup(2350, 0, 1); - _actor3.setPosition(Common::Point(197, 101)); - _actor3.setDetails(2000, 12, -1, -1, 1, (SceneItem *)NULL); - _actor3.fixPriority(10); - _actor4.setup(2350, 1, 2); - _actor4.setPosition(Common::Point(199, 129)); - _actor4.setDetails(2000, 12, -1, -1, 1, (SceneItem *)NULL); - _actor4.fixPriority(10); - } - _item1.setDetails(Rect(0, 0, 320, 200), 2000, 9, -1, -1, 1, NULL); + _balloon.setup(2350, 0, 1); + _balloon.setPosition(Common::Point(197, 101)); + _balloon.setDetails(2000, 12, -1, -1, 1, (SceneItem *)NULL); + _balloon.fixPriority(10); + _harness.setup(2350, 1, 2); + _harness.setPosition(Common::Point(199, 129)); + _harness.setDetails(2000, 12, -1, -1, 1, (SceneItem *)NULL); + _harness.fixPriority(10); + } + _background.setDetails(Rect(0, 0, 320, 200), 2000, 9, -1, -1, 1, NULL); R2_GLOBALS._player.disableControl(); if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 2000) { @@ -1217,7 +1217,7 @@ void Scene2350::process(Event &event) { * *--------------------------------------------------------------------------*/ -void Scene2400::Exit1::changeScene() { +void Scene2400::WestExit::changeScene() { Scene2400 *scene = (Scene2400 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); @@ -1229,7 +1229,7 @@ void Scene2400::Exit1::changeScene() { } -void Scene2400::Exit2::changeScene() { +void Scene2400::EastExit::changeScene() { Scene2400 *scene = (Scene2400 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); @@ -1243,10 +1243,10 @@ void Scene2400::Exit2::changeScene() { void Scene2400::postInit(SceneObjectList *OwnerList) { loadScene(2400); SceneExt::postInit(); - _exit1.setDetails(Rect(0, 125, 14, 165), EXITCURSOR_W, 2000); - _exit1.setDest(Common::Point(14, 150)); - _exit2.setDetails(Rect(305, 125, 320, 165), EXITCURSOR_E, 2000); - _exit2.setDest(Common::Point(315, 150)); + _westExit.setDetails(Rect(0, 125, 14, 165), EXITCURSOR_W, 2000); + _westExit.setDest(Common::Point(14, 150)); + _eastExit.setDetails(Rect(305, 125, 320, 165), EXITCURSOR_E, 2000); + _eastExit.setDest(Common::Point(315, 150)); R2_GLOBALS._player.postInit(); R2_GLOBALS._player.disableControl(); @@ -1333,7 +1333,7 @@ bool Scene2425::Crevasse::startAction(CursorType action, Event &event) { } } -bool Scene2425::Item4::startAction(CursorType action, Event &event) { +bool Scene2425::Background::startAction(CursorType action, Event &event) { if (action != R2_CURSOR_ROPE) return NamedHotspot::startAction(action, event); else { @@ -1436,7 +1436,7 @@ void Scene2425::postInit(SceneObjectList *OwnerList) { g_globals->_sceneItems.push_back(&_pictographs2); _crevasse.setDetails(12, 2425, 7, -1, 9); - _item4.setDetails(Rect(0, 0, 320, 200), 2425, 0, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2425, 0, -1, -1, 1, NULL); R2_GLOBALS._player.disableControl(); switch (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex]) { @@ -1495,7 +1495,7 @@ void Scene2425::signal() { * *--------------------------------------------------------------------------*/ -bool Scene2430::Actor1::startAction(CursorType action, Event &event) { +bool Scene2430::Companion::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); } @@ -1568,33 +1568,31 @@ void Scene2430::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.setPosition(Common::Point(100, 200)); if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(20, 5, 1); - _actor1.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _actor1.setup(2008, 5, 1); - _actor1.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); + _companion.setup(2008, 5, 1); + _companion.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); } - _actor1.setPosition(Common::Point(189, 137)); + _companion.setPosition(Common::Point(189, 137)); R2_GLOBALS._walkRegions.disableRegion(4); } - _item2.setDetails(Rect(11, 30, 37, 45), 2430, 3, -1, 5, 1, NULL); - _item3.setDetails(Rect(9, 58, 63, 92), 2430, 6, -1, -1, 1, NULL); - _item4.setDetails(Rect(20, 89, 127, 107), 2430, 9, -1, 11, 1, NULL); - _item5.setDetails(Rect(49, 7, 60, 27), 2430, 12, 13, 14, 1, NULL); - _item6.setDetails(Rect(69, 10, 95, 72), 2430, 15, -1, 14, 1, NULL); - _item10.setDetails(Rect(198, 4, 222, 146), 2430, 30, 31, 32, 1, NULL); - _item7.setDetails(Rect(155, 40, 304, 120), 2430, 21, -1, 23, 1, NULL); - _item8.setDetails(Rect(249, 3, 261, 39), 2430, 24, 25, -1, 1, NULL); - _item9.setDetails(Rect(279, 13, 305, 34), 2430, 33, -1, 18, 1, NULL); - // CHECKME: initialized for the 2nd time?? - _item2.setDetails(Rect(11, 30, 37, 45), 2430, 33, -1, 18, 1, NULL); - _item11.setDetails(Rect(116, 104, 148, 111), 2430, 39, -1, -1, 1, NULL); - _item12.setDetails(Rect(66, 77, 84, 83), 2430, 39, -1, -1, 1, NULL); - _item13.setDetails(Rect(117, 118, 201, 141), 2430, 9, -1, 11, 1, NULL); - _item1.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); + _furnishings.setDetails(Rect(9, 58, 63, 92), 2430, 6, -1, -1, 1, NULL); + _rug1.setDetails(Rect(20, 89, 127, 107), 2430, 9, -1, 11, 1, NULL); + _mirror.setDetails(Rect(49, 7, 60, 27), 2430, 12, 13, 14, 1, NULL); + _garments.setDetails(Rect(69, 10, 95, 72), 2430, 15, -1, 14, 1, NULL); + _post.setDetails(Rect(198, 4, 222, 146), 2430, 30, 31, 32, 1, NULL); + _bed.setDetails(Rect(155, 40, 304, 120), 2430, 21, -1, 23, 1, NULL); + _towel.setDetails(Rect(249, 3, 261, 39), 2430, 24, 25, -1, 1, NULL); + _bottles1.setDetails(Rect(279, 13, 305, 34), 2430, 33, -1, 18, 1, NULL); + _bottles2.setDetails(Rect(11, 30, 37, 45), 2430, 33, -1, 18, 1, NULL); + _clothesPile1.setDetails(Rect(116, 104, 148, 111), 2430, 39, -1, -1, 1, NULL); + _clothesPile2.setDetails(Rect(66, 77, 84, 83), 2430, 39, -1, -1, 1, NULL); + _rug2.setDetails(Rect(117, 118, 201, 141), 2430, 9, -1, 11, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 2000) { R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] = 2430; @@ -1784,6 +1782,7 @@ void Scene2435::signal() { _sceneMode = 20; R2_GLOBALS._events.setCursor(CURSOR_ARROW); _stripManager.start(709, this); + break; default: R2_GLOBALS._player.enableControl(); break; @@ -1795,7 +1794,7 @@ void Scene2435::signal() { * *--------------------------------------------------------------------------*/ -bool Scene2440::Actor1::startAction(CursorType action, Event &event) { +bool Scene2440::Companion::startAction(CursorType action, Event &event) { return SceneActor::startAction(action, event); } @@ -1850,24 +1849,24 @@ void Scene2440::postInit(SceneObjectList *OwnerList) { } R2_GLOBALS._player.setPosition(Common::Point(210, 200)); if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(20, 5, 1); - _actor1.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _actor1.setup(2008, 5, 1); - _actor1.setDetails(9002, 0, 5, 3, 1, (SceneItem *)NULL); + _companion.setup(2008, 5, 1); + _companion.setDetails(9002, 0, 5, 3, 1, (SceneItem *)NULL); } - _actor1.setPosition(Common::Point(38, 119)); + _companion.setPosition(Common::Point(38, 119)); } - _item2.setDetails(Rect(125, 25, 142, 73), 2430, 15, -1, 14, 1, NULL); - _item3.setDetails(Rect(124, 78, 237, 120), 2430, 36, -1, 38, 1, NULL); - _item4.setDetails(Rect(250, 3, 265, 133), 2430, 30, 31, 32, 1, NULL); - _item5.setDetails(Rect(91, 117, 203, 140), 2430, 9, -1, 11, 1, NULL); - _item6.setDetails(Rect(48, 78, 103, 112), 2430, 6, -1, -1, 1, NULL); - _item7.setDetails(Rect(48, 31, 73, 52), 2430, 33, -1, 18, 1, NULL); - _item1.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); + _garments.setDetails(Rect(125, 25, 142, 73), 2430, 15, -1, 14, 1, NULL); + _bedspread.setDetails(Rect(124, 78, 237, 120), 2430, 36, -1, 38, 1, NULL); + _post.setDetails(Rect(250, 3, 265, 133), 2430, 30, 31, 32, 1, NULL); + _rug.setDetails(Rect(91, 117, 203, 140), 2430, 9, -1, 11, 1, NULL); + _furnishings.setDetails(Rect(48, 78, 103, 112), 2430, 6, -1, -1, 1, NULL); + _bottles.setDetails(Rect(48, 31, 73, 52), 2430, 33, -1, 18, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); R2_GLOBALS._player.disableControl(); @@ -1944,14 +1943,14 @@ bool Scene2450::CareTaker::startAction(CursorType action, Event &event) { if (action == CURSOR_TALK) { R2_GLOBALS._player.disableControl(); - if (R2_GLOBALS._v565AE < 3) { - ++R2_GLOBALS._v565AE; + if (R2_GLOBALS._stripModifier < 3) { + ++R2_GLOBALS._stripModifier; scene->_sceneMode = 20; R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS); if (R2_GLOBALS._player._characterIndex == R2_QUINN) - scene->_stripManager.start(699 + (R2_GLOBALS._v565AE * 2), scene); + scene->_stripManager.start(699 + (R2_GLOBALS._stripModifier * 2), scene); else - scene->_stripManager.start(700 + (R2_GLOBALS._v565AE * 2), scene); + scene->_stripManager.start(700 + (R2_GLOBALS._stripModifier * 2), scene); } return true; } else { @@ -1972,7 +1971,7 @@ void Scene2450::Exit1::changeScene() { R2_GLOBALS._player.addMover(mover, &pt, scene); } else { _moving = false; - SceneItem::display(2450, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2450, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); Common::Point pt(60, 140); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, NULL); @@ -2009,7 +2008,7 @@ void Scene2450::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.disableControl(); switch (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex]) { case 1900: - R2_GLOBALS._v565AE = 0; + R2_GLOBALS._stripModifier = 0; R2_GLOBALS._player._characterScene[R2_QUINN] = 2450; R2_GLOBALS._player._characterScene[R2_SEEKER] = 2450; R2_GLOBALS._player._oldCharacterScene[R2_QUINN] = 2450; @@ -2145,14 +2144,14 @@ void Scene2450::signal() { g_globals->_sceneManager.changeScene(2000); break; case 20: - if (R2_GLOBALS._v565AE == 3) { + if (R2_GLOBALS._stripModifier == 3) { R2_GLOBALS._player.disableControl(); - R2_GLOBALS._v565AE = 4; + R2_GLOBALS._stripModifier = 4; _sceneMode = 2454; setAction(&_sequenceManager, this, 2454, &_careTaker, NULL); } else { R2_GLOBALS._player.enableControl(CURSOR_TALK); - if (R2_GLOBALS._v565AE < 4) + if (R2_GLOBALS._stripModifier < 4) R2_GLOBALS._player._canWalk = false; } break; @@ -2395,7 +2394,7 @@ void Scene2455::signal() { } /*-------------------------------------------------------------------------- - * Scene 2500 - Spill Mountains: Large Cave + * Scene 2500 - Spill Mountains: Large Ledge * *--------------------------------------------------------------------------*/ @@ -2441,19 +2440,19 @@ void Scene2500::postInit(SceneObjectList *OwnerList) { } if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(21, 3, 1); - _actor1.setDetails(9002, 1, -1, -1, 1, (SceneItem *)NULL); + _companion.setup(21, 3, 1); + _companion.setDetails(9002, 1, -1, -1, 1, (SceneItem *)NULL); } else { - _actor1.setup(2008, 3, 1); - _actor1.changeZoom(50); - _actor1.setDetails(9001, 0, -1, -1, 1, (SceneItem *)NULL); + _companion.setup(2008, 3, 1); + _companion.changeZoom(50); + _companion.setDetails(9001, 0, -1, -1, 1, (SceneItem *)NULL); } - _actor1.setPosition(Common::Point(141, 94)); + _companion.setPosition(Common::Point(141, 94)); } - _item1.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2430, 0, -1, -1, 1, NULL); R2_GLOBALS._player.disableControl(); if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 2000) { @@ -2464,9 +2463,9 @@ void Scene2500::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.addMover(mover, &pt, this); } else if (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] == 3100) { _sceneMode = 2500; - _actor2.postInit(); - _actor3.postInit(); - setAction(&_sequenceManager, this, 2500, &R2_GLOBALS._player, &_actor2, &_actor3, NULL); + _quinn.postInit(); + _ship.postInit(); + setAction(&_sequenceManager, this, 2500, &R2_GLOBALS._player, &_quinn, &_ship, NULL); } else { R2_GLOBALS._player.setPosition(Common::Point(160, 150)); R2_GLOBALS._player.setStrip(3); @@ -2483,7 +2482,7 @@ void Scene2500::signal() { case 20: R2_GLOBALS._player.disableControl(); _sceneMode = 2501; - setAction(&_sequenceManager, this, 2501, &R2_GLOBALS._player, &_actor2, &_actor3, NULL); + setAction(&_sequenceManager, this, 2501, &R2_GLOBALS._player, &_quinn, &_ship, NULL); break; case 2500: _sceneMode = 20; @@ -2504,7 +2503,7 @@ void Scene2500::signal() { * *--------------------------------------------------------------------------*/ -bool Scene2525::Item5::startAction(CursorType action, Event &event) { +bool Scene2525::StopCock::startAction(CursorType action, Event &event) { Scene2525 *scene = (Scene2525 *)R2_GLOBALS._sceneManager._scene; if ((action == R2_REBREATHER_TANK) && (!R2_GLOBALS.getFlag(74))) { @@ -2528,7 +2527,7 @@ bool Scene2525::GlassDome::startAction(CursorType action, Event &event) { scene->_sceneMode = 2525; scene->setAction(&scene->_sequenceManager, scene, 2525, &R2_GLOBALS._player, &scene->_glassDome, NULL); } else { - SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; } @@ -2562,12 +2561,12 @@ void Scene2525::postInit(SceneObjectList *OwnerList) { _glassDome.setDetails(2525, 27, -1, -1, 1, (SceneItem *)NULL); } - _actor2.postInit(); - _actor2.setup(2525, 1, 1); - _actor2.setPosition(Common::Point(183, 114)); - _actor2.setDetails(2525, 15, -1, -1, 1, (SceneItem *)NULL); - _actor2.animate(ANIM_MODE_2, NULL); - _actor2._numFrames = 3; + _compressor.postInit(); + _compressor.setup(2525, 1, 1); + _compressor.setPosition(Common::Point(183, 114)); + _compressor.setDetails(2525, 15, -1, -1, 1, (SceneItem *)NULL); + _compressor.animate(ANIM_MODE_2, NULL); + _compressor._numFrames = 3; R2_GLOBALS._player.postInit(); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); @@ -2580,24 +2579,24 @@ void Scene2525::postInit(SceneObjectList *OwnerList) { } if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(20, 5, 1); - _actor1.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _actor1.setup(2008, 5, 1); - _actor1.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); + _companion.setup(2008, 5, 1); + _companion.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); } - _actor1.setPosition(Common::Point(209, 162)); + _companion.setPosition(Common::Point(209, 162)); R2_GLOBALS._walkRegions.disableRegion(4); } - _item5.setDetails(Rect(125, 73, 140, 86), 2525, 6, -1, -1, 1, NULL); - _item3.setDetails(Rect(137, 11, 163, 72), 2525, 12, -1, -1, 1, NULL); - _item4.setDetails(Rect(204, 20, 234, 78), 2525, 12, -1, -1, 1, NULL); - _item2.setDetails(Rect(102, 62, 230, 134), 2525, 0, -1, -1, 1, NULL); - _item1.setDetails(Rect(0, 0, 320, 200), 2525, 24, -1, -1, 1, NULL); + _stopcock.setDetails(Rect(125, 73, 140, 86), 2525, 6, -1, -1, 1, NULL); + _pipes1.setDetails(Rect(137, 11, 163, 72), 2525, 12, -1, -1, 1, NULL); + _pipes2.setDetails(Rect(204, 20, 234, 78), 2525, 12, -1, -1, 1, NULL); + _machine.setDetails(Rect(102, 62, 230, 134), 2525, 0, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2525, 24, -1, -1, 1, NULL); R2_GLOBALS._player.disableControl(); @@ -2656,7 +2655,7 @@ bool Scene2530::Flask::startAction(CursorType action, Event &event) { scene->_sceneMode = 2530; scene->setAction(&scene->_sequenceManager, scene, 2530, &R2_GLOBALS._player, &scene->_flask, NULL); } else { - SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; @@ -2670,7 +2669,7 @@ bool Scene2530::Crank::startAction(CursorType action, Event &event) { if (R2_GLOBALS._player._characterIndex == R2_QUINN) { if (R2_GLOBALS.getFlag(73)) - SceneItem::display(2530, 35, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2530, 35, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); else { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 2532; @@ -2742,20 +2741,20 @@ void Scene2530::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.setPosition(Common::Point(100, 200)); if (R2_GLOBALS._player._characterScene[R2_QUINN] == R2_GLOBALS._player._characterScene[R2_SEEKER]) { - _actor1.postInit(); + _companion.postInit(); if (R2_GLOBALS._player._characterIndex == R2_QUINN) { - _actor1.setup(20, 5, 1); - _actor1.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); + _companion.setup(20, 5, 1); + _companion.setDetails(9002, 0, 4, 3, 1, (SceneItem *)NULL); } else { - _actor1.setup(2008, 5, 1); - _actor1.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); + _companion.setup(2008, 5, 1); + _companion.setDetails(9001, 0, 5, 3, 1, (SceneItem *)NULL); } - _actor1.setPosition(Common::Point(20, 130)); + _companion.setPosition(Common::Point(20, 130)); R2_GLOBALS._walkRegions.disableRegion(1); } - _item2.setDetails(Rect(108, 90, 135, 205), 2530, 22, -1, -1, 1, NULL); - _item5.setDetails(Rect(115, 112, 206, 130), 2530, 25, -1, 27, 1, NULL); + _crank2.setDetails(Rect(108, 90, 135, 205), 2530, 22, -1, -1, 1, NULL); + _rope.setDetails(Rect(115, 112, 206, 130), 2530, 25, -1, 27, 1, NULL); _shelf.setDetails(Rect(256, 64, 311, 85), 2530, 31, -1, 33, 1, NULL); _background.setDetails(Rect(0, 0, 320, 200), 2530, 0, 1, -1, 1, NULL); @@ -2817,7 +2816,7 @@ bool Scene2535::RebreatherTank::startAction(CursorType action, Event &event) { scene->setAction(&scene->_sequenceManager, scene, scene->_sceneMode, &R2_GLOBALS._player, &scene->_rebreatherTank, NULL); } else { - SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; @@ -2834,7 +2833,7 @@ bool Scene2535::TannerMask::startAction(CursorType action, Event &event) { scene->_sceneMode = 2535; scene->setAction(&scene->_sequenceManager, scene, 2535, &R2_GLOBALS._player, &scene->_tannerMask, NULL); } else { - SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2530, 33, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; @@ -3027,7 +3026,7 @@ void Scene2600::signal() { *--------------------------------------------------------------------------*/ Scene2700::Scene2700(): SceneExt() { - _field412 = _field414 = _field416 = 0; + _areaMode = _moveMode = _stripNumber = 0; _walkRect1.set(70, 122, 90, 132); _walkRect2.set(150, 122, 160, 132); @@ -3040,9 +3039,9 @@ Scene2700::Scene2700(): SceneExt() { void Scene2700::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); - s.syncAsSint16LE(_field414); - s.syncAsSint16LE(_field416); + s.syncAsSint16LE(_areaMode); + s.syncAsSint16LE(_moveMode); + s.syncAsSint16LE(_stripNumber); } void Scene2700::Action1::signal() { @@ -3079,8 +3078,8 @@ void Scene2700::Area1::process(Event &event) { Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); scene->_sceneMode = 10; - scene->_field414 = 2703; - switch (scene->_field412) { + scene->_moveMode = 2703; + switch (scene->_areaMode) { case 0: // No break on purpose case 6: @@ -3129,8 +3128,8 @@ void Scene2700::Area2::process(Event &event) { Scene2700 *scene = (Scene2700 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); scene->_sceneMode = 10; - scene->_field414 = 2704; - switch (scene->_field412) { + scene->_moveMode = 2704; + switch (scene->_areaMode) { case 0: { Common::Point pt(140, 162); NpcMover *mover = new NpcMover(); @@ -3229,10 +3228,10 @@ void Scene2700::postInit(SceneObjectList *OwnerList) { if (R2_GLOBALS._sceneManager._previousScene == 2750) { _sceneMode = 2702; - _field412 = 5; + _areaMode = 5; setAction(&_sequenceManager, this, 2702, &R2_GLOBALS._player, NULL); } else { - _field412 = 0; + _areaMode = 0; if (R2_GLOBALS._sceneManager._previousScene == 3900) { _sceneMode = 2701; setAction(&_sequenceManager, this, 2701, &R2_GLOBALS._player, NULL); @@ -3247,26 +3246,26 @@ void Scene2700::postInit(SceneObjectList *OwnerList) { void Scene2700::signal() { switch (_sceneMode) { case 10: - switch (_field414) { + switch (_moveMode) { case 1: - switch (_field412) { + switch (_areaMode) { case 0: case 2: case 4: case 6: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2705, &R2_GLOBALS._player, NULL); break; case 3: { - _sceneMode = _field414; - _field412 = 1; + _sceneMode = _moveMode; + _areaMode = 1; Common::Point pt(80, 127); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); break; } case 5: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: // includes case 1 @@ -3274,24 +3273,24 @@ void Scene2700::signal() { } break; case 2: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 6: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL); break; case 3: case 4: { - _sceneMode = _field414; - _field412 = 2; + _sceneMode = _moveMode; + _areaMode = 2; Common::Point pt(155, 127); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); break; } case 5: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: // includes case 2 @@ -3299,21 +3298,21 @@ void Scene2700::signal() { } break; case 3: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 2: case 4: case 6: { - _sceneMode = _field414; - _field412 = 3; + _sceneMode = _moveMode; + _areaMode = 3; Common::Point pt(115, 152); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); break; } case 5: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: // includes case 3 @@ -3321,21 +3320,21 @@ void Scene2700::signal() { } break; case 4: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 6: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL); break; case 2: case 3: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL); break; case 4: case 5: - _sceneMode = _field414; + _sceneMode = _moveMode; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2704, &R2_GLOBALS._player, NULL); break; default: @@ -3343,21 +3342,21 @@ void Scene2700::signal() { } break; case 5: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 6: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL); break; case 2: case 3: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL); break; case 4: { - _sceneMode = _field414; - _field412 = 5; + _sceneMode = _moveMode; + _areaMode = 5; Common::Point pt(285, 132); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -3368,11 +3367,11 @@ void Scene2700::signal() { } break; case 6: - switch (_field412) { + switch (_areaMode) { case 0: case 3: { - _sceneMode = _field414; - _field412 = 6; + _sceneMode = _moveMode; + _areaMode = 6; Common::Point pt(250, 162); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -3381,11 +3380,11 @@ void Scene2700::signal() { case 1: case 2: case 4: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL); break; case 5: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: @@ -3393,21 +3392,21 @@ void Scene2700::signal() { } break; case 2703: - switch (_field412) { + switch (_areaMode) { case 0: case 3: case 6: - _sceneMode = _field414; + _sceneMode = _moveMode; setAction(&_sequenceManager, this, 2703, &R2_GLOBALS._player, NULL); break; case 1: case 2: case 4: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL); break; case 5: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: @@ -3415,21 +3414,21 @@ void Scene2700::signal() { } break; case 2704: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 6: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2706, &R2_GLOBALS._player, NULL); break; case 2: case 3: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2709, &R2_GLOBALS._player, NULL); break; case 4: case 5: - _sceneMode = _field414; + _sceneMode = _moveMode; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2704, &R2_GLOBALS._player, NULL); break; default: @@ -3437,23 +3436,23 @@ void Scene2700::signal() { } break; case 2710: - switch (_field412) { + switch (_areaMode) { case 0: case 1: case 3: - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2707, &R2_GLOBALS._player, NULL); break; case 2: case 5: { - _sceneMode = _field414; + _sceneMode = _moveMode; Common::Point pt(164, 160); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); break; } case 4: - _field412 = 4; + _areaMode = 4; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2708, &R2_GLOBALS._player, NULL); break; default: @@ -3467,7 +3466,7 @@ void Scene2700::signal() { case 11: R2_INVENTORY.setObjectScene(R2_FLUTE, 0); R2_GLOBALS._player.disableControl(); - _field412 = 0; + _areaMode = 0; _sceneMode = 2700; setAction(&_sequenceManager, this, 2700, &_nej, NULL); break; @@ -3475,22 +3474,22 @@ void Scene2700::signal() { R2_GLOBALS._sound1.play(234); R2_GLOBALS._events.setCursor(CURSOR_WALK); _sceneMode = 2711; - _stripManager.start(_field416, this); + _stripManager.start(_stripNumber, this); break; case 13: R2_GLOBALS._events.setCursor(CURSOR_WALK); _sceneMode = 2712; - _stripManager.start(_field416, this); + _stripManager.start(_stripNumber, this); break; case 14: R2_GLOBALS._events.setCursor(CURSOR_WALK); _sceneMode = 2713; - _stripManager.start(_field416, this); + _stripManager.start(_stripNumber, this); break; case 15: R2_GLOBALS._events.setCursor(CURSOR_WALK); _sceneMode = 11; - _stripManager.start(_field416, this); + _stripManager.start(_stripNumber, this); break; case 2700: _nej.remove(); @@ -3504,26 +3503,26 @@ void Scene2700::signal() { break; case 2710: // Start of Nej assault - _field416 = 1200; + _stripNumber = 1200; _sceneMode = 12; _nej.postInit(); setAction(&_sequenceManager, this, 2710, &R2_GLOBALS._player, &_nej, NULL); break; case 2711: R2_GLOBALS._player.disableControl(); - _field416 = 1201; + _stripNumber = 1201; _sceneMode = 13; setAction(&_sequenceManager, this, 2711, &R2_GLOBALS._player, &_nej, NULL); break; case 2712: R2_GLOBALS._player.disableControl(); - _field416 = 1202; + _stripNumber = 1202; _sceneMode = 14; setAction(&_sequenceManager, this, 2712, &R2_GLOBALS._player, &_nej, NULL); break; case 2713: R2_GLOBALS._player.disableControl(); - _field416 = 1203; + _stripNumber = 1203; _sceneMode = 15; setAction(&_sequenceManager, this, 2713, &R2_GLOBALS._player, &_nej, NULL); break; @@ -3537,11 +3536,11 @@ void Scene2700::process(Event &event) { if (R2_GLOBALS._events.getCursor() == R2_FLUTE) { if (R2_GLOBALS._player._bounds.contains(event.mousePos)) { _sceneMode = 10; - _field414 = 2710; + _moveMode = 2710; R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_WALK); - switch (_field412) { + switch (_areaMode) { case 0: { _sceneMode = 2710; Common::Point pt(164, 160); @@ -3589,7 +3588,7 @@ void Scene2700::process(Event &event) { break; } } else { - SceneItem::display(2700, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(2700, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } event.handled = true; @@ -3598,37 +3597,37 @@ void Scene2700::process(Event &event) { if (!_walkRect1.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 1; + _moveMode = 1; } } else if (_walkRect2.contains(event.mousePos)) { if (!_walkRect2.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 2; + _moveMode = 2; } } else if (_walkRect3.contains(event.mousePos)) { if (!_walkRect3.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 3; + _moveMode = 3; } } else if (_walkRect4.contains(event.mousePos)) { if (!_walkRect4.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 4; + _moveMode = 4; } } else if (_walkRect5.contains(event.mousePos)) { if (!_walkRect5.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 5; + _moveMode = 5; } } else if (_walkRect6.contains(event.mousePos)) { if (!_walkRect6.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 6; + _moveMode = 6; } } else { event.handled = true; @@ -3636,9 +3635,9 @@ void Scene2700::process(Event &event) { } if (_sceneMode == 10) { R2_GLOBALS._player.disableControl(); - switch (_field412) { + switch (_areaMode) { case 0: - if (_field414 >= 6) { + if (_moveMode >= 6) { Common::Point pt(205, 162); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -3661,11 +3660,11 @@ void Scene2700::process(Event &event) { break; } case 3: - if (_field414 == 1) { + if (_moveMode == 1) { Common::Point pt(80, 137); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); - } else if (_field414 == 6) { + } else if (_moveMode == 6) { Common::Point pt(140, 162); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -3676,7 +3675,7 @@ void Scene2700::process(Event &event) { } break; case 4: - if (_field414 == 5) { + if (_moveMode == 5) { Common::Point pt(235, 132); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -3713,15 +3712,15 @@ void Scene2700::process(Event &event) { *--------------------------------------------------------------------------*/ Scene2750::Scene2750(): SceneExt() { - _field412 = _field414 = _field416 = 0; + _areaMode = _moveMode = _stripNumber = 0; } void Scene2750::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); - s.syncAsSint16LE(_field414); - s.syncAsSint16LE(_field416); + s.syncAsSint16LE(_areaMode); + s.syncAsSint16LE(_moveMode); + s.syncAsSint16LE(_stripNumber); } void Scene2750::Action1::signal() { @@ -3731,20 +3730,20 @@ void Scene2750::Action1::signal() { case 1: setDelay(60 + R2_GLOBALS._randomSource.getRandomNumber(240)); _actionIndex = 2; - scene->_actor5.show(); - scene->_actor5.animate(ANIM_MODE_8, 1, NULL); + scene->_bird2.show(); + scene->_bird2.animate(ANIM_MODE_8, 1, NULL); break; case 2: setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(600)); _actionIndex = 0; - scene->_actor5.show(); - scene->_actor3.animate(ANIM_MODE_2, NULL); + scene->_bird2.show(); + scene->_bird1.animate(ANIM_MODE_2, NULL); break; default: setDelay(30); _actionIndex = 1; - scene->_actor3.animate(ANIM_MODE_6, NULL); - scene->_actor4.animate(ANIM_MODE_8, 1, NULL); + scene->_bird1.animate(ANIM_MODE_6, NULL); + scene->_folliage1.animate(ANIM_MODE_8, 1, NULL); break; } } @@ -3753,20 +3752,20 @@ void Scene2750::Action2::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300)); - scene->_actor6.animate(ANIM_MODE_8, 1, NULL); + scene->_folliage2.animate(ANIM_MODE_8, 1, NULL); } void Scene2750::Action3::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; - if (scene->_actor7._position.x <= 320) { + if (scene->_folliage3._position.x <= 320) { setDelay(1800 + R2_GLOBALS._randomSource.getRandomNumber(600)); } else { setDelay(60); - scene->_actor7.setPosition(Common::Point(-10, 25)); + scene->_folliage3.setPosition(Common::Point(-10, 25)); Common::Point pt(330, 45); NpcMover *mover = new NpcMover(); - scene->_actor7.addMover(mover, &pt, NULL); + scene->_folliage3.addMover(mover, &pt, NULL); } } @@ -3774,28 +3773,28 @@ void Scene2750::Action4::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300)); - scene->_actor8.animate(ANIM_MODE_8, 1, NULL); + scene->_folliage4.animate(ANIM_MODE_8, 1, NULL); } void Scene2750::Action5::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300)); - scene->_actor9.animate(ANIM_MODE_8, 1, NULL); + scene->_folliage5.animate(ANIM_MODE_8, 1, NULL); } void Scene2750::Action6::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300)); - scene->_actor10.animate(ANIM_MODE_8, 1, NULL); + scene->_folliage6.animate(ANIM_MODE_8, 1, NULL); } void Scene2750::Action7::signal() { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; setDelay(600 + R2_GLOBALS._randomSource.getRandomNumber(300)); - scene->_actor11.animate(ANIM_MODE_8, 1, NULL); + scene->_folliage7.animate(ANIM_MODE_8, 1, NULL); } void Scene2750::Area1::process(Event &event) { @@ -3804,8 +3803,8 @@ void Scene2750::Area1::process(Event &event) { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); scene->_sceneMode = 10; - scene->_field414 = 2752; - switch (scene->_field412) { + scene->_moveMode = 2752; + switch (scene->_areaMode) { case 1: { scene->_sceneMode = 2752; scene->setAction(&scene->_sequenceManager, scene, 2752, &R2_GLOBALS._player, NULL); @@ -3835,8 +3834,8 @@ void Scene2750::Area2::process(Event &event) { Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; R2_GLOBALS._player.disableControl(); scene->_sceneMode = 10; - scene->_field414 = 2753; - switch (scene->_field412) { + scene->_moveMode = 2753; + switch (scene->_areaMode) { case 1: { Common::Point pt(140, 142); NpcMover *mover = new NpcMover(); @@ -3867,73 +3866,73 @@ void Scene2750::postInit(SceneObjectList *OwnerList) { _area1.setDetails(Rect(0, 90, 20, 135), EXITCURSOR_W); _area2.setDetails(Rect(300, 90, 320, 135), EXITCURSOR_E); - _rect1.set(30, 127, 155, 147); - _rect2.set(130, 142, 210, 167); - _rect3.set(-1, 137, 290, 147); + _walkRect1.set(30, 127, 155, 147); + _walkRect2.set(130, 142, 210, 167); + _walkRect3.set(-1, 137, 290, 147); if (R2_INVENTORY.getObjectScene(R2_FLUTE) == 0) { R2_GLOBALS._sound1.changeSound(235); - _actor2.postInit(); - _actor2.setup(2751, 1, 1); - _actor2.setPosition(Common::Point(104, 158)); - _actor2.animate(ANIM_MODE_2, NULL); - } - - _actor3.postInit(); - _actor3.setup(2750, 1, 1); - _actor3.setPosition(Common::Point(188, 34)); - _actor3.animate(ANIM_MODE_2, NULL); - _actor3._numFrames = 16; - - _actor4.postInit(); - _actor4.setup(2700, 4, 1); - _actor4.setPosition(Common::Point(188, 37)); - _actor4.fixPriority(26); - - _actor5.postInit(); - _actor5.setup(2750, 2, 1); - _actor5.setPosition(Common::Point(188, 34)); - _actor5.hide(); - - _actor3.setAction(&_action1); - - _actor6.postInit(); - _actor6.setup(2750, 3, 1); - _actor6.setPosition(Common::Point(9, 167)); - _actor6.fixPriority(252); - _actor6.setAction(&_action2); - - _actor7.postInit(); - _actor7.setup(2750, 4, 1); - _actor7.setPosition(Common::Point(-10, 25)); - _actor7.animate(ANIM_MODE_1, NULL); - _actor7.setStrip2(4); - _actor7._moveRate = 20; - _actor7.setAction(&_action3); - - _actor8.postInit(); - _actor8.fixPriority(26); - _actor8.setup(2750, 5, 1); - _actor8.setPosition(Common::Point(258, 33)); - _actor8.setAction(&_action4); - - _actor9.postInit(); - _actor9.fixPriority(26); - _actor9.setup(2750, 6, 1); - _actor9.setPosition(Common::Point(61, 38)); - _actor9.setAction(&_action5); - - _actor10.postInit(); - _actor10.fixPriority(26); - _actor10.setup(2750, 7, 1); - _actor10.setPosition(Common::Point(69, 37)); - _actor10.setAction(&_action6); - - _actor11.postInit(); - _actor11.fixPriority(26); - _actor11.setup(2750, 8, 1); - _actor11.setPosition(Common::Point(80, 35)); - _actor11.setAction(&_action7); + _fire.postInit(); + _fire.setup(2751, 1, 1); + _fire.setPosition(Common::Point(104, 158)); + _fire.animate(ANIM_MODE_2, NULL); + } + + _bird1.postInit(); + _bird1.setup(2750, 1, 1); + _bird1.setPosition(Common::Point(188, 34)); + _bird1.animate(ANIM_MODE_2, NULL); + _bird1._numFrames = 16; + + _folliage1.postInit(); + _folliage1.setup(2700, 4, 1); + _folliage1.setPosition(Common::Point(188, 37)); + _folliage1.fixPriority(26); + + _bird2.postInit(); + _bird2.setup(2750, 2, 1); + _bird2.setPosition(Common::Point(188, 34)); + _bird2.hide(); + + _bird1.setAction(&_action1); + + _folliage2.postInit(); + _folliage2.setup(2750, 3, 1); + _folliage2.setPosition(Common::Point(9, 167)); + _folliage2.fixPriority(252); + _folliage2.setAction(&_action2); + + _folliage3.postInit(); + _folliage3.setup(2750, 4, 1); + _folliage3.setPosition(Common::Point(-10, 25)); + _folliage3.animate(ANIM_MODE_1, NULL); + _folliage3.setStrip2(4); + _folliage3._moveRate = 20; + _folliage3.setAction(&_action3); + + _folliage4.postInit(); + _folliage4.fixPriority(26); + _folliage4.setup(2750, 5, 1); + _folliage4.setPosition(Common::Point(258, 33)); + _folliage4.setAction(&_action4); + + _folliage5.postInit(); + _folliage5.fixPriority(26); + _folliage5.setup(2750, 6, 1); + _folliage5.setPosition(Common::Point(61, 38)); + _folliage5.setAction(&_action5); + + _folliage6.postInit(); + _folliage6.fixPriority(26); + _folliage6.setup(2750, 7, 1); + _folliage6.setPosition(Common::Point(69, 37)); + _folliage6.setAction(&_action6); + + _folliage7.postInit(); + _folliage7.fixPriority(26); + _folliage7.setup(2750, 8, 1); + _folliage7.setPosition(Common::Point(80, 35)); + _folliage7.setAction(&_action7); _ghoulHome1.setDetails(Rect(29, 50, 35, 56), 2750, 3, -1, 5, 1, NULL); _ghoulHome2.setDetails(Rect(47, 36, 54, 42), 2750, 3, -1, 5, 1, NULL); @@ -3966,20 +3965,20 @@ void Scene2750::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.animate(ANIM_MODE_NONE, NULL); R2_GLOBALS._player.setPosition(Common::Point(81, 165)); R2_GLOBALS._events.setCursor(CURSOR_WALK); - _field416 = 1204; + _stripNumber = 1204; _sceneMode = 11; - _stripManager.start(_field416, this); + _stripManager.start(_stripNumber, this); } else { _sceneMode = 2750; - _field412 = 1; + _areaMode = 1; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2750, &R2_GLOBALS._player, NULL); } } else if (R2_GLOBALS._sceneManager._previousScene == 2800) { _sceneMode = 2751; - _field412 = 3; + _areaMode = 3; R2_GLOBALS._player.setAction(&_sequenceManager, this, 2751, &R2_GLOBALS._player, NULL); } else { - _field412 = 1; + _areaMode = 1; R2_GLOBALS._player.setPosition(Common::Point(90, 137)); R2_GLOBALS._player.setStrip(3); R2_GLOBALS._player.enableControl(); @@ -3988,19 +3987,19 @@ void Scene2750::postInit(SceneObjectList *OwnerList) { void Scene2750::signal() { switch (_sceneMode) { case 10: - switch (_field414) { + switch (_moveMode) { case 1: - switch (_field412) { + switch (_areaMode) { case 2: { - _sceneMode = _field414; - _field412 = 1; + _sceneMode = _moveMode; + _areaMode = 1; Common::Point pt(90, 137); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 3: { - _field412 = 2; + _areaMode = 2; Common::Point pt(140, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -4011,25 +4010,25 @@ void Scene2750::signal() { } break; case 2: { - _sceneMode = _field414; - _field412 = 2; + _sceneMode = _moveMode; + _areaMode = 2; Common::Point pt(170, 162); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 3: - switch (_field412) { + switch (_areaMode) { case 1: { - _field412 = 2; + _areaMode = 2; Common::Point pt(210, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 2: { - _sceneMode = _field414; - _field412 = 3; + _sceneMode = _moveMode; + _areaMode = 3; Common::Point pt(270, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -4040,20 +4039,20 @@ void Scene2750::signal() { } break; case 2752: - switch (_field412) { + switch (_areaMode) { case 1: - _sceneMode = _field414; + _sceneMode = _moveMode; setAction(&_sequenceManager, this, 2752, &R2_GLOBALS._player, NULL); break; case 2: { - _field412 = 1; + _areaMode = 1; Common::Point pt(20, 132); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 3: { - _field412 = 2; + _areaMode = 2; Common::Point pt(140, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -4064,23 +4063,23 @@ void Scene2750::signal() { } break; case 2753: - switch (_field412) { + switch (_areaMode) { case 1: { - _field412 = 2; + _areaMode = 2; Common::Point pt(210, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 2: { - _field412 = 3; + _areaMode = 3; Common::Point pt(300, 132); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); } break; case 3: - _sceneMode = _field414; + _sceneMode = _moveMode; setAction(&_sequenceManager, this, 2753, &R2_GLOBALS._player, NULL); break; default: @@ -4106,24 +4105,25 @@ void Scene2750::signal() { } void Scene2750::process(Event &event) { - if ((R2_GLOBALS._player._canWalk) && (event.eventType == EVENT_BUTTON_DOWN) && (R2_GLOBALS._events.getCursor() == R2_NEGATOR_GUN)) { - if (_rect1.contains(event.mousePos)) { - if (!_rect1.contains(R2_GLOBALS._player._position)) { + if ((R2_GLOBALS._player._canWalk) && (event.eventType == EVENT_BUTTON_DOWN) + && (R2_GLOBALS._events.getCursor() == R2_NEGATOR_GUN)) { + if (_walkRect1.contains(event.mousePos)) { + if (!_walkRect1.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 1; + _moveMode = 1; } - } else if (_rect2.contains(event.mousePos)) { - if (!_rect2.contains(R2_GLOBALS._player._position)) { + } else if (_walkRect2.contains(event.mousePos)) { + if (!_walkRect2.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 2; + _moveMode = 2; } - } else if (_rect3.contains(event.mousePos)) { - if (!_rect3.contains(R2_GLOBALS._player._position)) { + } else if (_walkRect3.contains(event.mousePos)) { + if (!_walkRect3.contains(R2_GLOBALS._player._position)) { event.handled = true; _sceneMode = 10; - _field414 = 3; + _moveMode = 3; } } else { event.handled = true; @@ -4132,7 +4132,7 @@ void Scene2750::process(Event &event) { if (_sceneMode == 10) { R2_GLOBALS._player.disableControl(); - switch (_field412) { + switch (_areaMode) { case 1: { Common::Point pt(140, 142); NpcMover *mover = new NpcMover(); @@ -4140,7 +4140,7 @@ void Scene2750::process(Event &event) { } break; case 2: - if (_field414 == 1) { + if (_moveMode == 1) { Common::Point pt(140, 142); NpcMover *mover = new NpcMover(); R2_GLOBALS._player.addMover(mover, &pt, this); @@ -4170,13 +4170,13 @@ void Scene2750::process(Event &event) { *--------------------------------------------------------------------------*/ Scene2800::Scene2800(): SceneExt() { - _field412 = 0; + _stripNumber = 0; } void Scene2800::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_stripNumber); } bool Scene2800::Outpost::startAction(CursorType action, Event &event) { @@ -4198,16 +4198,16 @@ bool Scene2800::Guard::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); R2_GLOBALS._events.setCursor(CURSOR_WALK); R2_GLOBALS.setFlag(47); - scene->_field412 = 1205; + scene->_stripNumber = 1205; scene->_sceneMode = 2803; - scene->_stripManager.start(scene->_field412, scene); + scene->_stripManager.start(scene->_stripNumber, scene); return true; } else if (action == R2_SONIC_STUNNER) { R2_GLOBALS._events.setCursor(CURSOR_ARROW); R2_GLOBALS._player.disableControl(); R2_GLOBALS.setFlag(47); scene->_sceneMode = 10; - scene->setAction(&scene->_sequenceManager, scene, 2802, &R2_GLOBALS._player, &scene->_actor2, &scene->_guard, NULL); + scene->setAction(&scene->_sequenceManager, scene, 2802, &R2_GLOBALS._player, &scene->_nej, &scene->_guard, NULL); return true; } else return SceneActor::startAction(action, event); @@ -4220,10 +4220,10 @@ void Scene2800::Action1::signal() { setDelay(120); Common::Point pt(330, 25); NpcMover *mover = new NpcMover(); - scene->_object1.addMover(mover, &pt, NULL); + scene->_bird.addMover(mover, &pt, NULL); } else { setDelay(1800 + R2_GLOBALS._randomSource.getRandomNumber(600)); - scene->_object1.setPosition(Common::Point(-10, 45)); + scene->_bird.setPosition(Common::Point(-10, 45)); } } @@ -4364,8 +4364,8 @@ void Scene2800::Action2::signal() { } case 13: R2_GLOBALS._events.setCursor(CURSOR_WALK); - scene->_field412 = 1207; - scene->_stripManager.start(scene->_field412, this); + scene->_stripNumber = 1207; + scene->_stripManager.start(scene->_stripNumber, this); break; case 14: { R2_GLOBALS._player.disableControl(); @@ -4431,20 +4431,20 @@ void Scene2800::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._sound2.stop(); SceneExt::postInit(); - _object1.postInit(); - _object1.setup(2750, 4, 1); - _object1.setPosition(Common::Point(-10, 25)); - _object1.animate(ANIM_MODE_1, NULL); - _object1.setStrip2(4); - _object1._moveRate = 20; - _object1.setAction(&_action1); - - _actor3.postInit(); - _actor3.setup(2802, 1, 1); - _actor3.setPosition(Common::Point(116, 80)); - _actor3.fixPriority(111); - _actor3.animate(ANIM_MODE_2, NULL); - _actor3._numFrames = 6; + _bird.postInit(); + _bird.setup(2750, 4, 1); + _bird.setPosition(Common::Point(-10, 25)); + _bird.animate(ANIM_MODE_1, NULL); + _bird.setStrip2(4); + _bird._moveRate = 20; + _bird.setAction(&_action1); + + _lightBar.postInit(); + _lightBar.setup(2802, 1, 1); + _lightBar.setPosition(Common::Point(116, 80)); + _lightBar.fixPriority(111); + _lightBar.animate(ANIM_MODE_2, NULL); + _lightBar._numFrames = 6; if (!R2_GLOBALS.getFlag(47)) { _guard.postInit(); @@ -4458,7 +4458,7 @@ void Scene2800::postInit(SceneObjectList *OwnerList) { _guard.setDetails(2800, -1, -1, -1, 1, (SceneItem *)NULL); } - _item1.setDetails(Rect(0, 0, 320, 200), 2800, -1, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 320, 200), 2800, -1, -1, -1, 1, NULL); _stripManager.setColors(60, 255); _stripManager.setFontNumber(3); @@ -4471,12 +4471,12 @@ void Scene2800::postInit(SceneObjectList *OwnerList) { if (R2_GLOBALS.getFlag(47)) { _outpost.setDetails(Rect(76, 45, 155, 90), 2800, 3, -1, -1, 2, NULL); } else { - _actor2.postInit(); - _actor2.setup(2752, 5, 1); - _actor2.animate(ANIM_MODE_NONE, NULL); - _actor2.changeZoom(100); - _actor2._moveDiff = Common::Point(2, 1); - _actor2.setPosition(Common::Point(101, 148)); + _nej.postInit(); + _nej.setup(2752, 5, 1); + _nej.animate(ANIM_MODE_NONE, NULL); + _nej.changeZoom(100); + _nej._moveDiff = Common::Point(2, 1); + _nej.setPosition(Common::Point(101, 148)); } } @@ -4498,7 +4498,8 @@ void Scene2800::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.enableControl(); } else { _sceneMode = 2801; - R2_GLOBALS._player.setAction(&_sequenceManager, this, 2801, &R2_GLOBALS._player, &_actor2, &_guard, NULL); + R2_GLOBALS._player.setAction(&_sequenceManager, this, 2801, &R2_GLOBALS._player, + &_nej, &_guard, NULL); } } @@ -4507,13 +4508,13 @@ void Scene2800::signal() { case 10: R2_GLOBALS._sound1.play(238); R2_GLOBALS._events.setCursor(CURSOR_WALK); - _field412 = 1206; + _stripNumber = 1206; _sceneMode = 2804; - _stripManager.start(_field412, this); + _stripManager.start(_stripNumber, this); break; case 11: - _actor2.remove(); - _object1.setAction(NULL); + _nej.remove(); + _bird.setAction(NULL); R2_GLOBALS._player.enableControl(CURSOR_WALK); R2_GLOBALS._player._moveDiff = Common::Point(3, 2); _outpost.setDetails(Rect(76, 45, 155, 90), 2800, 3, -1, -1, 2, NULL); @@ -4533,15 +4534,15 @@ void Scene2800::signal() { case 2803: R2_GLOBALS._player.disableControl(); _sceneMode = 10; - setAction(&_sequenceManager, this, 2803, &R2_GLOBALS._player, &_actor2, &_guard, NULL); + setAction(&_sequenceManager, this, 2803, &R2_GLOBALS._player, &_nej, &_guard, NULL); break; case 2804: R2_GLOBALS._player.disableControl(); _sceneMode = 11; - setAction(&_sequenceManager, this, 2804, &R2_GLOBALS._player, &_actor2, NULL); + setAction(&_sequenceManager, this, 2804, &R2_GLOBALS._player, &_nej, NULL); break; case 2805: - _object1.remove(); + _bird.remove(); setAction(&_action2); break; default: @@ -4616,8 +4617,8 @@ bool Scene2900::KnobLeft::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - if (scene->_field416 || scene->_altitudeChanging || - scene->_field425 != scene->_field426) { + if (scene->_majorMinorFlag || scene->_altitudeChanging || + scene->_xAmount != scene->_xComparison) { // Let your altitude stablize first SceneItem::display2(2900, 17); } else if (R2_GLOBALS._balloonAltitude / 48 == 0) { @@ -4628,7 +4629,7 @@ bool Scene2900::KnobLeft::startAction(CursorType action, Event &event) { R2_GLOBALS._sound2.fadeSound(282); scene->_altitudeChanging = true; scene->_altitudeMajorChange = -1; - scene->_field426 = 100 - ((R2_GLOBALS._balloonAltitude / 48) - 1) * 25; + scene->_xComparison = 100 - ((R2_GLOBALS._balloonAltitude / 48) - 1) * 25; } break; @@ -4653,8 +4654,8 @@ bool Scene2900::KnobRight::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: - if (scene->_field416 || scene->_altitudeChanging || - scene->_field425 != scene->_field426) { + if (scene->_majorMinorFlag || scene->_altitudeChanging || + scene->_xAmount != scene->_xComparison) { // Let your altitude stablize first SceneItem::display2(2900, 17); } else if (R2_GLOBALS._balloonAltitude / 48 >= 3) { @@ -4665,7 +4666,7 @@ bool Scene2900::KnobRight::startAction(CursorType action, Event &event) { R2_GLOBALS._sound2.fadeSound(212); scene->_altitudeChanging = true; scene->_altitudeMajorChange = 1; - scene->_field426 = 100 - ((R2_GLOBALS._balloonAltitude / 48) + 1) * 25; + scene->_xComparison = 100 - ((R2_GLOBALS._balloonAltitude / 48) + 1) * 25; } break; @@ -4703,22 +4704,22 @@ void Scene2900::Action1::signal() { Scene2900 *scene = (Scene2900 *)R2_GLOBALS._sceneManager._scene; setDelay(3); - if (!scene->_field416 && !scene->_altitudeChanging) { - scene->_field427 = 2; - scene->_field412 = 0; - } else if (scene->_field416) { + if (!scene->_majorMinorFlag && !scene->_altitudeChanging) { + scene->_fadeCounter = 2; + scene->_controlsActiveChanging = false; + } else if (scene->_majorMinorFlag) { R2_GLOBALS._sound2.fadeOut2(NULL); - } else if (scene->_field427 == 0) { + } else if (scene->_fadeCounter == 0) { R2_GLOBALS._sound2.fadeOut2(NULL); - } else if (scene->_field412 == 0) { + } else if (!scene->_controlsActiveChanging) { scene->_knobLeftContent.hide(); scene->_knobRightContent.hide(); - scene->_field412 = 1; + scene->_controlsActiveChanging = true; } else { - --scene->_field427; + --scene->_fadeCounter; scene->_knobLeftContent.show(); scene->_knobRightContent.show(); - scene->_field412 = 0; + scene->_controlsActiveChanging = false; } } @@ -4726,10 +4727,6 @@ void Scene2900::Action1::signal() { Scene2900::Map::Map() { _mapWidth = _mapHeight = 0; - _field4 = 0; - _field6 = 0; - _field8 = 0; - _fieldA = 0; _resNum = 0; _xV = _yV = 0; _bounds = Rect(40, 0, 280, 150); @@ -4935,37 +4932,37 @@ void Scene2900::Map::moveLine(int xpSrc, int ypSrc, int xpDest, int ypDest, int /*------------------------------------------------------------------------*/ Scene2900::Scene2900(): SceneExt() { - _field412 = 0; + _controlsActiveChanging = false; _altitudeChanging = false; - _field416 = false; + _majorMinorFlag = false; _balloonLocation = Common::Point(550, 550); - _field41C = 0; + _altitudeMinorChange = 0; _altitudeMajorChange = 0; _balloonScreenPos = Common::Point(160, 100); _newAltitude = 0; - _field425 = 100; - _field426 = 100; - _field427 = 0; - _field8F8 = false; + _xAmount = 100; + _xComparison = 100; + _fadeCounter = 0; + _paletteReloadNeeded = false; } void Scene2900::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_controlsActiveChanging); s.syncAsSint16LE(_altitudeChanging); - s.syncAsSint16LE(_field416); - s.syncAsSint16LE(_field41C); + s.syncAsSint16LE(_majorMinorFlag); + s.syncAsSint16LE(_altitudeMinorChange); s.syncAsSint16LE(_altitudeMajorChange); s.syncAsSint16LE(_balloonLocation.x); s.syncAsSint16LE(_balloonLocation.y); s.syncAsSint16LE(_balloonScreenPos.x); s.syncAsSint16LE(_balloonScreenPos.y); s.syncAsSint16LE(_newAltitude); - s.syncAsSint16LE(_field425); - s.syncAsSint16LE(_field426); - s.syncAsSint16LE(_field427); - s.syncAsSint16LE(_field8F8); + s.syncAsSint16LE(_xAmount); + s.syncAsSint16LE(_xComparison); + s.syncAsSint16LE(_fadeCounter); + s.syncAsSint16LE(_paletteReloadNeeded); _map.synchronize(s); } @@ -5062,16 +5059,16 @@ void Scene2900::postInit(SceneObjectList *OwnerList) { if (_balloonLocation.y <= 100) _balloonScreenPos.y = _balloonLocation.y; - _field425 = _field426 = 100 - (R2_GLOBALS._balloonAltitude / 48) * 25; + _xAmount = _xComparison = 100 - (R2_GLOBALS._balloonAltitude / 48) * 25; _map.setPosition(Common::Point(_balloonLocation.x - 120, _balloonLocation.y - 100)); _sceneMode = 11; - R2_GLOBALS._player.changeZoom(_field425); + R2_GLOBALS._player.changeZoom(_xAmount); R2_GLOBALS._player.setPosition(_balloonScreenPos); R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - _altimeterContent.setPosition(Common::Point(109 - _field425, 189)); + _altimeterContent.setPosition(Common::Point(109 - _xAmount, 189)); } R2_GLOBALS._sound1.play(211); @@ -5112,51 +5109,51 @@ void Scene2900::dispatch() { if (_sceneMode == 11) { _balloonLocation.x += balloonData[R2_GLOBALS._balloonAltitude].x; _balloonLocation.y += balloonData[R2_GLOBALS._balloonAltitude].y; - _field41C = balloonData[R2_GLOBALS._balloonAltitude].v3; + _altitudeMinorChange = balloonData[R2_GLOBALS._balloonAltitude].v3; - if (_field41C == 0) { - _field416 = false; + if (_altitudeMinorChange == 0) { + _majorMinorFlag = false; } else { - _field416 = true; + _majorMinorFlag = true; _altitudeChanging = false; - _field426 = 100 - ((R2_GLOBALS._balloonAltitude / 48) + _field41C) * 25; + _xComparison = 100 - ((R2_GLOBALS._balloonAltitude / 48) + _altitudeMinorChange) * 25; } // Zooming/altitude balloon change - if (_field425 == _field426) { - _field416 = false; + if (_xAmount == _xComparison) { + _majorMinorFlag = false; } else { - if (!_field416) { - _field425 = _field425 - _altitudeMajorChange; + if (!_majorMinorFlag) { + _xAmount = _xAmount - _altitudeMajorChange; } else { - _field425 = _field425 - _field41C; + _xAmount = _xAmount - _altitudeMinorChange; } - if (_field41C == -1 || _altitudeMajorChange == -1) { + if (_altitudeMinorChange == -1 || _altitudeMajorChange == -1) { if (_altimeterContent._frame == 1) { _altimeterContent.setFrame2(10); } else { _altimeterContent.setFrame2(_altimeterContent._frame - 1); } - } else if (_field41C == -1 || _altitudeMajorChange == 1) { + } else if (_altitudeMinorChange == -1 || _altitudeMajorChange == 1) { if (_altimeterContent._frame == 10) _altimeterContent.setFrame2(1); else _altimeterContent.setFrame2(_altimeterContent._frame + 1); } - _altimeterContent.setPosition(Common::Point(109 - _field425, 189)); - R2_GLOBALS._player.changeZoom(_field425); + _altimeterContent.setPosition(Common::Point(109 - _xAmount, 189)); + R2_GLOBALS._player.changeZoom(_xAmount); } - if (!_field8F8) { + if (!_paletteReloadNeeded) { R2_GLOBALS._scenePalette.loadPalette(2950); R2_GLOBALS._scenePalette.refresh(); } R2_GLOBALS._balloonPosition = _map.setPosition( - Common::Point(_balloonLocation.x - 120, _balloonLocation.y - 100), !_field8F8); - _field8F8 = true; + Common::Point(_balloonLocation.x - 120, _balloonLocation.y - 100), !_paletteReloadNeeded); + _paletteReloadNeeded = true; if (_balloonLocation.x <= 120) _balloonScreenPos.x = _balloonLocation.x + 40; @@ -5168,7 +5165,7 @@ void Scene2900::dispatch() { R2_GLOBALS._player.setPosition(_balloonScreenPos); - if ((_balloonLocation.x % 100) == 50 && (_balloonLocation.y % 100) == 50 && !_field416) { + if ((_balloonLocation.x % 100) == 50 && (_balloonLocation.y % 100) == 50 && !_majorMinorFlag) { // At an altitude change point, so calculate new altitude _newAltitude = R2_GLOBALS._balloonAltitude; if (_altitudeChanging) { diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.h b/engines/tsage/ringworld2/ringworld2_scenes2.h index f90126b5a1..1d0cfc41f8 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes2.h +++ b/engines/tsage/ringworld2/ringworld2_scenes2.h @@ -69,9 +69,9 @@ public: bool _exitingFlag; int _mazePlayerMode; - NamedHotspot _item1; - SceneActor _object1; - SceneActor _objList1[11]; + NamedHotspot _background; + SceneActor _companion; + SceneActor _persons[11]; WestExit _westExit; EastExit _eastExit; SouthExit _southExit; @@ -92,10 +92,10 @@ public: }; class Scene2350 : public SceneExt { - class Actor2 : public SceneActor { + class Companion : public SceneActor { virtual bool startAction(CursorType action, Event &event); }; - class Actor3 : public SceneActor { + class Balloon : public SceneActor { virtual bool startAction(CursorType action, Event &event); }; @@ -106,14 +106,13 @@ class Scene2350 : public SceneExt { virtual void changeScene(); }; public: - SpeakerQuinn _quinnSpeaker; SpeakerPharisha _pharishaSpeaker; - NamedHotspot _item1; - SceneActor _actor1; - Actor2 _actor2; - Actor3 _actor3; - Actor3 _actor4; + NamedHotspot _background; + SceneActor _person; + Companion _companion; + Balloon _balloon; + Balloon _harness; ExitUp _exitUp; ExitWest _exitWest; SequenceManager _sequenceManager; @@ -125,15 +124,15 @@ public: }; class Scene2400 : public SceneExt { - class Exit1 : public SceneExit { + class WestExit : public SceneExit { virtual void changeScene(); }; - class Exit2 : public SceneExit { + class EastExit : public SceneExit { virtual void changeScene(); }; public: - Exit1 _exit1; - Exit2 _exit2; + WestExit _westExit; + EastExit _eastExit; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -153,7 +152,7 @@ class Scene2425 : public SceneExt { public: virtual bool startAction(CursorType action, Event &event); }; - class Item4 : public NamedHotspot { + class Background : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; @@ -175,7 +174,7 @@ public: RopeDest1 _ropeDest1; RopeDest2 _ropeDest2; Crevasse _crevasse; - Item4 _item4; + Background _background; Rope _rope; Pictographs _pictographs1; Pictographs _pictographs2; @@ -188,7 +187,7 @@ public: }; class Scene2430 : public SceneExt { - class Actor1 : public SceneActor { + class Companion : public SceneActor { public: bool startAction(CursorType action, Event &event); }; @@ -206,20 +205,20 @@ class Scene2430 : public SceneExt { virtual void changeScene(); }; public: - NamedHotspot _item1; - NamedHotspot _item2; - NamedHotspot _item3; - NamedHotspot _item4; - NamedHotspot _item5; - NamedHotspot _item6; - NamedHotspot _item7; - NamedHotspot _item8; - NamedHotspot _item9; - NamedHotspot _item10; - NamedHotspot _item11; - NamedHotspot _item12; - NamedHotspot _item13; - Actor1 _actor1; + NamedHotspot _background; + NamedHotspot _bottles2; + NamedHotspot _furnishings; + NamedHotspot _rug1; + NamedHotspot _mirror; + NamedHotspot _garments; + NamedHotspot _bed; + NamedHotspot _towel; + NamedHotspot _bottles1; + NamedHotspot _post; + NamedHotspot _clothesPile1; + NamedHotspot _clothesPile2; + NamedHotspot _rug2; + Companion _companion; GunPowder _gunPowder; OilLamp _oilLamp; Exit1 _exit1; @@ -261,7 +260,7 @@ public: }; class Scene2440 : public SceneExt { - class Actor1 : public SceneActor { + class Companion : public SceneActor { public: bool startAction(CursorType action, Event &event); }; @@ -275,14 +274,14 @@ class Scene2440 : public SceneExt { virtual void changeScene(); }; public: - NamedHotspot _item1; - NamedHotspot _item2; - NamedHotspot _item3; - NamedHotspot _item4; - NamedHotspot _item5; - NamedHotspot _item6; - NamedHotspot _item7; - Actor1 _actor1; + NamedHotspot _background; + NamedHotspot _garments; + NamedHotspot _bedspread; + NamedHotspot _post; + NamedHotspot _rug; + NamedHotspot _furnishings; + NamedHotspot _bottles; + Companion _companion; OilLamp _oilLamp; Exit1 _exit1; SequenceManager _sequenceManager; @@ -373,10 +372,10 @@ public: SpeakerSeeker _seekerSpeaker; SpeakerMiranda _mirandaSpeaker; SpeakerWebbster2500 _webbsterSpeaker; - NamedHotspot _item1; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; + NamedHotspot _background; + SceneActor _companion; + SceneActor _quinn; + SceneActor _ship; Exit1 _exit1; SequenceManager _sequenceManager; @@ -385,7 +384,7 @@ public: }; class Scene2525 : public SceneExt { - class Item5 : public NamedHotspot { + class StopCock : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; @@ -400,13 +399,13 @@ class Scene2525 : public SceneExt { virtual void changeScene(); }; public: - NamedHotspot _item1; - NamedHotspot _item2; - NamedHotspot _item3; - NamedHotspot _item4; - Item5 _item5; - SceneActor _actor1; - SceneActor _actor2; + NamedHotspot _background; + NamedHotspot _machine; + NamedHotspot _pipes1; + NamedHotspot _pipes2; + StopCock _stopcock; + SceneActor _companion; + SceneActor _compressor; GlassDome _glassDome; Exit1 _exit1; SequenceManager _sequenceManager; @@ -432,11 +431,11 @@ class Scene2530 : public SceneExt { }; public: NamedHotspot _background; - NamedHotspot _item2; + NamedHotspot _crank2; NamedHotspot _shelf; NamedHotspot _item4; - NamedHotspot _item5; - SceneActor _actor1; + NamedHotspot _rope; + SceneActor _companion; Flask _flask; Crank _crank; Exit1 _exit1; @@ -540,7 +539,7 @@ public: Rect _walkRect1, _walkRect2, _walkRect3; Rect _walkRect4, _walkRect5, _walkRect6; SequenceManager _sequenceManager; - int _field412, _field414, _field416; + int _areaMode, _moveMode, _stripNumber; Scene2700(); virtual void synchronize(Serializer &s); @@ -596,16 +595,16 @@ public: NamedHotspot _ghoulHome3; NamedHotspot _ghoulHome4; SceneActor _nej; - SceneActor _actor2; - SceneActor _actor3; - SceneActor _actor4; - SceneActor _actor5; - SceneActor _actor6; - SceneActor _actor7; - SceneActor _actor8; - SceneActor _actor9; - SceneActor _actor10; - SceneActor _actor11; + SceneActor _fire; + SceneActor _bird1; + SceneActor _folliage1; + SceneActor _bird2; + SceneActor _folliage2; + SceneActor _folliage3; + SceneActor _folliage4; + SceneActor _folliage5; + SceneActor _folliage6; + SceneActor _folliage7; Action1 _action1; Action2 _action2; Action3 _action3; @@ -615,9 +614,9 @@ public: Action7 _action7; Area1 _area1; Area2 _area2; - Rect _rect1, _rect2, _rect3; + Rect _walkRect1, _walkRect2, _walkRect3; SequenceManager _sequenceManager; - int _field412, _field414, _field416; + int _areaMode, _moveMode, _stripNumber; Scene2750(); virtual void synchronize(Serializer &s); @@ -651,16 +650,16 @@ public: SpeakerQuinn2800 _quinnSpeaker; SpeakerNej2800 _nejSpeaker; SpeakerGuard2800 _guardSpeaker; - NamedHotspot _item1; + NamedHotspot _background; Outpost _outpost; Guard _guard; - SceneActor _actor2; - SceneActor _actor3; - SceneObject _object1; + SceneActor _nej; + SceneActor _lightBar; + SceneObject _bird; Action1 _action1; Action2 _action2; SequenceManager _sequenceManager; - int _field412; + int _stripNumber; Scene2800(); virtual void synchronize(Serializer &s); @@ -710,10 +709,6 @@ class Scene2900 : public SceneExt { void drawBlock(const byte *data, int xp, int yp, const Rect &r1, const Rect &r2); public: int _mapWidth, _mapHeight; - int _field4; - int _field6; - int _field8; - int _fieldA; int _resNum; int _xV, _yV; Rect _bounds; @@ -741,18 +736,18 @@ public: Map _map; SceneText _skipText; - int _field412; + bool _controlsActiveChanging; bool _altitudeChanging; - bool _field416; - int _field41C; + bool _majorMinorFlag; + int _altitudeMinorChange; int _altitudeMajorChange; Common::Point _balloonLocation; Common::Point _balloonScreenPos; int _newAltitude; - int _field425; - int _field426; - int _field427; - bool _field8F8; + int _xAmount; + int _xComparison; + int _fadeCounter; + bool _paletteReloadNeeded; Scene2900(); virtual void synchronize(Serializer &s); diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp index 5cca1ee483..788b8c77dd 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp @@ -35,13 +35,13 @@ namespace Ringworld2 { *--------------------------------------------------------------------------*/ Scene3100::Scene3100() { - _field412 = 0; + _fadeSound = false; } void Scene3100::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_fadeSound); } bool Scene3100::Guard::startAction(CursorType action, Event &event) { @@ -84,20 +84,21 @@ void Scene3100::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._characterIndex = R2_QUINN; R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _item2.setDetails(Rect(212, 97, 320, 114), 3100, 3, -1, -1, 1, NULL); - _item1.setDetails(Rect(0, 0, 480, 200), 3100, 0, -1, -1, 1, NULL); - _field412 = 0; + _hammerHead.postInit(); + _hammerHead2.setDetails(Rect(212, 97, 320, 114), 3100, 3, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 480, 200), 3100, 0, -1, -1, 1, NULL); + _fadeSound = false; if (R2_GLOBALS._sceneManager._previousScene == 1000) { if (R2_GLOBALS._player._oldCharacterScene[R2_QUINN] == 3100) { _sceneMode = 3102; - _actor3.postInit(); - _actor4.postInit(); - _actor5.postInit(); + _ghoul.postInit(); + _technicians.postInit(); + _deadBodies.postInit(); R2_GLOBALS._sound1.play(274); _sound1.fadeSound(130); - setAction(&_sequenceManager, this, 3102, &_actor1, &R2_GLOBALS._player, &_actor3, &_actor4, &_actor5, NULL); + setAction(&_sequenceManager, this, 3102, &_hammerHead, &R2_GLOBALS._player, + &_ghoul, &_technicians, &_deadBodies, NULL); } else { _guard.postInit(); _guard.setup(3110, 5, 1); @@ -105,27 +106,28 @@ void Scene3100::postInit(SceneObjectList *OwnerList) { _guard.setPosition(Common::Point(10, 149)); _guard.setDetails(3100, 6, -1, -1, 2, (SceneItem *)NULL); - _actor4.postInit(); - _actor4.setup(3103, 1, 1); - _actor4.setPosition(Common::Point(278, 113)); - _actor4.setDetails(3100, 9, -1, -1, 2, (SceneItem *)NULL); - _actor4.animate(ANIM_MODE_2, NULL); + _technicians.postInit(); + _technicians.setup(3103, 1, 1); + _technicians.setPosition(Common::Point(278, 113)); + _technicians.setDetails(3100, 9, -1, -1, 2, (SceneItem *)NULL); + _technicians.animate(ANIM_MODE_2, NULL); - _field412 = 1; - _actor1.setDetails(3100, 3, -1, -1, 2, (SceneItem *)NULL); + _fadeSound = true; + _hammerHead.setDetails(3100, 3, -1, -1, 2, (SceneItem *)NULL); R2_GLOBALS._sound1.play(243); R2_GLOBALS._sound2.play(130); _sceneMode = 3100; - setAction(&_sequenceManager, this, 3100, &R2_GLOBALS._player, &_actor1, NULL); + setAction(&_sequenceManager, this, 3100, &R2_GLOBALS._player, &_hammerHead, NULL); } } else if (R2_GLOBALS._sceneManager._previousScene == 3255) { _sceneMode = 3101; - _actor2.postInit(); - _actor3.postInit(); - _field412 = 1; + _miranda.postInit(); + _ghoul.postInit(); + _fadeSound = true; - setAction(&_sequenceManager, this, 3101, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL); + setAction(&_sequenceManager, this, 3101, &R2_GLOBALS._player, &_hammerHead, + &_miranda, &_ghoul, NULL); } else { _guard.postInit(); _guard.setup(3110, 5, 1); @@ -133,16 +135,16 @@ void Scene3100::postInit(SceneObjectList *OwnerList) { _guard.setPosition(Common::Point(10, 149)); _guard.setDetails(3100, 6, -1, -1, 2, (SceneItem *)NULL); - _actor4.postInit(); - _actor4.setup(3103, 1, 1); - _actor4.setPosition(Common::Point(278, 113)); - _actor4.setDetails(3100, 9, -1, -1, 2, (SceneItem *)NULL); - _actor4.animate(ANIM_MODE_2, NULL); + _technicians.postInit(); + _technicians.setup(3103, 1, 1); + _technicians.setPosition(Common::Point(278, 113)); + _technicians.setDetails(3100, 9, -1, -1, 2, (SceneItem *)NULL); + _technicians.animate(ANIM_MODE_2, NULL); - _actor1.postInit(); - _actor1.setup(3104, 4, 1); - _actor1.setPosition(Common::Point(143, 104)); - _actor1.setDetails(3100, 3, -1, -1, 2, (SceneItem *)NULL); + _hammerHead.postInit(); + _hammerHead.setup(3104, 4, 1); + _hammerHead.setPosition(Common::Point(143, 104)); + _hammerHead.setDetails(3100, 3, -1, -1, 2, (SceneItem *)NULL); R2_GLOBALS._player.setup(3110, 3, 1); R2_GLOBALS._player.changeZoom(50); @@ -189,13 +191,13 @@ void Scene3100::signal() { } void Scene3100::dispatch() { - if ((_sceneMode == 3100) && (_field412 != 0) && (R2_GLOBALS._player._position.y == 104)) { - _field412 = 0; + if ((_sceneMode == 3100) && _fadeSound && (R2_GLOBALS._player._position.y == 104)) { + _fadeSound = false; R2_GLOBALS._sound2.fadeOut2(NULL); } - if ((_sceneMode == 3101) && (_field412 != 0) && (R2_GLOBALS._player._position.y < 104)) { - _field412 = 0; + if ((_sceneMode == 3101) && _fadeSound && (R2_GLOBALS._player._position.y < 104)) { + _fadeSound = false; _sound1.fadeSound(130); } @@ -208,13 +210,13 @@ void Scene3100::dispatch() { *--------------------------------------------------------------------------*/ Scene3125::Scene3125() { - _field412 = 0; + _soundPlayed = false; } void Scene3125::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field412); + s.syncAsSint16LE(_soundPlayed); } bool Scene3125::Background::startAction(CursorType action, Event &event) { @@ -223,15 +225,15 @@ bool Scene3125::Background::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: if (_useLineNum != -1) - SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; case CURSOR_LOOK: if (_lookLineNum != -1) - SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; case CURSOR_TALK: if (_talkLineNum != -1) - SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; default: return scene->display(action, event); @@ -248,13 +250,13 @@ bool Scene3125::Table::startAction(CursorType action, Event &event) { case CURSOR_USE: R2_GLOBALS._player.disableControl(); scene->_sceneMode = 3125; - scene->setAction(&scene->_sequenceManager1, scene, 3125, &R2_GLOBALS._player, NULL); + scene->setAction(&scene->_sequenceManager, scene, 3125, &R2_GLOBALS._player, NULL); break; case CURSOR_LOOK: - SceneItem::display(3125, 15, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3125, 15, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; case CURSOR_TALK: - SceneItem::display(3125, 13, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3125, 13, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; default: return SceneHotspot::startAction(action, event); @@ -272,15 +274,15 @@ bool Scene3125::Computer::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); scene->_ghoul4.postInit(); scene->_sceneMode = 3126; - scene->setAction(&scene->_sequenceManager1, scene, 3126, &R2_GLOBALS._player, + scene->setAction(&scene->_sequenceManager, scene, 3126, &R2_GLOBALS._player, &scene->_ghoul1, &scene->_ghoul2, &scene->_ghoul3, &scene->_door, &scene->_ghoul4, NULL); break; case CURSOR_LOOK: - SceneItem::display(3125, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3125, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; case CURSOR_TALK: - SceneItem::display(3125, 13, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3125, 13, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); break; default: return SceneHotspot::startAction(action, event); @@ -298,14 +300,14 @@ bool Scene3125::Door::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 3176; - scene->setAction(&scene->_sequenceManager1, scene, 3176, &R2_GLOBALS._player, &scene->_door, NULL); + scene->setAction(&scene->_sequenceManager, scene, 3176, &R2_GLOBALS._player, &scene->_door, NULL); return true; } void Scene3125::postInit(SceneObjectList *OwnerList) { loadScene(3125); SceneExt::postInit(); - _field412 = 0; + _soundPlayed = false; _door.postInit(); _door.setup(3175, 1, 1); @@ -336,7 +338,7 @@ void Scene3125::postInit(SceneObjectList *OwnerList) { if (R2_GLOBALS._player._oldCharacterScene[R2_MIRANDA] == 3250) { _sceneMode = 3175; - setAction(&_sequenceManager1, this, 3175, &R2_GLOBALS._player, &_door, NULL); + setAction(&_sequenceManager, this, 3175, &R2_GLOBALS._player, &_door, NULL); } else { R2_GLOBALS._player.setup(30, 5, 1); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); @@ -349,9 +351,9 @@ void Scene3125::postInit(SceneObjectList *OwnerList) { void Scene3125::signal() { switch (_sceneMode) { case 3125: - SceneItem::display(3125, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3125, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); _sceneMode = 3127; - setAction(&_sequenceManager1, this, 3127, &R2_GLOBALS._player, NULL); + setAction(&_sequenceManager, this, 3127, &R2_GLOBALS._player, NULL); break; case 3126: R2_GLOBALS.setFlag(79); @@ -366,9 +368,9 @@ void Scene3125::signal() { } void Scene3125::dispatch() { - if ((_sceneMode == 3126) && (_ghoul1._frame == 2) && (_field412 == 0)) { - _field412 = 1; + if ((_sceneMode == 3126) && (_ghoul1._frame == 2) && !_soundPlayed) { R2_GLOBALS._sound1.play(265); + _soundPlayed = true; } Scene::dispatch(); } @@ -399,7 +401,7 @@ bool Scene3150::LightFixture::startAction(CursorType action, Event &event) { scene->_sceneMode = 3155; scene->setAction(&scene->_sequenceManager, scene, 3155, &R2_GLOBALS._player, &scene->_bulbOrWire, NULL); } else { - SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; default: @@ -434,7 +436,7 @@ bool Scene3150::Toilet::startAction(CursorType action, Event &event) { scene->_sceneMode = 3159; scene->setAction(&scene->_sequenceManager, scene, 3159, &R2_GLOBALS._player, &scene->_foodTray, NULL); } else { - SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } return true; default: @@ -475,7 +477,7 @@ bool Scene3150::FoodTray::startAction(CursorType action, Event &event) { return true; } -bool Scene3150::Actor6::startAction(CursorType action, Event &event) { +bool Scene3150::ToiletFlush::startAction(CursorType action, Event &event) { Scene3150 *scene = (Scene3150 *)R2_GLOBALS._sceneManager._scene; if (action == CURSOR_USE) { @@ -490,7 +492,7 @@ bool Scene3150::Actor6::startAction(CursorType action, Event &event) { scene->setAction(&scene->_sequenceManager, scene, 3152, &R2_GLOBALS._player, &scene->_water, NULL); } } else { - SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(3150, 42, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); } } else { R2_GLOBALS._player.disableControl(); @@ -697,7 +699,7 @@ void Scene3150::postInit(SceneObjectList *OwnerList) { setAction(&_sequenceManager, this, 3156, &R2_GLOBALS._player, &_guard, &_doorBars, &_foodTray, NULL); } else { - if (R2_GLOBALS._v56AA0 != 2) + if ((R2_GLOBALS._v56AA0 != 1) && (R2_GLOBALS._v56AA0 != 2)) ++R2_GLOBALS._v56AA0; R2_GLOBALS._player.setup(30, 3, 1); @@ -804,25 +806,25 @@ void Scene3150::dispatch() { * *--------------------------------------------------------------------------*/ -bool Scene3175::Item1::startAction(CursorType action, Event &event) { +bool Scene3175::RoomItem::startAction(CursorType action, Event &event) { Scene3175 *scene = (Scene3175 *)R2_GLOBALS._sceneManager._scene; switch (action) { case CURSOR_USE: if (_useLineNum != -1) { - SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_LOOK: if (_lookLineNum != -1) { - SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_TALK: if (_talkLineNum != -1) { - SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; @@ -839,19 +841,19 @@ bool Scene3175::Corpse::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: if (_useLineNum != -1) { - SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_LOOK: if (_lookLineNum != -1) { - SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_TALK: if (_talkLineNum != -1) { - SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; @@ -873,11 +875,11 @@ bool Scene3175::Door::startAction(CursorType action, Event &event) { return true; break; case CURSOR_LOOK: - SceneItem::display(3175, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3175, 9, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; break; case CURSOR_TALK: - SceneItem::display(3175, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3175, 10, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; break; default: @@ -895,17 +897,17 @@ void Scene3175::postInit(SceneObjectList *OwnerList) { _door.setPosition(Common::Point(35, 72)); _door.setDetails(3175, 9, 10, -1, 1, (SceneItem *)NULL); - _actor2.postInit(); - _actor2.setup(3175, 2, 1); - _actor2.setPosition(Common::Point(87, 148)); + _computer.postInit(); + _computer.setup(3175, 2, 1); + _computer.setPosition(Common::Point(87, 148)); _corpse.postInit(); _corpse.setup(3175, 3, 1); _corpse.setPosition(Common::Point(199, 117)); _corpse.setDetails(3175, 15, 16, 17, 1, (SceneItem *)NULL); - _item2.setDetails(12, 3175, 3, 1, 5); - _item3.setDetails(11, 3175, 6, 7, 8); + _table.setDetails(12, 3175, 3, 1, 5); + _autopsies.setDetails(11, 3175, 6, 7, 8); _background.setDetails(Rect(0, 0, 320, 200), 3175, 0, 1, 2, 1, NULL); R2_GLOBALS._player.postInit(); @@ -948,11 +950,12 @@ void Scene3200::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor3.postInit(); - _actor2.postInit(); + _rocko.postInit(); + _jocko.postInit(); + _socko.postInit(); - setAction(&_sequenceManager, this, 3200 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, &_actor3, NULL); + setAction(&_sequenceManager, this, 3200 + R2_GLOBALS._randomSource.getRandomNumber(1), + &_rocko, &_jocko, &_socko, NULL); } void Scene3200::signal() { @@ -976,10 +979,11 @@ void Scene3210::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor2.postInit(); + _captain.postInit(); + _private.postInit(); - setAction(&_sequenceManager, this, 3210 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, NULL); + setAction(&_sequenceManager, this, 3210 + R2_GLOBALS._randomSource.getRandomNumber(1), + &_captain, &_private, NULL); } void Scene3210::signal() { @@ -1003,10 +1007,11 @@ void Scene3220::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor2.postInit(); + _rocko.postInit(); + _jocko.postInit(); - setAction(&_sequenceManager, this, 3220 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, NULL); + setAction(&_sequenceManager, this, 3220 + R2_GLOBALS._randomSource.getRandomNumber(1), + &_rocko, &_jocko, NULL); } void Scene3220::signal() { @@ -1030,11 +1035,12 @@ void Scene3230::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor2.postInit(); - _actor3.postInit(); + _rocko.postInit(); + _jocko.postInit(); + _ghoul.postInit(); - setAction(&_sequenceManager, this, 3230 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, &_actor3, NULL); + setAction(&_sequenceManager, this, 3230 + R2_GLOBALS._randomSource.getRandomNumber(1), + &_rocko, &_jocko, &_ghoul, NULL); } void Scene3230::signal() { @@ -1059,10 +1065,11 @@ void Scene3240::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor2.postInit(); + _teal.postInit(); + _webbster.postInit(); - setAction(&_sequenceManager, this, 3240 + R2_GLOBALS._randomSource.getRandomNumber(1), &_actor1, &_actor2, NULL); + setAction(&_sequenceManager, this, 3240 + R2_GLOBALS._randomSource.getRandomNumber(1), + &_teal, &_webbster, NULL); } void Scene3240::signal() { @@ -1086,17 +1093,18 @@ void Scene3245::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor2.postInit(); + _ralf.postInit(); + _tomko.postInit(); if (R2_GLOBALS._scientistConvIndex < 4) ++R2_GLOBALS._scientistConvIndex; if (R2_GLOBALS._scientistConvIndex >= 4) { - SceneItem::display(1200, 7, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(1200, 7, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); signal(); } else { - setAction(&_sequenceManager, this, 3244 + R2_GLOBALS._scientistConvIndex, &_actor1, &_actor2, NULL); + setAction(&_sequenceManager, this, 3244 + R2_GLOBALS._scientistConvIndex, + &_ralf, &_tomko, NULL); } } @@ -1115,19 +1123,19 @@ bool Scene3250::Item::startAction(CursorType action, Event &event) { switch (action) { case CURSOR_USE: if (_useLineNum != -1) { - SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _useLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_LOOK: if (_lookLineNum != -1) { - SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _lookLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; case CURSOR_TALK: if (_talkLineNum != -1) { - SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(_resNum, _talkLineNum, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); return true; } break; @@ -1202,9 +1210,9 @@ void Scene3250::postInit(SceneObjectList *OwnerList) { switch (R2_GLOBALS._player._oldCharacterScene[R2_MIRANDA]) { case 1200: _sceneMode = 3250; - _actor4.postInit(); + _grate.postInit(); R2_GLOBALS._player._effect = 0; - setAction(&_sequenceManager, this, 3250, &R2_GLOBALS._player, &_actor4, NULL); + setAction(&_sequenceManager, this, 3250, &R2_GLOBALS._player, &_grate, NULL); break; case 3125: if (R2_GLOBALS.getFlag(79)) { @@ -1295,10 +1303,10 @@ void Scene3255::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._sound1.play(267); R2_GLOBALS._sound2.play(268); _sceneMode = 3257; - _actor3.postInit(); + _door.postInit(); _quinn.postInit(); _quinn._effect = 1; - setAction(&_sequenceManager, this, 3257, &R2_GLOBALS._player, &_quinn, &_actor3, NULL); + setAction(&_sequenceManager, this, 3257, &R2_GLOBALS._player, &_quinn, &_door, NULL); } else { _teal.postInit(); _teal.setup(303, 1, 1); @@ -1320,7 +1328,7 @@ void Scene3255::signal() { _ghoul2.postInit(); _ghoul3.postInit(); setAction(&_sequenceManager, this, 3258, &R2_GLOBALS._player, &_quinn, - &_actor3, &_ghoul1, &_ghoul2, &_ghoul3, NULL); + &_door, &_ghoul1, &_ghoul2, &_ghoul3, NULL); break; case 3256: R2_GLOBALS._sceneManager.changeScene(3250); @@ -1334,7 +1342,7 @@ void Scene3255::signal() { R2_GLOBALS._sceneManager.changeScene(3100); break; default: - SceneItem::display(3255, 0, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + SceneItem::display(3255, 0, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); _sceneMode = 3256; setAction(&_sequenceManager, this, 3256, &R2_GLOBALS._player, NULL); } @@ -1542,7 +1550,7 @@ void Scene3260::signal() { case 3272: _sceneMode = 3273; R2_GLOBALS._events.setCursor(CURSOR_WALK); - SceneItem::display(3260, 15, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, -999); + SceneItem::display(3260, 15, 0, 280, 1, 160, 9, 1, 2, 20, 7, 154, LIST_END); R2_GLOBALS._player.disableControl(); R2_INVENTORY.setObjectScene(R2_TOOLBOX, 3); R2_INVENTORY.setObjectScene(R2_LASER_HACKSAW, 3); @@ -1600,9 +1608,9 @@ void Scene3275::postInit(SceneObjectList *OwnerList) { _cellExit.setDetails(Rect(398, 60, 439, 118), SHADECURSOR_UP, 3150); _cellExit.setDest(Common::Point(418, 128)); - _actor1.postInit(); - _actor1.setup(3275, 1, 7); - _actor1.setPosition(Common::Point(419, 119)); + _doorFrame.postInit(); + _doorFrame.setup(3275, 1, 7); + _doorFrame.setPosition(Common::Point(419, 119)); _door.postInit(); _door.setup(3275, 2, 1); @@ -1661,8 +1669,8 @@ void Scene3275::signal() { void Scene3350::postInit(SceneObjectList *OwnerList) { loadScene(3350); - SceneExt::postInit(); R2_GLOBALS._uiElements._active = false; + SceneExt::postInit(); R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._sound2.play(310); @@ -1673,27 +1681,27 @@ void Scene3350::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.hide(); R2_GLOBALS._player.disableControl(); - _actor1.postInit(); - _actor1.hide(); - _actor2.postInit(); - _actor2.hide(); - _actor3.postInit(); - _actor3.hide(); - _actor4.postInit(); - _actor4.hide(); - _actor9.postInit(); - _actor9.hide(); - _actor8.postInit(); - _actor8.hide(); - _actor5.postInit(); - _actor5.hide(); - _actor6.postInit(); - _actor6.hide(); - _actor7.postInit(); - _actor7.hide(); + _miranda.postInit(); + _miranda.hide(); + _seeker.postInit(); + _seeker.hide(); + _webbster.postInit(); + _webbster.hide(); + _seatedPeople.postInit(); + _seatedPeople.hide(); + _shipFront.postInit(); + _shipFront.hide(); + _canopy.postInit(); + _canopy.hide(); + _ship.postInit(); + _ship.hide(); + _landedShip.postInit(); + _landedShip.hide(); + _shipShadow.postInit(); + _shipShadow.hide(); _sceneMode = 3350; - setAction(&_sequenceManager, this, _sceneMode, &_actor5, &_actor6, &_actor7, NULL); + setAction(&_sequenceManager, this, _sceneMode, &_ship, &_landedShip, &_shipShadow, NULL); } void Scene3350::remove() { @@ -1705,11 +1713,13 @@ void Scene3350::signal() { switch (_sceneMode) { case 3350: _sceneMode = 3351; - setAction(&_sequenceManager, this, 3351, &_actor4, &_actor9, &_actor8, NULL); + setAction(&_sequenceManager, this, 3351, &_seatedPeople, &_shipFront, &_canopy, NULL); break; case 3351: _sceneMode = 3352; - setAction(&_sequenceManager, this, 3352, &_actor4, &R2_GLOBALS._player, &_actor1, &_actor2, &_actor3, NULL); + setAction(&_sequenceManager, this, 3352, &_seeker, &R2_GLOBALS._player, + &_miranda, &_seeker, &_webbster, NULL); + break; case 3352: R2_GLOBALS._sceneManager.changeScene(3395); break; @@ -1727,8 +1737,7 @@ void Scene3350::signal() { void Scene3375::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field1488); - s.syncAsSint16LE(_field1492); + s.syncAsSint16LE(_newSceneMode); for (int i = 0; i < 4; ++i) s.syncAsSint16LE(_sceneAreas[i]); } @@ -1921,7 +1930,7 @@ void Scene3375::DownExit::changeScene() { R2_GLOBALS._player.disableControl(CURSOR_ARROW); scene->_sceneMode = 3377; - scene->_field1488 = 3381; + scene->_newSceneMode = 3381; if (R2_GLOBALS._walkwaySceneNumber != 0) { R2_GLOBALS._walkRegions.enableRegion(2); @@ -1943,7 +1952,7 @@ void Scene3375::RightExit::changeScene() { R2_GLOBALS._player.disableControl(CURSOR_ARROW); scene->_sceneMode = 3378; - scene->_field1488 = 3380; + scene->_newSceneMode = 3380; if (R2_GLOBALS._walkwaySceneNumber != 0) { R2_GLOBALS._walkRegions.enableRegion(2); @@ -1957,7 +1966,7 @@ void Scene3375::RightExit::changeScene() { } Scene3375::Scene3375() { - _field1488 = _field1492 = 0; + _newSceneMode = 0; _sceneAreas[0] = 3376; _sceneAreas[1] = 3377; @@ -2171,8 +2180,9 @@ void Scene3375::signal() { case 3377: // No break on purpose case 3378: - _sceneMode = _field1488; - _field1488 = 0; + _sceneMode = _newSceneMode; + _newSceneMode = 0; + _companion1._effect = 6; _companion1._shade = 4; _companion2._effect = 6; @@ -2190,6 +2200,7 @@ void Scene3375::signal() { else R2_GLOBALS._player.setStrip(3); R2_GLOBALS._player.enableControl(CURSOR_TALK); + break; default: _companion1.setPriority(130); _companion2.setPriority(132); @@ -2229,13 +2240,13 @@ void Scene3375::dispatch() { *--------------------------------------------------------------------------*/ Scene3385::Scene3385() { - _field11B2 = 0; + _playerStrip = 0; } void Scene3385::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field11B2); + s.syncAsSint16LE(_playerStrip); } bool Scene3385::Companion1::startAction(CursorType action, Event &event) { @@ -2340,9 +2351,9 @@ void Scene3385::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._characterScene[R2_MIRANDA] = 3385; if (R2_GLOBALS._sceneManager._previousScene == 3375) - _field11B2 = 3; + _playerStrip = 3; else - _field11B2 = 4; + _playerStrip = 4; setZoomPercents(102, 40, 200, 160); R2_GLOBALS._player.postInit(); @@ -2355,11 +2366,11 @@ void Scene3385::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.changeZoom(-1); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) - R2_GLOBALS._player.setup(20, _field11B2, 1); + R2_GLOBALS._player.setup(20, _playerStrip, 1); else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) - R2_GLOBALS._player.setup(30, _field11B2, 1); + R2_GLOBALS._player.setup(30, _playerStrip, 1); else - R2_GLOBALS._player.setup(10, _field11B2, 1); + R2_GLOBALS._player.setup(10, _playerStrip, 1); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); R2_GLOBALS._player.disableControl(); @@ -2375,9 +2386,9 @@ void Scene3385::postInit(SceneObjectList *OwnerList) { _companion1.changeZoom(-1); _companion1._effect = 1; if (R2_GLOBALS._player._characterIndex == R2_SEEKER) - _companion1.setup(10, _field11B2, 1); + _companion1.setup(10, _playerStrip, 1); else - _companion1.setup(20, _field11B2, 1); + _companion1.setup(20, _playerStrip, 1); _companion1.animate(ANIM_MODE_1, NULL); _companion1.setDetails(3385, -1, -1, -1, 1, (SceneItem *) NULL); @@ -2386,9 +2397,9 @@ void Scene3385::postInit(SceneObjectList *OwnerList) { _companion2.changeZoom(-1); _companion2._effect = 1; if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) - _companion2.setup(10, _field11B2, 1); + _companion2.setup(10, _playerStrip, 1); else - _companion2.setup(30, _field11B2, 1); + _companion2.setup(30, _playerStrip, 1); _companion2.animate(ANIM_MODE_1, NULL); _companion2.setDetails(3385, -1, -1, -1, 1, (SceneItem *) NULL); @@ -2396,7 +2407,7 @@ void Scene3385::postInit(SceneObjectList *OwnerList) { _webbster._moveDiff = Common::Point(3, 2); _webbster.changeZoom(-1); _webbster._effect = 1; - _webbster.setup(40, _field11B2, 1); + _webbster.setup(40, _playerStrip, 1); _webbster.animate(ANIM_MODE_1, NULL); _webbster.setDetails(3385, 15, -1, -1, 1, (SceneItem *) NULL); @@ -2466,13 +2477,13 @@ void Scene3385::signal() { *--------------------------------------------------------------------------*/ Scene3395::Scene3395() { - _field142E = 0; + _playerStrip = 0; } void Scene3395::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field142E); + s.syncAsSint16LE(_playerStrip); } bool Scene3395::Companion1::startAction(CursorType action, Event &event) { @@ -2563,9 +2574,9 @@ void Scene3395::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._characterScene[R2_MIRANDA] = 3395; if (R2_GLOBALS._sceneManager._previousScene == 3385) - _field142E = 3; + _playerStrip = 3; else - _field142E = 4; + _playerStrip = 4; setZoomPercents(51, 40, 200, 137); R2_GLOBALS._player.postInit(); @@ -2578,11 +2589,11 @@ void Scene3395::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.changeZoom(-1); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) - R2_GLOBALS._player.setup(20, _field142E, 1); + R2_GLOBALS._player.setup(20, _playerStrip, 1); else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) - R2_GLOBALS._player.setup(30, _field142E, 1); + R2_GLOBALS._player.setup(30, _playerStrip, 1); else - R2_GLOBALS._player.setup(10, _field142E, 1); + R2_GLOBALS._player.setup(10, _playerStrip, 1); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); R2_GLOBALS._player.disableControl(); @@ -2598,9 +2609,9 @@ void Scene3395::postInit(SceneObjectList *OwnerList) { _companion1.changeZoom(-1); _companion1._effect = 1; if (R2_GLOBALS._player._characterIndex == R2_SEEKER) - _companion1.setup(10, _field142E, 1); + _companion1.setup(10, _playerStrip, 1); else - _companion1.setup(20, _field142E, 1); + _companion1.setup(20, _playerStrip, 1); _companion1.animate(ANIM_MODE_1, NULL); _companion1.setDetails(3395, -1, -1, -1, 1, (SceneItem *) NULL); @@ -2609,9 +2620,9 @@ void Scene3395::postInit(SceneObjectList *OwnerList) { _companion2.changeZoom(-1); _companion2._effect = 1; if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) - _companion2.setup(10, _field142E, 1); + _companion2.setup(10, _playerStrip, 1); else - _companion2.setup(30, _field142E, 1); + _companion2.setup(30, _playerStrip, 1); _companion2.animate(ANIM_MODE_1, NULL); _companion2.setDetails(3395, -1, -1, -1, 1, (SceneItem *) NULL); @@ -2619,7 +2630,7 @@ void Scene3395::postInit(SceneObjectList *OwnerList) { _webbster._moveDiff = Common::Point(3, 2); _webbster.changeZoom(-1); _webbster._effect = 1; - _webbster.setup(40, _field142E, 1); + _webbster.setup(40, _playerStrip, 1); _webbster.animate(ANIM_MODE_1, NULL); _webbster.setDetails(3395, 18, -1, -1, 1, (SceneItem *) NULL); @@ -2689,13 +2700,13 @@ void Scene3395::signal() { *--------------------------------------------------------------------------*/ Scene3400::Scene3400() { - _field157C = 0; + _soundFaded = false; } void Scene3400::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field157C); + s.syncAsSint16LE(_soundFaded); } void Scene3400::postInit(SceneObjectList *OwnerList) { @@ -2703,7 +2714,7 @@ void Scene3400::postInit(SceneObjectList *OwnerList) { _sceneBounds = Rect(160, 0, 480, 200); loadScene(3400); - _field157C = 0; + _soundFaded = false; R2_GLOBALS._v558B6.set(60, 0, 260, 200); SceneExt::postInit(); R2_GLOBALS._sound1.play(317); @@ -2832,9 +2843,9 @@ void Scene3400::signal() { case 3307: case 3404: case 3408: - if (_field157C == 0) { + if (!_soundFaded) { R2_GLOBALS._sound2.fadeOut2(NULL); - _field157C = 1; + _soundFaded = true; } else { _sceneMode = 3308; _stripManager.start(3308, this); @@ -3033,7 +3044,7 @@ void Scene3500::Action1::signal() { switch(_actionIndex++) { case 0: R2_GLOBALS._player.disableControl(); - scene->_field1286 = 0; + scene->_directionChangesEnabled = false; if (scene->_field1270 != 0) { scene->_field1270 = 0; scene->_mazeChangeAmount = 0; @@ -3173,7 +3184,7 @@ void Scene3500::Action1::signal() { case 8: { R2_GLOBALS._player.enableControl(); R2_GLOBALS._player._canWalk = false; - scene->_field1286 = 1; + scene->_directionChangesEnabled = true; if ((scene->_actor1._frame % 2) == 0) { scene->_actor1._frameChange = _field1E; scene->_actor1.setFrame(scene->_actor1.changeFrame()); @@ -3274,214 +3285,6 @@ void Scene3500::Action2::synchronize(Serializer &s) { s.syncAsSint16LE(_field1E); } -/*--------------------------------------------------------------------------*/ - -Scene3500::Item4::Item4() { - _field34 = 0; -} - -void Scene3500::Item4::synchronize(Serializer &s) { - NamedHotspot::synchronize(s); - - s.syncAsSint16LE(_field34); -} - -/*--------------------------------------------------------------------------*/ - -Scene3500::Actor7::Actor7() { - _fieldA4 = 0; - _fieldA6 = 0; - _fieldA8 = 0; - _fieldAA = 0; - _fieldAC = 0; - _fieldAE = 0; -} - -void Scene3500::Actor7::synchronize(Serializer &s) { - SceneActor::synchronize(s); - - s.syncAsSint16LE(_fieldA4); - s.syncAsSint16LE(_fieldA6); - s.syncAsSint16LE(_fieldA8); - s.syncAsSint16LE(_fieldAA); - s.syncAsSint16LE(_fieldAC); - s.syncAsSint16LE(_fieldAE); -} - -void Scene3500::Actor7::sub109466(int arg1, int arg2, int arg3, int arg4, int arg5) { - _fieldAE = 0; - _fieldA4 = arg1; - _fieldA6 = arg2; - _fieldA8 = arg3; - _fieldAA = arg4; - _fieldAC = _fieldAA / _fieldA8; - - postInit(); - setup(1050, 3, 1); - fixPriority(255); - sub109663(arg5); -} - -void Scene3500::Actor7::sub1094ED() { - Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; - - scene->_field1270 = _position.x - _fieldA4; -} - -void Scene3500::Actor7::sub109663(int arg1){ - sub109693(Common::Point(_fieldA4 + arg1, _fieldA6 - (_fieldAC * arg1))); -} - -void Scene3500::Actor7::sub109693(Common::Point Pt) { - setPosition(Pt); -} - -/*--------------------------------------------------------------------------*/ - -int Scene3500::MazeUI3500::cellFromX(int x) { - return (_cellSize.x / 2) + x - (x % _cellSize.x); -} - -int Scene3500::MazeUI3500::cellFromY(int y) { - return (_cellSize.y / 2) + y - (y % _cellSize.y) - 1; -} - -int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) { - int cellX = pt.x / _cellSize.x; - int cellY = pt.y / _cellSize.y; - - if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y)) { - return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2); - } else - return -1; -} - -bool Scene3500::MazeUI3500::setMazePosition2(Common::Point &p) { - bool retVal = setMazePosition(p); - p = _mapOffset; - - return retVal; -} - -Scene3500::Scene3500() { - _fieldAF8 = 0; - _fieldB9E = 0; - _rotation = NULL; - _mazeChangeAmount = 0; - _field1270 = 0; - _field1272 = 0; - _field1274 = 0; - _mazeDirection = MAZEDIR_NONE; - _field1278 = 0; - _mazePosition.x = 0; - _mazePosition.y = 0; - _field127E = 0; - _field1280 = 0; - _field1282 = 0; - _field1284 = 0; - _field1286 = 0; -} - -void Scene3500::synchronize(Serializer &s) { - SceneExt::synchronize(s); - SYNC_POINTER(_rotation); - - s.syncAsSint16LE(_fieldAF8); - s.syncAsSint16LE(_fieldB9E); - s.syncAsSint16LE(_mazeChangeAmount); - s.syncAsSint16LE(_field1270); - s.syncAsSint16LE(_field1272); - s.syncAsSint16LE(_field1274); - s.syncAsSint16LE(_mazeDirection); - s.syncAsSint16LE(_field1278); - s.syncAsSint16LE(_mazePosition.x); - s.syncAsSint16LE(_mazePosition.y); - s.syncAsSint16LE(_field127E); - s.syncAsSint16LE(_field1280); - s.syncAsSint16LE(_field1282); - s.syncAsSint16LE(_field1284); - s.syncAsSint16LE(_field1286); -} - -void Scene3500::sub107F71(int arg1) { - switch (arg1) { - case -1: - _actor7.sub1094ED(); - if (_field1270 != 0) { - _field1270--; - _actor7.sub109663(_field1270); - } - if (_action1._field24 != 0) - _field1270 = 0; - break; - case 1: - _actor7.sub1094ED(); - if (_field1270 < 16) { - ++_field1270; - _actor7.sub109663(_field1270); - } - if (_action1._field24 != 0) - _field1270 = 0; - break; - case 88: - if ((_action == 0) || (_action1._field24 == 0)) { - // The original makes a second useless check on action, skipped - _action2.sub10831F(2); - if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != 2))) { - _action2.signal(); - } else { - _actor9.setAction(&_action2, &_actor9, NULL); - } - } - break; - case 96: - if ((_action) && (_action1._field24 != 0) && (_action2._field1E != 1)) { - _field1278 = 0; - _action1.sub108732(0); - } else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) { - _field1278 = arg1; - } else if ((_action) && (_action1._field24 == 0)) { - _action1.sub108670(1); - _action1.signal(); - } else if (_action == 0) { - _action1.sub108670(1); - setAction(&_action1, &_actor1, NULL); - } - break; - case 104: - if ((_action == 0) || (_action1._field24 == 0)) { - _action2.sub10831F(-1); - if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != -1))) { - _action2.signal(); - } else { - _actor9.setAction(&_action2, &_actor9, NULL); - } - } - break; - case 112: - if ((_action) && (_action1._field24 != 0) && (_action2._field1E != -1)) { - _field1278 = 0; - _action1.sub108732(0); - } else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) { - _field1278 = arg1; - } else if ((_action) && (_action1._field24 == 0)) { - _action1.sub108670(-1); - _action1.signal(); - } else if (_action == 0) { - _action1.sub108670(-1); - setAction(&_action1, &_actor1, NULL); - } - break; - default: - _field1270 = arg1; - _actor7.sub109663(arg1); - if (_action1._field24 != 0) { - _field1270 = 0; - } - break; - } -} - void Scene3500::Action2::sub10831F(int arg1) { Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; @@ -3555,25 +3358,83 @@ void Scene3500::Action2::signal() { } } -bool Scene3500::Item4::startAction(CursorType action, Event &event) { +/*--------------------------------------------------------------------------*/ + +Scene3500::DirectionButton::DirectionButton() { + _movementId = 0; +} + +void Scene3500::DirectionButton::synchronize(Serializer &s) { + NamedHotspot::synchronize(s); + + s.syncAsSint16LE(_movementId); +} + +bool Scene3500::DirectionButton::startAction(CursorType action, Event &event) { Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; - if (scene->_field1286 == 0) + if (!scene->_directionChangesEnabled) { return true; - - if (scene->_field1286 != 4) + } else if (action == CURSOR_USE) { + R2_GLOBALS._sound2.play(14, nullptr, 63); + scene->doMovement(_movementId); + return true; + } else { return SceneHotspot::startAction(action, event); + } +} - R2_GLOBALS._sound2.play(14); - scene->sub107F71(_field34); +/*--------------------------------------------------------------------------*/ - return true; +Scene3500::Actor7::Actor7() { + _fieldA8 = 0; + _fieldAA = 0; + _fieldAC = 0; + _fieldAE = 0; +} + +void Scene3500::Actor7::synchronize(Serializer &s) { + SceneActor::synchronize(s); + + s.syncAsSint16LE(_pos.x); + s.syncAsSint16LE(_pos.y); + s.syncAsSint16LE(_fieldA8); + s.syncAsSint16LE(_fieldAA); + s.syncAsSint16LE(_fieldAC); + s.syncAsSint16LE(_fieldAE); +} + +void Scene3500::Actor7::sub109466(int xp, int yp, int arg3, int arg4, int arg5) { + _fieldAE = 0; + _pos = Common::Point(xp, yp); + _fieldA8 = arg3; + _fieldAA = arg4; + _fieldAC = _fieldAA / _fieldA8; + + postInit(); + setup(1050, 3, 1); + fixPriority(255); + sub109663(arg5); +} + +void Scene3500::Actor7::sub1094ED() { + Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; + + scene->_field1270 = _position.x - _pos.x; +} + +void Scene3500::Actor7::sub109663(int arg1){ + changePosition(Common::Point(_pos.x + arg1, _pos.y - (_fieldAC * arg1))); +} + +void Scene3500::Actor7::changePosition(const Common::Point &pt) { + setPosition(pt); } void Scene3500::Actor7::process(Event &event) { Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; - if (scene->_field1286 == 0) + if (!scene->_directionChangesEnabled) return; if ((event.eventType == EVENT_BUTTON_DOWN) && (R2_GLOBALS._events.getCursor() == CURSOR_USE) && (_bounds.contains(event.mousePos))) { @@ -3595,26 +3456,95 @@ void Scene3500::Actor7::process(Event &event) { event.handled = true; int cx = event.mousePos.y - _fieldAE + 1; - if (_fieldA6 >= cx) { - if (_fieldA6 - _fieldAA <= cx) - sub109693(Common::Point(((_fieldA6 - cx) / 2) + _fieldA4 + ((_fieldA6 - cx) % 2), cx)); + if (_pos.y >= cx) { + if (_pos.y - _fieldAA <= cx) + changePosition(Common::Point(((_pos.y - cx) / 2) + _pos.x + ((_pos.y - cx) % 2), cx)); else - sub109693(Common::Point(_fieldA4 + _fieldA8, _fieldA6 - _fieldAA)); + changePosition(Common::Point(_pos.x + _fieldA8, _pos.y - _fieldAA)); } else { - sub109693(Common::Point(_fieldA4, _fieldA6)); + changePosition(Common::Point(_pos.x, _pos.y)); } } bool Scene3500::Actor7::startAction(CursorType action, Event &event) { Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene; - if (scene->_field1286 == 0) + if (!scene->_directionChangesEnabled) { return true; - - if (scene->_field1286 == 4) + } else if (action == CURSOR_USE) { return false; + } else { + return SceneActor::startAction(action, event); + } +} - return SceneActor::startAction(action, event); +/*--------------------------------------------------------------------------*/ + +int Scene3500::MazeUI3500::cellFromX(int x) { + return (_cellSize.x / 2) + x - (x % _cellSize.x); +} + +int Scene3500::MazeUI3500::cellFromY(int y) { + return (_cellSize.y / 2) + y - (y % _cellSize.y) - 1; +} + +int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) { + int cellX = pt.x / _cellSize.x; + int cellY = pt.y / _cellSize.y; + + if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y)) { + return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2); + } else + return -1; +} + +bool Scene3500::MazeUI3500::setMazePosition2(Common::Point &p) { + bool retVal = setMazePosition(p); + p = _mapOffset; + + return retVal; +} + +/*--------------------------------------------------------------------------*/ + +Scene3500::Scene3500() { + _fieldAF8 = 0; + _fieldB9E = 0; + _rotation = NULL; + _mazeChangeAmount = 0; + _field1270 = 0; + _field1272 = 0; + _field1274 = 0; + _mazeDirection = MAZEDIR_NONE; + _field1278 = 0; + _mazePosition.x = 0; + _mazePosition.y = 0; + _field127E = 0; + _field1280 = 0; + _field1282 = 0; + _field1284 = 0; + _directionChangesEnabled = false; +} + +void Scene3500::synchronize(Serializer &s) { + SceneExt::synchronize(s); + SYNC_POINTER(_rotation); + + s.syncAsSint16LE(_fieldAF8); + s.syncAsSint16LE(_fieldB9E); + s.syncAsSint16LE(_mazeChangeAmount); + s.syncAsSint16LE(_field1270); + s.syncAsSint16LE(_field1272); + s.syncAsSint16LE(_field1274); + s.syncAsSint16LE(_mazeDirection); + s.syncAsSint16LE(_field1278); + s.syncAsSint16LE(_mazePosition.x); + s.syncAsSint16LE(_mazePosition.y); + s.syncAsSint16LE(_field127E); + s.syncAsSint16LE(_field1280); + s.syncAsSint16LE(_field1282); + s.syncAsSint16LE(_field1284); + s.syncAsSint16LE(_directionChangesEnabled); } void Scene3500::postInit(SceneObjectList *OwnerList) { @@ -3622,7 +3552,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) { loadScene(1050); R2_GLOBALS._uiElements._active = false; - R2_GLOBALS._interfaceY = 200; + R2_GLOBALS._interfaceY = SCREEN_HEIGHT; R2_GLOBALS._v5589E.set(0, 0, 320, 200); R2_GLOBALS._sound1.play(305); @@ -3662,17 +3592,17 @@ void Scene3500::postInit(SceneObjectList *OwnerList) { _actor7.setDetails(3500, 6, 7, -1, 1, (SceneItem *)NULL); R2_GLOBALS._sound1.play(276); - _item4._field34 = 88; - _item4.setDetails(88, 3500, 18, 10, -1); + _pitchDown._movementId = 88; + _pitchDown.setDetails(88, 3500, 18, 10, -1); - _item5._field34 = 112; - _item5.setDetails(112, 3500, 9, 10, -1); + _turnLeft._movementId = 112; + _turnLeft.setDetails(112, 3500, 9, 10, -1); - _item6._field34 = 104; - _item6.setDetails(104, 3500, 15, 10, -1); + _pitchUp._movementId = 104; + _pitchUp.setDetails(104, 3500, 15, 10, -1); - _item7._field34 = 96; - _item7.setDetails(96, 3500, 12, 10, -1); + _turnRight._movementId = 96; + _turnRight.setDetails(96, 3500, 12, 10, -1); _actor8.postInit(); _actor8.setup(1050, 1, 1); @@ -3729,7 +3659,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) { _action1._field24 = 0; _mazeUI.draw(); - _field1286 = 1; + _directionChangesEnabled = true; R2_GLOBALS._player.postInit(); R2_GLOBALS._player.hide(); @@ -3738,6 +3668,85 @@ void Scene3500::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._canWalk = false; } +void Scene3500::doMovement(int id) { + switch (id) { + case -1: + _actor7.sub1094ED(); + if (_field1270 != 0) { + _field1270--; + _actor7.sub109663(_field1270); + } + if (_action1._field24 != 0) + _field1270 = 0; + break; + case 1: + _actor7.sub1094ED(); + if (_field1270 < 16) { + ++_field1270; + _actor7.sub109663(_field1270); + } + if (_action1._field24 != 0) + _field1270 = 0; + break; + case 88: + if ((_action == 0) || (_action1._field24 == 0)) { + // The original makes a second useless check on action, skipped + _action2.sub10831F(2); + if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != 2))) { + _action2.signal(); + } else { + _actor9.setAction(&_action2, &_actor9, NULL); + } + } + break; + case 96: + if ((_action) && (_action1._field24 != 0) && (_action2._field1E != 1)) { + _field1278 = 0; + _action1.sub108732(0); + } else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) { + _field1278 = id; + } else if ((_action) && (_action1._field24 == 0)) { + _action1.sub108670(1); + _action1.signal(); + } else if (_action == 0) { + _action1.sub108670(1); + setAction(&_action1, &_actor1, NULL); + } + break; + case 104: + if ((_action == 0) || (_action1._field24 == 0)) { + _action2.sub10831F(-1); + if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != -1))) { + _action2.signal(); + } else { + _actor9.setAction(&_action2, &_actor9, NULL); + } + } + break; + case 112: + if ((_action) && (_action1._field24 != 0) && (_action2._field1E != -1)) { + _field1278 = 0; + _action1.sub108732(0); + } else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) { + _field1278 = id; + } else if ((_action) && (_action1._field24 == 0)) { + _action1.sub108670(-1); + _action1.signal(); + } else if (_action == 0) { + _action1.sub108670(-1); + setAction(&_action1, &_actor1, NULL); + } + break; + default: + _field1270 = id; + _actor7.sub109663(id); + if (_action1._field24 != 0) { + _field1270 = 0; + } + break; + } +} + void Scene3500::remove() { R2_GLOBALS._sound2.fadeOut2(NULL); SceneExt::remove(); @@ -3746,69 +3755,69 @@ void Scene3500::remove() { void Scene3500::signal() { R2_GLOBALS._player.enableControl(CURSOR_USE); R2_GLOBALS._player._canWalk = false; - _field1286 = 1; + _directionChangesEnabled = true; } void Scene3500::process(Event &event) { - if (_field1286 == 0) + if (!_directionChangesEnabled) return; if (event.eventType == EVENT_KEYPRESS) { switch (event.kbd.keycode) { case Common::KEYCODE_KP7: R2_GLOBALS._sound2.play(338); - sub107F71(16); + doMovement(16); event.handled = true; break; case Common::KEYCODE_UP: case Common::KEYCODE_KP8: R2_GLOBALS._sound2.play(14, NULL, 63); - sub107F71(88); + doMovement(88); event.handled = true; break; case Common::KEYCODE_KP9: if (_field1270 < 16) R2_GLOBALS._sound2.play(338); - sub107F71(1); + doMovement(1); event.handled = true; break; case Common::KEYCODE_KP4: case Common::KEYCODE_LEFT: R2_GLOBALS._sound2.play(14, NULL, 63); - sub107F71(112); + doMovement(112); event.handled = true; break; case Common::KEYCODE_KP6: case Common::KEYCODE_RIGHT: R2_GLOBALS._sound2.play(14, NULL, 63); - sub107F71(96); + doMovement(96); event.handled = true; break; case Common::KEYCODE_KP1: R2_GLOBALS._sound2.play(338); - sub107F71(0); + doMovement(0); event.handled = true; break; case Common::KEYCODE_KP2: case Common::KEYCODE_DOWN: R2_GLOBALS._sound2.play(14, NULL, 63); - sub107F71(104); + doMovement(104); event.handled = true; break; case Common::KEYCODE_KP3: if (_field1270 != 0) R2_GLOBALS._sound2.play(338); - sub107F71(-1); + doMovement(-1); event.handled = true; break; case Common::KEYCODE_KP0: R2_GLOBALS._sound2.play(338); - sub107F71(8); + doMovement(8); event.handled = true; break; case Common::KEYCODE_KP_PERIOD: R2_GLOBALS._sound2.play(338); - sub107F71(4); + doMovement(4); event.handled = true; break; default: @@ -3820,16 +3829,16 @@ void Scene3500::process(Event &event) { _actor7.process(event); if (!event.handled) - _item4.process(event); + _pitchDown.process(event); if (!event.handled) - _item5.process(event); + _turnLeft.process(event); if (!event.handled) - _item6.process(event); + _pitchUp.process(event); if (!event.handled) - _item7.process(event); + _turnRight.process(event); Scene::process(event); } @@ -3846,7 +3855,7 @@ void Scene3500::dispatch() { if ((_field1278 != 0) && (_action1._field24 == 0)) { oldField1278 = _field1278; _field1278 = 0; - sub107F71(oldField1278); + doMovement(oldField1278); } if (!_rotation) @@ -4238,19 +4247,15 @@ void Scene3500::dispatch() { *--------------------------------------------------------------------------*/ Scene3600::Scene3600() { - _field2548 = 0; - _field254A = 0; - _field254C = 0; - _field254E = 0; + _tealDead = false; + _lightEntered = false; _ghoulTeleported = false; } void Scene3600::synchronize(Serializer &s) { SceneExt::synchronize(s); - s.syncAsSint16LE(_field2548); - s.syncAsSint16LE(_field254A); - s.syncAsSint16LE(_field254C); - s.syncAsSint16LE(_field254E); + s.syncAsSint16LE(_tealDead); + s.syncAsSint16LE(_lightEntered); s.syncAsSint16LE(_ghoulTeleported); } @@ -4277,7 +4282,7 @@ void Scene3600::Action3600::signal() { case 1: if (_field1E == 0) { _field1E = 1; - scene->_actor2.setAction(NULL); + scene->_steppingDisk.setAction(NULL); R2_GLOBALS._sound2.play(330, NULL, 0); R2_GLOBALS._sound2.fade(127, 5, 10, false, NULL); } @@ -4327,7 +4332,7 @@ void Scene3600::Action2::signal() { } } -bool Scene3600::Item5::startAction(CursorType action, Event &event) { +bool Scene3600::LightShaft::startAction(CursorType action, Event &event) { Scene3600 *scene = (Scene3600 *)R2_GLOBALS._sceneManager._scene; if ((action != CURSOR_USE) || (scene->_action1._field1E == 0)) @@ -4338,10 +4343,10 @@ bool Scene3600::Item5::startAction(CursorType action, Event &event) { R2_GLOBALS._player.disableControl(); scene->_sceneMode = 3624; - scene->_actor10.setStrip2(-1); - scene->_actor11.setStrip2(-1); - scene->_actor12.setStrip2(-1); - scene->_actor4.setStrip2(-1); + scene->_quinn.setStrip2(-1); + scene->_seeker.setStrip2(-1); + scene->_miranda.setStrip2(-1); + scene->_webbster.setStrip2(-1); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) R2_GLOBALS._player.setAction(&scene->_sequenceManager3, scene, 3611, &R2_GLOBALS._player, NULL); @@ -4364,14 +4369,14 @@ bool Scene3600::Protector::startAction(CursorType action, Event &event) { scene->_protectorSpeaker._displayMode = 1; if (!R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); - if (!scene->_actor10._mover) - scene->_actor10.addMover(NULL); - if (!scene->_actor11._mover) - scene->_actor11.addMover(NULL); - if (!scene->_actor12._mover) - scene->_actor12.addMover(NULL); - if (!scene->_actor4._mover) - scene->_actor4.addMover(NULL); + if (!scene->_quinn._mover) + scene->_quinn.addMover(NULL); + if (!scene->_seeker._mover) + scene->_seeker.addMover(NULL); + if (!scene->_miranda._mover) + scene->_miranda.addMover(NULL); + if (!scene->_webbster._mover) + scene->_webbster.addMover(NULL); setup(3127, 2, 1); scene->_sceneMode = 3327; @@ -4411,14 +4416,13 @@ void Scene3600::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._scrollFollower = &R2_GLOBALS._player; R2_GLOBALS._v558B6.set(60, 0, 260, 200); } else { - R2_GLOBALS._scrollFollower = &_actor2; + R2_GLOBALS._scrollFollower = &_steppingDisk; _sceneBounds = Rect(160, 0, 480, 200); R2_GLOBALS._v558B6.set(25, 0, 260, 200); } loadScene(3600); SceneExt::postInit(); - _field254C = 0; _stripManager.setColors(60, 255); _stripManager.setFontNumber(3); @@ -4433,62 +4437,61 @@ void Scene3600::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player._characterScene[R2_SEEKER] = 3600; R2_GLOBALS._player._characterScene[R2_MIRANDA] = 3600; - _item2.setDetails(33, 3600, 6, -1, -1); - _item3.setDetails(Rect(3, 3, 22, 45), 3600, 9, -1, -1, 1, NULL); - _item4.setDetails(Rect(449, 3, 475, 45), 3600, 9, -1, -1, 1, NULL); + _console.setDetails(33, 3600, 6, -1, -1); + _tapestry1.setDetails(Rect(3, 3, 22, 45), 3600, 9, -1, -1, 1, NULL); + _tapestry2.setDetails(Rect(449, 3, 475, 45), 3600, 9, -1, -1, 1, NULL); - _actor10.postInit(); - _actor10._moveDiff = Common::Point(3, 2); - _actor10.changeZoom(-1); - _actor10._effect = 1; + _quinn.postInit(); + _quinn._moveDiff = Common::Point(3, 2); + _quinn.changeZoom(-1); + _quinn._effect = 1; if (R2_GLOBALS._player._characterIndex != 1) - _actor10.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); + _quinn.setDetails(9001, 0, -1, -1, 1, (SceneItem *) NULL); - _actor11.postInit(); - _actor11._numFrames = 7; - _actor11._moveDiff = Common::Point(5, 3); - _actor11.changeZoom(-1); - _actor11._effect = 1; + _seeker.postInit(); + _seeker._numFrames = 7; + _seeker._moveDiff = Common::Point(5, 3); + _seeker.changeZoom(-1); + _seeker._effect = 1; if (R2_GLOBALS._player._characterIndex != 2) - _actor11.setDetails(9002, 1, -1, -1, 1, (SceneItem *) NULL); + _seeker.setDetails(9002, 1, -1, -1, 1, (SceneItem *) NULL); - _actor12.postInit(); - _actor12._moveDiff = Common::Point(3, 2); - _actor12.changeZoom(-1); - _actor12._effect = 1; + _miranda.postInit(); + _miranda._moveDiff = Common::Point(3, 2); + _miranda.changeZoom(-1); + _miranda._effect = 1; if (R2_GLOBALS._player._characterIndex != 3) - _actor12.setDetails(9003, 1, -1, -1, 1, (SceneItem *) NULL); + _miranda.setDetails(9003, 1, -1, -1, 1, (SceneItem *) NULL); R2_GLOBALS._player.postInit(); R2_GLOBALS._player.changeZoom(-1); R2_GLOBALS._player.animate(ANIM_MODE_1, NULL); R2_GLOBALS._player.disableControl(); - _actor4.postInit(); - _actor4._numFrames = 7; - _actor4._moveDiff = Common::Point(5, 3); - _actor4.changeZoom(-1); - _actor4._effect = 1; - _actor4.setDetails(3600, 27, -1, -1, 1, (SceneItem *) NULL); + _webbster.postInit(); + _webbster._numFrames = 7; + _webbster._moveDiff = Common::Point(5, 3); + _webbster.changeZoom(-1); + _webbster._effect = 1; + _webbster.setDetails(3600, 27, -1, -1, 1, (SceneItem *) NULL); - _actor5.postInit(); - _actor5._numFrames = 7; - _actor5._moveDiff = Common::Point(3, 2); - _actor5.changeZoom(-1); - _actor5._effect = 1; - _actor5.setDetails(3600, 12, -1, -1, 1, (SceneItem *) NULL); + _teal.postInit(); + _teal._numFrames = 7; + _teal._moveDiff = Common::Point(3, 2); + _teal.changeZoom(-1); + _teal._effect = 1; + _teal.setDetails(3600, 12, -1, -1, 1, (SceneItem *) NULL); _palette1.loadPalette(0); _palette1.loadPalette(3601); if (R2_GLOBALS._sceneManager._previousScene == 3600) { - _item5._sceneRegionId = 200; - _item5.setDetails(3600, 30, -1, -1, 5, &_actor4); - _field254A = 1; - _field2548 = 1; + _lightShaft._sceneRegionId = 200; + _lightShaft.setDetails(3600, 30, -1, -1, 5, &_webbster); + _tealDead = true; R2_GLOBALS._walkRegions.disableRegion(2); R2_GLOBALS._walkRegions.disableRegion(7); @@ -4496,46 +4499,46 @@ void Scene3600::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._walkRegions.disableRegion(15); R2_GLOBALS._walkRegions.disableRegion(16); - _actor10.setup(10, 5, 11); - _actor10.animate(ANIM_MODE_1, NULL); + _quinn.setup(10, 5, 11); + _quinn.animate(ANIM_MODE_1, NULL); - _actor11.setup(20, 5, 11); - _actor11.animate(ANIM_MODE_1, NULL); + _seeker.setup(20, 5, 11); + _seeker.animate(ANIM_MODE_1, NULL); - _actor12.setup(30, 5, 11); - _actor12.animate(ANIM_MODE_1, NULL); + _miranda.setup(30, 5, 11); + _miranda.animate(ANIM_MODE_1, NULL); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) { - _actor10.setPosition(Common::Point(76, 148)); - _actor11.setPosition(Common::Point(134, 148)); - _actor12.setPosition(Common::Point(100, 148)); + _quinn.setPosition(Common::Point(76, 148)); + _seeker.setPosition(Common::Point(134, 148)); + _miranda.setPosition(Common::Point(100, 148)); R2_GLOBALS._player._moveDiff = Common::Point(5, 3); - R2_GLOBALS._player.setup(20, _actor11._strip, 1); - R2_GLOBALS._player.setPosition(_actor11._position); - _actor11.hide(); + R2_GLOBALS._player.setup(20, _seeker._strip, 1); + R2_GLOBALS._player.setPosition(_seeker._position); + _seeker.hide(); } else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) { - _actor10.setPosition(Common::Point(110, 148)); - _actor11.setPosition(Common::Point(76, 148)); - _actor12.setPosition(Common::Point(134, 148)); + _quinn.setPosition(Common::Point(110, 148)); + _seeker.setPosition(Common::Point(76, 148)); + _miranda.setPosition(Common::Point(134, 148)); R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - R2_GLOBALS._player.setup(30, _actor12._strip, 1); - R2_GLOBALS._player.setPosition(_actor12._position); - _actor12.hide(); + R2_GLOBALS._player.setup(30, _miranda._strip, 1); + R2_GLOBALS._player.setPosition(_miranda._position); + _miranda.hide(); } else { - _actor10.setPosition(Common::Point(134, 148)); - _actor11.setPosition(Common::Point(76, 148)); - _actor12.setPosition(Common::Point(110, 148)); + _quinn.setPosition(Common::Point(134, 148)); + _seeker.setPosition(Common::Point(76, 148)); + _miranda.setPosition(Common::Point(110, 148)); R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - R2_GLOBALS._player.setup(10, _actor10._strip, 1); - R2_GLOBALS._player.setPosition(_actor10._position); - _actor10.hide(); + R2_GLOBALS._player.setup(10, _quinn._strip, 1); + R2_GLOBALS._player.setPosition(_quinn._position); + _quinn.hide(); } - _actor4.setPosition(Common::Point(47, 149)); - _actor4.setup(40, 1, 11); - _actor4.animate(ANIM_MODE_1, NULL); + _webbster.setPosition(Common::Point(47, 149)); + _webbster.setup(40, 1, 11); + _webbster.animate(ANIM_MODE_1, NULL); - _actor5.setPosition(Common::Point(367, 148)); - _actor5.setup(3601, 7, 5); + _teal.setPosition(Common::Point(367, 148)); + _teal.setup(3601, 7, 5); if (!R2_GLOBALS.getFlag(71)) { _protector.postInit(); @@ -4549,65 +4552,64 @@ void Scene3600::postInit(SceneObjectList *OwnerList) { } R2_GLOBALS._sound2.play(330); - _actor3.postInit(); - _actor3.setPosition(Common::Point(84, 156)); - _actor3.fixPriority(158); - _actor3.setup(3601, 5, 1); - _actor3.animate(ANIM_MODE_2, NULL); + _consoleLights.postInit(); + _consoleLights.setPosition(Common::Point(84, 156)); + _consoleLights.fixPriority(158); + _consoleLights.setup(3601, 5, 1); + _consoleLights.animate(ANIM_MODE_2, NULL); _action1._field1E = 1; _action1._field20 = 0; _action1.setActionIndex(1); - _actor3.setAction(&_action1); + _consoleLights.setAction(&_action1); _sceneMode = 3623; g_globals->_events.setCursor(CURSOR_ARROW); R2_GLOBALS._player.enableControl(CURSOR_WALK); } else { - _field254A = 0; - _field2548 = 0; + _tealDead = false; R2_GLOBALS._walkRegions.disableRegion(17); R2_GLOBALS._walkRegions.disableRegion(18); - _actor10.setPosition(Common::Point(393, 148)); - _actor11.setPosition(Common::Point(364, 153)); - _actor12.setPosition(Common::Point(413, 164)); + _quinn.setPosition(Common::Point(393, 148)); + _seeker.setPosition(Common::Point(364, 153)); + _miranda.setPosition(Common::Point(413, 164)); R2_GLOBALS._player.hide(); - _actor4.setPosition(Common::Point(373, 164)); + _webbster.setPosition(Common::Point(373, 164)); - _actor5.setup(3403, 8, 11); - _actor5.setPosition(Common::Point(403, 155)); + _teal.setup(3403, 8, 11); + _teal.setPosition(Common::Point(403, 155)); _protector.setup(3403, 7, 1); _protector.setPosition(Common::Point(405, 155)); - _actor2.postInit(); - _actor2.setup(3600, 2, 1); - _actor2.setPosition(Common::Point(403, 161)); - _actor2.fixPriority(149); - _actor2.changeZoom(-1); + _steppingDisk.postInit(); + _steppingDisk.setup(3600, 2, 1); + _steppingDisk.setPosition(Common::Point(403, 161)); + _steppingDisk.fixPriority(149); + _steppingDisk.changeZoom(-1); _action1._field1E = 0; _action1._field20 = 90; _sceneMode = 3600; - setAction(&_sequenceManager1, this, 3600, &_actor11, &_actor10, &_actor12, &_actor4, &_actor5, &_actor2, NULL); - _field254E = 0; + setAction(&_sequenceManager1, this, 3600, &_seeker, &_quinn, &_miranda, + &_webbster, &_teal, &_steppingDisk, NULL); } - _field254E = 0; + _lightEntered = false; _ghoulTeleported = R2_GLOBALS.getFlag(71); R2_GLOBALS._sound1.play(326); - _item1.setDetails(Rect(0, 0, 480, 200), 3600, 0, -1, -1, 1, NULL); + _background.setDetails(Rect(0, 0, 480, 200), 3600, 0, -1, -1, 1, NULL); } void Scene3600::remove() { - _actor3.animate(ANIM_MODE_NONE, NULL); - _actor3.setAction(NULL); + _consoleLights.animate(ANIM_MODE_NONE, NULL); + _consoleLights.setAction(NULL); R2_GLOBALS._sound2.fadeOut2(NULL); R2_GLOBALS._sound1.fadeOut2(NULL); R2_GLOBALS._scrollFollower = &R2_GLOBALS._player; @@ -4619,27 +4621,29 @@ void Scene3600::signal() { case 3320: // TODO: warning("STUB: sub_1D227()"); R2_GLOBALS._walkRegions.disableRegion(14); - R2_GLOBALS._scrollFollower = &_actor11; + R2_GLOBALS._scrollFollower = &_seeker; _tealSpeaker._object1.hide(); - _actor5.show(); - _actor5.setStrip(2); + _teal.show(); + _teal.setStrip(2); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) _sceneMode = 3602; else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) _sceneMode = 3603; else _sceneMode = 3601; - setAction(&_sequenceManager1, this, _sceneMode, &_actor11, &_actor10, &_actor12, &_actor4, &_actor5, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &_seeker, &_quinn, + &_miranda, &_webbster, &_teal, NULL); break; case 3321: warning("STUB: sub_1D227()"); R2_GLOBALS._scrollFollower = &R2_GLOBALS._player; _tealSpeaker.proc16(); - _actor5.show(); - _actor5.setStrip(1); - _actor3.postInit(); + _teal.show(); + _teal.setStrip(1); + _consoleLights.postInit(); _sceneMode = 3604; - setAction(&_sequenceManager1, this, _sceneMode, &_actor5, &_actor3, &_actor10, &_actor11, &_actor12, &_actor4, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &_teal, &_consoleLights, + &_quinn, &_seeker, &_miranda, &_webbster, NULL); break; case 3322: warning("STUB: sub_1D227()"); @@ -4647,13 +4651,13 @@ void Scene3600::signal() { _quinnSpeaker._displayMode = 1; _tealSpeaker.proc16(); _tealSpeaker._displayMode = 7; - R2_GLOBALS._scrollFollower = &_actor5; + R2_GLOBALS._scrollFollower = &_teal; _sceneMode = 3605; - setAction(&_sequenceManager1, this, _sceneMode, &_actor5, &_protector, &_actor2, NULL); + setAction(&_sequenceManager1, this, _sceneMode, &_teal, &_protector, &_steppingDisk, NULL); break; case 3323: - if (_field254A == 0) - _field254A = 1; + if (!_tealDead) + _tealDead = true; else { warning("STUB: sub_1D227()"); _protectorSpeaker.proc16(); @@ -4663,7 +4667,6 @@ void Scene3600::signal() { _sceneMode = 3607; _protector.setAction(&_sequenceManager1, this, _sceneMode, &_protector, NULL); - R2_GLOBALS._v558C2 = 1; _protectorSpeaker.proc16(); _protectorSpeaker._displayMode = 1; _quinnSpeaker._displayMode = 1; @@ -4678,7 +4681,7 @@ void Scene3600::signal() { R2_GLOBALS._walkRegions.disableRegion(15); R2_GLOBALS._walkRegions.disableRegion(16); - _actor3.setAction(&_action1); + _consoleLights.setAction(&_action1); } break; case 3324: @@ -4688,7 +4691,6 @@ void Scene3600::signal() { R2_GLOBALS._player.enableControl(CURSOR_WALK); _protector.fixPriority(-1); _sceneMode = 3623; - _field2548 = 1; break; case 3327: g_globals->_events.setCursor(CURSOR_ARROW); @@ -4697,24 +4699,24 @@ void Scene3600::signal() { break; case 3450: R2_GLOBALS._sound1.stop(); - _actor1.hide(); - _actor6.hide(); + _protector3400.hide(); + _door3400.hide(); _sceneBounds = Rect(40, 0, SCREEN_WIDTH + 40, SCREEN_HEIGHT); setZoomPercents(142, 80, 167, 105); loadScene(3600); R2_GLOBALS._uiElements.show(); - _item5._sceneRegionId = 200; - _item5.setDetails(3600, 30, -1, -1, 5, &_actor4); - - _actor3.show(); - _actor10.show(); - _actor11.show(); - _actor12.show(); - _actor4.show(); - _actor5.show(); + _lightShaft._sceneRegionId = 200; + _lightShaft.setDetails(3600, 30, -1, -1, 5, &_webbster); + + _consoleLights.show(); + _quinn.show(); + _seeker.show(); + _miranda.show(); + _webbster.show(); + _teal.show(); - _actor5.setPosition(Common::Point(298, 151)); + _teal.setPosition(Common::Point(298, 151)); _protector.postInit(); _protector._state = 0; @@ -4726,32 +4728,32 @@ void Scene3600::signal() { _protector.addMover(NULL); _protector.animate(ANIM_MODE_NONE); _protector.hide(); - _protector.setDetails(3600, 15, -1, 17, 5, &_item5); + _protector.setDetails(3600, 15, -1, 17, 5, &_lightShaft); - _actor2.setup(3600, 2, 1); - _actor2.setPosition(Common::Point(403, 161)); - _actor2.fixPriority(149); - _actor2.changeZoom(-1); - _actor2.show(); + _steppingDisk.setup(3600, 2, 1); + _steppingDisk.setPosition(Common::Point(403, 161)); + _steppingDisk.fixPriority(149); + _steppingDisk.changeZoom(-1); + _steppingDisk.show(); _quinnSpeaker._displayMode = 2; _tealSpeaker._displayMode = 2; if (R2_GLOBALS._player._characterIndex == R2_SEEKER) { R2_GLOBALS._player._moveDiff = Common::Point(5, 3); - R2_GLOBALS._player.setup(20, _actor11._strip, 1); - R2_GLOBALS._player.setPosition(_actor11._position); - _actor11.hide(); + R2_GLOBALS._player.setup(20, _seeker._strip, 1); + R2_GLOBALS._player.setPosition(_seeker._position); + _seeker.hide(); } else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) { R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - R2_GLOBALS._player.setup(30, _actor12._strip, 1); - R2_GLOBALS._player.setPosition(_actor12._position); - _actor12.hide(); + R2_GLOBALS._player.setup(30, _miranda._strip, 1); + R2_GLOBALS._player.setPosition(_miranda._position); + _miranda.hide(); } else { R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - R2_GLOBALS._player.setup(10, _actor10._strip, 1); - R2_GLOBALS._player.setPosition(_actor10._position); - _actor10.hide(); + R2_GLOBALS._player.setup(10, _quinn._strip, 1); + R2_GLOBALS._player.setPosition(_quinn._position); + _quinn.hide(); } R2_GLOBALS._player.show(); R2_GLOBALS._sound1.play(326); @@ -4781,40 +4783,41 @@ void Scene3600::signal() { R2_GLOBALS._walkRegions.enableRegion(2); R2_GLOBALS._walkRegions.enableRegion(7); - _actor2.hide(); - _actor3.hide(); + _steppingDisk.hide(); + _consoleLights.hide(); R2_GLOBALS._player.hide(); - _actor10.hide(); - _actor11.hide(); - _actor12.hide(); - _actor4.hide(); - _actor5.hide(); + _quinn.hide(); + _seeker.hide(); + _miranda.hide(); + _webbster.hide(); + _teal.hide(); _sceneBounds = Rect(60, 0, SCREEN_WIDTH + 60, SCREEN_HEIGHT); setZoomPercents(51, 46, 180, 200); loadScene(3400); R2_GLOBALS._uiElements.show(); - _actor1.postInit(); + _protector3400.postInit(); - _actor2.setup(3403, 1, 1); - _actor2.setPosition(Common::Point(190, 103)); - _actor2.fixPriority(89); - _actor2.show(); + _steppingDisk.setup(3403, 1, 1); + _steppingDisk.setPosition(Common::Point(190, 103)); + _steppingDisk.fixPriority(89); + _steppingDisk.show(); - _actor6.postInit(); - _actor6.setup(3400, 1, 6); - _actor6.setPosition(Common::Point(236, 51)); - _actor6.fixPriority(51); - R2_GLOBALS._scrollFollower = &_actor6; + _door3400.postInit(); + _door3400.setup(3400, 1, 6); + _door3400.setPosition(Common::Point(236, 51)); + _door3400.fixPriority(51); + R2_GLOBALS._scrollFollower = &_door3400; R2_GLOBALS._sound1.play(323); _sceneMode = 3450; - setAction(&_sequenceManager1, this, 3450, &_actor1, &_actor6, NULL); + setAction(&_sequenceManager1, this, 3450, &_protector3400, &_door3400, NULL); break; case 3605: _protector.setup(3258, 4, 1); - _protector.setAction(&_sequenceManager1, this, 3606, &_actor5, &_protector, &_actor2, NULL); + _protector.setAction(&_sequenceManager1, this, 3606, &_teal, &_protector, + &_steppingDisk, NULL); _sceneMode = 3323; _stripManager.start(3323, this); @@ -4833,11 +4836,11 @@ void Scene3600::signal() { break; case 3624: R2_GLOBALS._player.disableControl(); - if ((_field254E != 0) && (_actor10._position.x == 229) && (_actor10._position.y == 154) && (_actor11._position.x == 181) && (_actor11._position.y == 154) && (_actor12._position.x == 207) && (_actor12._position.y == 154) && (_actor4._position.x == 155) && (_actor4._position.y == 154)) { + if (_lightEntered && (_quinn._position.x == 229) && (_quinn._position.y == 154) && (_seeker._position.x == 181) && (_seeker._position.y == 154) && (_miranda._position.x == 207) && (_miranda._position.y == 154) && (_webbster._position.x == 155) && (_webbster._position.y == 154)) { R2_GLOBALS._sound2.stop(); R2_GLOBALS._sound2.play(331); _sceneMode = 3625; - setAction(&_sequenceManager1, this, 3625, &_actor10, &_actor11, &_actor12, &_actor4, NULL); + setAction(&_sequenceManager1, this, 3625, &_quinn, &_seeker, &_miranda, &_webbster, NULL); } break; case 3625: @@ -4862,8 +4865,9 @@ void Scene3600::signal() { } void Scene3600::process(Event &event) { - if ((event.eventType == EVENT_BUTTON_DOWN) && (R2_GLOBALS._events.getCursor() == CURSOR_ARROW) && (event.mousePos.x > 237) && (!R2_GLOBALS.getFlag(71))) { - SceneItem::display(3600, 17, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7 -999); + if ((event.eventType == EVENT_BUTTON_DOWN) && (R2_GLOBALS._events.getCursor() == CURSOR_ARROW) + && (event.mousePos.x > 237) && (!R2_GLOBALS.getFlag(71))) { + SceneItem::display(3600, 17, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); event.handled = true; } Scene::process(event); @@ -4871,7 +4875,7 @@ void Scene3600::process(Event &event) { void Scene3600::dispatch() { if ((R2_GLOBALS._player.getRegionIndex() == 200) && (_action1._field1E != 0) - && (_field254E == 0)) { + && !_lightEntered) { R2_GLOBALS._sound2.fadeOut2(NULL); if (_protector._mover) _protector.addMover(NULL); @@ -4881,8 +4885,7 @@ void Scene3600::dispatch() { if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); - _field254C = 0; - _field254E = 1; + _lightEntered = true; R2_GLOBALS._walkRegions.enableRegion(2); R2_GLOBALS._walkRegions.enableRegion(7); @@ -4890,27 +4893,27 @@ void Scene3600::dispatch() { _sceneMode = 3624; - _actor10.setStrip(-1); - _actor11.setStrip(-1); - _actor12.setStrip(-1); - _actor4.setStrip(-1); + _quinn.setStrip(-1); + _seeker.setStrip(-1); + _miranda.setStrip(-1); + _webbster.setStrip(-1); R2_GLOBALS._player.hide(); if (R2_GLOBALS._player._characterIndex == R2_SEEKER) { - _actor11.setPosition(R2_GLOBALS._player._position); - _actor11.show(); + _seeker.setPosition(R2_GLOBALS._player._position); + _seeker.show(); } else if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) { - _actor12.setPosition(R2_GLOBALS._player._position); - _actor12.show(); + _miranda.setPosition(R2_GLOBALS._player._position); + _miranda.show(); } else { - _actor10.setPosition(R2_GLOBALS._player._position); - _actor10.show(); + _quinn.setPosition(R2_GLOBALS._player._position); + _quinn.show(); } - _actor10.setAction(&_sequenceManager2, this, 3610, &_actor10, NULL); - _actor11.setAction(&_sequenceManager3, this, 3611, &_actor11, NULL); - _actor12.setAction(&_sequenceManager4, this, 3612, &_actor12, NULL); - _actor4.setAction(&_sequenceManager1, this, 3613, &_actor4, NULL); + _quinn.setAction(&_sequenceManager2, this, 3610, &_quinn, NULL); + _seeker.setAction(&_sequenceManager3, this, 3611, &_seeker, NULL); + _miranda.setAction(&_sequenceManager4, this, 3612, &_miranda, NULL); + _webbster.setAction(&_sequenceManager1, this, 3613, &_webbster, NULL); } if ((_protector.getRegionIndex() == 200) && (_action1._field1E != 0) && !_ghoulTeleported) { @@ -4921,14 +4924,14 @@ void Scene3600::dispatch() { if (R2_GLOBALS._player._mover) R2_GLOBALS._player.addMover(NULL); - if (_actor10._mover) - _actor10.addMover(NULL); - if (_actor11._mover) - _actor11.addMover(NULL); - if (_actor12._mover) - _actor12.addMover(NULL); - if (_actor4._mover) - _actor4.addMover(NULL); + if (_quinn._mover) + _quinn.addMover(NULL); + if (_seeker._mover) + _seeker.addMover(NULL); + if (_miranda._mover) + _miranda.addMover(NULL); + if (_webbster._mover) + _webbster.addMover(NULL); } Scene::dispatch(); @@ -4941,8 +4944,8 @@ void Scene3600::dispatch() { void Scene3700::postInit(SceneObjectList *OwnerList) { loadScene(3700); - SceneExt::postInit(); R2_GLOBALS._uiElements._active = false; + SceneExt::postInit(); R2_GLOBALS._interfaceY = SCREEN_HEIGHT; _stripManager.setColors(60, 255); @@ -4968,14 +4971,14 @@ void Scene3700::postInit(SceneObjectList *OwnerList) { _webbster._moveDiff = Common::Point(5, 3); _webbster.hide(); - _actor5.postInit(); + _teleportPad.postInit(); R2_GLOBALS._player.disableControl(); R2_GLOBALS._sound1.play(332); _sceneMode = 3700; setAction(&_sequenceManager, this, 3700, &_quinn, &_seeker, &_miranda, - &_webbster, &_actor5, NULL); + &_webbster, &_teleportPad, NULL); } void Scene3700::remove() { @@ -5185,7 +5188,7 @@ void Scene3800::initExits() { _southExit._moving = false; _westExit._moving = false; - loadScene(R2_GLOBALS._v566A6); + loadScene(R2_GLOBALS._maze3800SceneNumb); R2_GLOBALS._uiElements.draw(); } @@ -5201,20 +5204,21 @@ void Scene3800::enterArea() { R2_GLOBALS._player.setStrip(3); R2_GLOBALS._player.changeZoom(-1); R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - _actor1.postInit(); - _actor1.fixPriority(10); - _actor1.changeZoom(-1); - _actor1.setVisage(1110); - _actor1._effect = 5; - _actor1._field9C = this->_field312; - R2_GLOBALS._player._linkedActor = &_actor1; + _balloonQuinn.postInit(); + _balloonQuinn.fixPriority(10); + _balloonQuinn.changeZoom(-1); + _balloonQuinn.setVisage(1110); + _balloonQuinn._effect = 5; + _balloonQuinn._field9C = this->_field312; + R2_GLOBALS._player._linkedActor = &_balloonQuinn; switch (R2_GLOBALS._sceneManager._previousScene) { case 2600: - _object1.postInit(); - _object2.postInit(); - _actor1.hide(); + _balloon.postInit(); + _harness.postInit(); + _balloonQuinn.hide(); _sceneMode = 3800; - setAction(&_sequenceManager1, this, 3800, &R2_GLOBALS._player, &_object1, &_object2, NULL); + setAction(&_sequenceManager1, this, 3800, &R2_GLOBALS._player, + &_balloon, &_harness, NULL); break; case 3900: _sceneMode = 15; @@ -5250,6 +5254,7 @@ void Scene3800::enterArea() { default: break; } + break; default: R2_GLOBALS._player.enableControl(CURSOR_WALK); break; @@ -5313,7 +5318,7 @@ void Scene3800::postInit(SceneObjectList *OwnerList) { _westExit.setDetails(Rect(0, 87, 14, 168), EXITCURSOR_W, 3800); _westExit.setDest(Common::Point(7, 145)); - _rect1.set(0, 0, 320, 87); + _skylineRect.set(0, 0, 320, 87); _background.setDetails(Rect(0, 0, 320, 200), 3800, 0, 1, 2, 1, (SceneItem *) NULL); enterArea(); @@ -5322,45 +5327,43 @@ void Scene3800::postInit(SceneObjectList *OwnerList) { void Scene3800::signal() { switch (_sceneMode) { case 11: - R2_GLOBALS._v566A6 += 15; - if (R2_GLOBALS._v566A6 > 3815) - R2_GLOBALS._v566A6 -= 20; + R2_GLOBALS._maze3800SceneNumb += 15; + if (R2_GLOBALS._maze3800SceneNumb > 3815) + R2_GLOBALS._maze3800SceneNumb -= 20; initExits(); enterArea(); break; case 12: - R2_GLOBALS._v566A6 += 5; - if (R2_GLOBALS._v566A6 > 3815) - R2_GLOBALS._v566A6 = 3800; + R2_GLOBALS._maze3800SceneNumb += 5; + if (R2_GLOBALS._maze3800SceneNumb > 3815) + R2_GLOBALS._maze3800SceneNumb = 3800; initExits(); enterArea(); break; case 13: - R2_GLOBALS._v566A6 -= 15; - if (R2_GLOBALS._v566A6 < 3800) - R2_GLOBALS._v566A6 += 20; + R2_GLOBALS._maze3800SceneNumb -= 15; + if (R2_GLOBALS._maze3800SceneNumb < 3800) + R2_GLOBALS._maze3800SceneNumb += 20; initExits(); enterArea(); break; case 14: - R2_GLOBALS._v566A6 -= 5; - if (R2_GLOBALS._v566A6 < 3800) - R2_GLOBALS._v566A6 = 3815; + R2_GLOBALS._maze3800SceneNumb -= 5; + if (R2_GLOBALS._maze3800SceneNumb < 3800) + R2_GLOBALS._maze3800SceneNumb = 3815; initExits(); enterArea(); break; case 15: - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(); break; case 16: g_globals->_sceneManager.changeScene(3900); break; case 3800: - _actor1.show(); - _object1.remove(); - _object2.remove(); - R2_GLOBALS._v56AAB = 0; + _balloonQuinn.show(); + _balloon.remove(); + _harness.remove(); R2_GLOBALS._player.enableControl(); break; case 3805: @@ -5384,18 +5387,19 @@ void Scene3800::signal() { } void Scene3800::process(Event &event) { - if ((R2_GLOBALS._player._uiEnabled) && (event.eventType == EVENT_BUTTON_DOWN) && (_rect1.contains(event.mousePos))) { + if ((R2_GLOBALS._player._uiEnabled) && (event.eventType == EVENT_BUTTON_DOWN) + && (_skylineRect.contains(event.mousePos))) { event.handled = true; switch (R2_GLOBALS._events.getCursor()) { - case R2_NEGATOR_GUN: + case CURSOR_WALK: R2_GLOBALS._player.addMover(NULL); R2_GLOBALS._player.updateAngle(event.mousePos); break; - case R2_STEPPING_DISKS: - SceneItem::display(3800, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + case CURSOR_LOOK: + SceneItem::display(3800, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; - case R2_ATTRACTOR_UNIT: - SceneItem::display(3800, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + case CURSOR_USE: + SceneItem::display(3800, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; default: event.handled = false; @@ -5510,13 +5514,13 @@ void Scene3900::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._player.changeZoom(-1); R2_GLOBALS._player._moveDiff = Common::Point(3, 2); - _actor1.postInit(); - _actor1.fixPriority(10); - _actor1.changeZoom(-1); - _actor1.setVisage(1110); - _actor1._effect = 5; - _actor1._field9C = _field312; - R2_GLOBALS._player._linkedActor = &_actor1; + _linkedQuinn.postInit(); + _linkedQuinn.fixPriority(10); + _linkedQuinn.changeZoom(-1); + _linkedQuinn.setVisage(1110); + _linkedQuinn._effect = 5; + _linkedQuinn._field9C = _field312; + R2_GLOBALS._player._linkedActor = &_linkedQuinn; if ((R2_GLOBALS._desertPreviousDirection == 2) && (R2_GLOBALS._sceneManager._previousScene != 2700)) { // loadScene(3825); @@ -5532,8 +5536,8 @@ void Scene3900::postInit(SceneObjectList *OwnerList) { _westExit._enabled = false; - _exit5.setDetails(Rect(0, 87, 29, 168), EXITCURSOR_W, 3900); - _exit5.setDest(Common::Point(24, 135)); + _westEnterForest.setDetails(Rect(0, 87, 29, 168), EXITCURSOR_W, 3900); + _westEnterForest.setDest(Common::Point(24, 135)); } else { // loadScene(3820); R2_GLOBALS._desertCorrectDirection = 2; @@ -5548,12 +5552,12 @@ void Scene3900::postInit(SceneObjectList *OwnerList) { _westExit._insideArea = false; _westExit._moving = false; - _exit5.setDetails(Rect(290, 87, 320, 168), EXITCURSOR_E, 3900); - _exit5.setDest(Common::Point(295, 135)); + _westEnterForest.setDetails(Rect(290, 87, 320, 168), EXITCURSOR_E, 3900); + _westEnterForest.setDest(Common::Point(295, 135)); } - _exit5._enabled = true; - _exit5._insideArea = false; - _exit5._moving = false; + _westEnterForest._enabled = true; + _westEnterForest._insideArea = false; + _westEnterForest._moving = false; scalePalette(65, 65, 65); @@ -5569,8 +5573,8 @@ void Scene3900::postInit(SceneObjectList *OwnerList) { R2_GLOBALS._uiElements.draw(); - _rect1.set(0, 0, 320, 87); - _item1.setDetails(Rect(0, 0, 320, 200), 3800, 0, 1, 2, 1, (SceneItem *)NULL); + _skylineRect.set(0, 0, 320, 87); + _background.setDetails(Rect(0, 0, 320, 200), 3800, 0, 1, 2, 1, (SceneItem *)NULL); if (R2_GLOBALS._sceneManager._previousScene == 3800) { _sceneMode = 11; switch (R2_GLOBALS._desertPreviousDirection) { @@ -5626,7 +5630,6 @@ void Scene3900::signal() { case 11: // No break on purpose case 12: - R2_GLOBALS._v56AAB = 0; R2_GLOBALS._player.enableControl(CURSOR_WALK); break; case 13: @@ -5656,18 +5659,19 @@ void Scene3900::signal() { } void Scene3900::process(Event &event) { - if ((R2_GLOBALS._player._uiEnabled) && (event.eventType == EVENT_BUTTON_DOWN) && (_rect1.contains(event.mousePos))) { + if ((R2_GLOBALS._player._uiEnabled) && (event.eventType == EVENT_BUTTON_DOWN) + && (_skylineRect.contains(event.mousePos))) { event.handled = true; switch (R2_GLOBALS._events.getCursor()) { - case R2_NEGATOR_GUN: + case CURSOR_WALK: R2_GLOBALS._player.addMover(NULL); R2_GLOBALS._player.updateAngle(event.mousePos); break; - case R2_STEPPING_DISKS: - SceneItem::display(3800, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + case CURSOR_USE: + SceneItem::display(3800, 5, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; - case R2_ATTRACTOR_UNIT: - SceneItem::display(3800, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, -999); + case CURSOR_LOOK: + SceneItem::display(3800, 3, 0, 280, 1, 160, 9, 1, 2, 20, 7, 7, LIST_END); break; default: event.handled = false; diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h index 6c7a594b12..48236ee300 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes3.h +++ b/engines/tsage/ringworld2/ringworld2_scenes3.h @@ -45,15 +45,15 @@ class Scene3100 : public SceneExt { virtual bool startAction(CursorType action, Event &event); }; public: - int _field412; + bool _fadeSound; SpeakerGuard _guardSpeaker; - NamedHotspot _item1; - NamedHotspot _item2; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; - SceneActor _actor4; - SceneActor _actor5; + NamedHotspot _background; + NamedHotspot _hammerHead2; + SceneActor _hammerHead; + SceneActor _miranda; + SceneActor _ghoul; + SceneActor _technicians; + SceneActor _deadBodies; Guard _guard; ASoundExt _sound1; SequenceManager _sequenceManager; @@ -84,7 +84,7 @@ class Scene3125 : public SceneExt { virtual bool startAction(CursorType action, Event &event); }; public: - int _field412; + bool _soundPlayed; Background _background; Door _door; Table _table; @@ -93,9 +93,7 @@ public: SceneActor _ghoul2; SceneActor _ghoul3; SceneActor _ghoul4; - SequenceManager _sequenceManager1; - // Second sequence manager... Unused? - SequenceManager _sequenceManager2; + SequenceManager _sequenceManager; Scene3125(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -119,7 +117,7 @@ class Scene3150 : public SceneExt { class FoodTray : public SceneActor { virtual bool startAction(CursorType action, Event &event); }; - class Actor6 : public SceneActor { + class ToiletFlush : public SceneActor { virtual bool startAction(CursorType action, Event &event); }; class AirVent : public SceneActor { @@ -146,7 +144,7 @@ public: SceneActor _bulbOrWire; Water _water; FoodTray _foodTray; - Actor6 _toiletFlush; + ToiletFlush _toiletFlush; AirVent _airVent; DoorExit _doorExit; VentExit _ventExit; @@ -158,7 +156,7 @@ public: }; class Scene3175 : public SceneExt { - class Item1 : public NamedHotspot { + class RoomItem : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; @@ -170,11 +168,11 @@ class Scene3175 : public SceneExt { virtual bool startAction(CursorType action, Event &event); }; public: - Item1 _background; - Item1 _item2; - Item1 _item3; + RoomItem _background; + RoomItem _table; + RoomItem _autopsies; Door _door; - SceneActor _actor2; + SceneActor _computer; Corpse _corpse; SequenceManager _sequenceManager; @@ -187,9 +185,9 @@ public: SpeakerRocko3200 _rockoSpeaker; SpeakerJocko3200 _jockoSpeaker; SpeakerSocko3200 _sockoSpeaker; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; + SceneActor _rocko; + SceneActor _jocko; + SceneActor _socko; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -200,8 +198,8 @@ class Scene3210 : public SceneExt { public: SpeakerCaptain3210 _captainSpeaker; SpeakerPrivate3210 _privateSpeaker; - SceneActor _actor1; - SceneActor _actor2; + SceneActor _captain; + SceneActor _private; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -212,8 +210,8 @@ class Scene3220 : public SceneExt { public: SpeakerRocko3220 _rockoSpeaker; SpeakerJocko3220 _jockoSpeaker; - SceneActor _actor1; - SceneActor _actor2; + SceneActor _rocko; + SceneActor _jocko; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -224,9 +222,9 @@ class Scene3230 : public SceneExt { public: SpeakerRocko3230 _rockoSpeaker; SpeakerJocko3230 _jockoSpeaker; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; + SceneActor _rocko; + SceneActor _jocko; + SceneActor _ghoul; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -238,8 +236,8 @@ public: SpeakerTeal3240 _tealSpeaker; SpeakerWebbster3240 _webbsterSpeaker; SpeakerMiranda _mirandaSpeaker; - SceneActor _actor1; - SceneActor _actor2; + SceneActor _teal; + SceneActor _webbster; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -250,8 +248,8 @@ class Scene3245 : public SceneExt { public: SpeakerRalf3245 _ralfSpeaker; SpeakerTomko3245 _tomkoSpeaker; - SceneActor _actor1; - SceneActor _actor2; + SceneActor _ralf; + SceneActor _tomko; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -275,7 +273,7 @@ public: Door _leftDoor; Door _topDoor; Door _rightDoor; - Door _actor4; + Door _grate; SceneActor _ghoul1; SceneActor _ghoul2; SceneActor _ghoul3; @@ -290,7 +288,7 @@ class Scene3255 : public SceneExt { public: SceneActor _teal; SceneActor _guard; - SceneActor _actor3; + SceneActor _door; SceneActor _quinn; SceneActor _ghoul1; SceneActor _ghoul2; @@ -366,7 +364,7 @@ public: NamedHotspot _emptyCell2; NamedHotspot _securityBeams1; NamedHotspot _securityBeams2; - SceneActor _actor1; + SceneActor _doorFrame; Door _door; CellExit _cellExit; SequenceManager _sequenceManager; @@ -377,15 +375,15 @@ public: class Scene3350 : public SceneExt { public: - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; - SceneActor _actor4; - SceneActor _actor5; - SceneActor _actor6; - SceneActor _actor7; - SceneActor _actor8; - SceneActor _actor9; + SceneActor _miranda; + SceneActor _seeker; + SceneActor _webbster; + SceneActor _seatedPeople; + SceneActor _ship; + SceneActor _landedShip; + SceneActor _shipShadow; + SceneActor _canopy; + SceneActor _shipFront; SequenceManager _sequenceManager; PaletteRotation *_rotation; @@ -439,9 +437,8 @@ public: DownExit _downExit; RightExit _rightExit; SequenceManager _sequenceManager; - int _field1488; + int _newSceneMode; int _sceneAreas[4]; - int _field1492; Scene3375(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -489,7 +486,7 @@ public: Action1 _action1; SequenceManager _sequenceManager; - int _field11B2; + int _playerStrip; Scene3385(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -531,7 +528,7 @@ public: Action1 _action1; SequenceManager _sequenceManager; - int _field142E; + int _playerStrip; Scene3395(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -556,7 +553,7 @@ public: SceneActor _actor7; SceneActor _actor8; SequenceManager _sequenceManager; - int16 _field157C; + bool _soundFaded; Scene3400(); virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -591,11 +588,11 @@ class Scene3500 : public SceneExt { virtual void signal(); }; - class Item4 : public NamedHotspot { + class DirectionButton : public NamedHotspot { public: - int _field34; + int _movementId; - Item4(); + DirectionButton(); virtual void synchronize(Serializer &s); virtual bool startAction(CursorType action, Event &event); @@ -603,8 +600,7 @@ class Scene3500 : public SceneExt { class Actor7 : public SceneActor { public: - int _fieldA4; - int _fieldA6; + Common::Point _pos; int _fieldA8; int _fieldAA; int _fieldAC; @@ -613,10 +609,10 @@ class Scene3500 : public SceneExt { Actor7(); virtual void synchronize(Serializer &s); - void sub109466(int arg1, int arg2, int arg3, int arg4, int arg5); + void sub109466(int xp, int yp, int arg3, int arg4, int arg5); void sub1094ED(); void sub109663(int arg1); - void sub109693(Common::Point Pt); + void changePosition(const Common::Point &pt); virtual void process(Event &event); virtual bool startAction(CursorType action, Event &event); @@ -640,10 +636,10 @@ public: NamedHotspot _item1; NamedHotspot _item2; NamedHotspot _item3; - Item4 _item4; - Item4 _item5; - Item4 _item6; - Item4 _item7; + DirectionButton _pitchDown; + DirectionButton _turnLeft; + DirectionButton _pitchUp; + DirectionButton _turnRight; // Glyph of vessel on top of the maze ui SceneActor _actor1; SceneActor _actor2; @@ -672,10 +668,10 @@ public: int _field1280; int _field1282; int _field1284; - int _field1286; + bool _directionChangesEnabled; Scene3500(); - void sub107F71(int arg1); + void doMovement(int id); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void remove(); @@ -699,7 +695,7 @@ class Scene3600 : public SceneExt { virtual void signal(); }; - class Item5 : public NamedHotspot { + class LightShaft : public NamedHotspot { public: virtual bool startAction(CursorType action, Event &event); }; @@ -715,23 +711,20 @@ public: SpeakerMiranda3600 _mirandaSpeaker; SpeakerTeal3600 _tealSpeaker; SpeakerProtector3600 _protectorSpeaker; - NamedHotspot _item1; - NamedHotspot _item2; - NamedHotspot _item3; - NamedHotspot _item4; - Item5 _item5; - SceneActor _actor1; - SceneActor _actor2; - SceneActor _actor3; - SceneActor _actor4; - SceneActor _actor5; - SceneActor _actor6; - SceneActor _actor7; - SceneActor _actor8; - SceneActor _actor9; - SceneActor _actor10; - SceneActor _actor11; - SceneActor _actor12; + NamedHotspot _background; + NamedHotspot _console; + NamedHotspot _tapestry1; + NamedHotspot _tapestry2; + LightShaft _lightShaft; + SceneActor _protector3400; + SceneActor _steppingDisk; + SceneActor _consoleLights; + SceneActor _webbster; + SceneActor _teal; + SceneActor _door3400; + SceneActor _quinn; + SceneActor _seeker; + SceneActor _miranda; Protector _protector; SequenceManager _sequenceManager1; SequenceManager _sequenceManager2; @@ -739,10 +732,8 @@ public: SequenceManager _sequenceManager4; ScenePalette _palette1; - int _field2548; - int _field254A; - int _field254C; - int _field254E; + bool _tealDead; + bool _lightEntered; bool _ghoulTeleported; Scene3600(); @@ -763,7 +754,7 @@ public: SceneActor _seeker; SceneActor _miranda; SceneActor _webbster; - SceneActor _actor5; + SceneActor _teleportPad; SequenceManager _sequenceManager; virtual void postInit(SceneObjectList *OwnerList = NULL); @@ -793,15 +784,15 @@ class Scene3800 : public SceneExt { }; public: - SceneObject _object1; - SceneObject _object2; - SceneActor _actor1; + SceneObject _balloon; + SceneObject _harness; + SceneActor _balloonQuinn; NamedHotspot _background; NorthExit _northExit; EastExit _eastExit; SouthExit _southExit; WestExit _westExit; - Rect _rect1; + Rect _skylineRect; SequenceManager _sequenceManager1; int _desertDirection; @@ -842,14 +833,14 @@ class Scene3900 : public SceneExt { virtual void changeScene(); }; public: - SceneActor _actor1; - NamedHotspot _item1; + SceneActor _linkedQuinn; + NamedHotspot _background; NorthExit _northExit; EastExit _eastExit; SouthExit _southExit; WestExit _westExit; - Exit5 _exit5; - Rect _rect1; + Exit5 _westEnterForest; + Rect _skylineRect; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); diff --git a/engines/tsage/ringworld2/ringworld2_speakers.cpp b/engines/tsage/ringworld2/ringworld2_speakers.cpp index 8b6ce4a1f3..a6bfc39e2a 100644 --- a/engines/tsage/ringworld2/ringworld2_speakers.cpp +++ b/engines/tsage/ringworld2/ringworld2_speakers.cpp @@ -42,6 +42,13 @@ VisualSpeaker::VisualSpeaker(): Speaker() { _color2 = 0; _displayMode = 0; _speakerMode = 0; + + _object2 = nullptr; + _fieldF8 = 0; + _soundId = 0; + _removeObject = false; + _numFrames = 0; + _voiceFrameNumber = 0; } void VisualSpeaker::remove() { @@ -92,6 +99,7 @@ void VisualSpeaker::signal() { void VisualSpeaker::dispatch() { uint32 frameNumber = R2_GLOBALS._events.getFrameNumber(); + assert(_action); // Delay check for character animation if (_delayAmount) { @@ -314,7 +322,7 @@ void SpeakerCaptain3210::proc15() { Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_captain; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -467,7 +475,7 @@ void SpeakerJocko3200::proc15() { Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_jocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -490,7 +498,7 @@ void SpeakerJocko3220::proc15() { Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_jocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -513,7 +521,7 @@ void SpeakerJocko3230::proc15() { Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_jocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -592,7 +600,7 @@ void SpeakerMiranda1625::proc15() { if (!_object2) { Scene1625 *scene = (Scene1625 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor3; + _object2 = &scene->_mirandaMouth; _object2->hide(); _object1.postInit(); _object1.setPosition(Common::Point(196, 65)); @@ -833,7 +841,7 @@ void SpeakerMiranda3600::proc15() { if (R2_GLOBALS._player._characterIndex == R2_MIRANDA) _object2 = &R2_GLOBALS._player; else - _object2 = &scene->_actor12; + _object2 = &scene->_miranda; _object2->hide(); _object1.postInit(); @@ -1007,10 +1015,10 @@ void SpeakerNej2750::proc15() { void SpeakerNej2800::proc15() { int v = _speakerMode; - Scene2750 *scene = (Scene2750 *)R2_GLOBALS._sceneManager._scene; + Scene2800 *scene = (Scene2800 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_nej; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1087,7 +1095,7 @@ void SpeakerPrivate3210::proc15() { Scene3210 *scene = (Scene3210 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_private; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1722,7 +1730,7 @@ void SpeakerQuinn3600::proc15() { if (R2_GLOBALS._player._characterIndex == R2_QUINN) _object2 = &R2_GLOBALS._player; else - _object2 = &scene->_actor10; + _object2 = &scene->_quinn; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1869,7 +1877,7 @@ void SpeakerRalf3245::proc15() { Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_ralf; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1921,7 +1929,7 @@ void SpeakerRocko3200::proc15() { Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_rocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1944,7 +1952,7 @@ void SpeakerRocko3220::proc15() { Scene3220 *scene = (Scene3220 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_rocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -1967,7 +1975,7 @@ void SpeakerRocko3230::proc15() { Scene3230 *scene = (Scene3230 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_rocko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2143,7 +2151,7 @@ void SpeakerSeeker1900::proc15() { } else { assert(R2_GLOBALS._sceneManager._sceneNumber == 1900); Scene1900 *scene = (Scene1900 *)R2_GLOBALS._sceneManager._scene; - _object2 = &scene->_actor1; + _object2 = &scene->_companion; } _object2->hide(); @@ -2433,7 +2441,7 @@ void SpeakerSeeker3600::proc15() { if (R2_GLOBALS._player._characterIndex == R2_SEEKER) _object2 = &R2_GLOBALS._player; else - _object2 = &scene->_actor11; + _object2 = &scene->_seeker; _object2->hide(); _object1.postInit(); @@ -2569,7 +2577,7 @@ void SpeakerSocko3200::proc15() { Scene3200 *scene = (Scene3200 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor3; + _object2 = &scene->_socko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2735,7 +2743,7 @@ void SpeakerTeal3240::proc15() { Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor1; + _object2 = &scene->_teal; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2816,7 +2824,7 @@ void SpeakerTeal3600::proc15() { int v = _speakerMode; if (!_object2) { - _object2 = &scene->_actor5; + _object2 = &scene->_teal; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2887,7 +2895,7 @@ void SpeakerTomko3245::proc15() { Scene3245 *scene = (Scene3245 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_tomko; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -2980,7 +2988,7 @@ void SpeakerWebbster3240::proc15() { Scene3240 *scene = (Scene3240 *)R2_GLOBALS._sceneManager._scene; if (!_object2) { - _object2 = &scene->_actor2; + _object2 = &scene->_webbster; _object2->hide(); _object1.postInit(); _object1.setPosition(_object2->_position); @@ -3209,7 +3217,7 @@ void SpeakerDutyOfficer180::proc15() { _object1.animate(ANIM_MODE_2, NULL); break; case 1: - _action = NULL; + _action->_action = NULL; _object1.setup(76, 2, 1); _object1.animate(ANIM_MODE_5, this); break; diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp index dbc122e6e4..f9e84e8913 100644 --- a/engines/tsage/saveload.cpp +++ b/engines/tsage/saveload.cpp @@ -47,6 +47,8 @@ SavedObject::~SavedObject() { Saver::Saver() { _macroSaveFlag = false; _macroRestoreFlag = false; + + _factoryPtr = nullptr; } Saver::~Saver() { @@ -127,7 +129,6 @@ Common::Error Saver::save(int slot, const Common::String &saveName) { // Set fields _macroSaveFlag = true; - _saveSlot = slot; // Try and create the save file Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(g_vm->generateSaveName(slot)); @@ -177,7 +178,6 @@ Common::Error Saver::restore(int slot) { // Set fields _macroRestoreFlag = true; - _saveSlot = slot; _unresolvedPtrs.clear(); // Set up the serializer diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h index d43ef792bc..0d0457981f 100644 --- a/engines/tsage/saveload.h +++ b/engines/tsage/saveload.h @@ -33,7 +33,7 @@ namespace TsAGE { typedef void (*SaveNotifierFn)(bool postFlag); -#define TSAGE_SAVEGAME_VERSION 10 +#define TSAGE_SAVEGAME_VERSION 11 class SavedObject; @@ -48,7 +48,7 @@ struct tSageSavegameHeader { /*--------------------------------------------------------------------------*/ -// FIXME: workaround to supress spurious strict-alias warnings on older GCC +// FIXME: workaround to suppress spurious strict-alias warnings on older GCC // versions. this should be resolved with the savegame rewrite #define SYNC_POINTER(x) do { \ SavedObject **y = (SavedObject **)((void *)&x); \ @@ -59,7 +59,7 @@ struct tSageSavegameHeader { if (s.isLoading()) FIELD = (TYPE)v_##FIELD; /** - * Derived serializer class with extra synchronisation types + * Derived serializer class with extra synchronization types */ class Serializer : public Common::Serializer { public: @@ -212,7 +212,6 @@ private: bool _macroSaveFlag; bool _macroRestoreFlag; - int _saveSlot; void resolveLoadPointers(); public: diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp index 58bb8c4a44..1726d6ad20 100644 --- a/engines/tsage/scenes.cpp +++ b/engines/tsage/scenes.cpp @@ -43,6 +43,7 @@ SceneManager::SceneManager() { g_saver->addListener(this); _objectCount = 0; _loadMode = 0; + _sceneLoadCount = 0; } SceneManager::~SceneManager() { @@ -273,6 +274,11 @@ Scene::Scene() : _sceneBounds(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), _activeScreenNumber = 0; _oldSceneBounds = Rect(4000, 4000, 4100, 4100); Common::fill(&_zoomPercents[0], &_zoomPercents[256], 0); + + _field12 = 0; + _screenNumber = 0; + _fieldA = 0; + _fieldE = 0; } Scene::~Scene() { diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp index 844cfc1d4d..0946b6c419 100644 --- a/engines/tsage/sound.cpp +++ b/engines/tsage/sound.cpp @@ -969,7 +969,7 @@ void SoundManager::sfRethinkVoiceTypes() { int entryIndex = -1; for (uint idx = 0; idx < vtStruct->_entries.size(); ++idx) { if (vtStruct->_entries[idx]._voiceNum == foundIndex) { - foundIndex = true; + foundMatch = true; if (!vtStruct->_entries[idx]._type0._sound2) { entryIndex = idx; break; @@ -2540,6 +2540,11 @@ PlayStream::PlayStream(): EventHandler() { _index = NULL; _endAction = NULL; _audioStream = NULL; + + _resData._fileChunkSize = 0; + _resData._indexSize = 0; + _resData._chunkSize = 0; + _voiceNum = 0; } PlayStream::~PlayStream() { @@ -2616,6 +2621,7 @@ bool PlayStream::play(int voiceNum, EventHandler *endAction) { g_vm->_mixer->playStream(Audio::Mixer::kSpeechSoundType, &_soundHandle, _audioStream, DisposeAfterUse::YES); _voiceNum = voiceNum; + _endAction = endAction; return true; } @@ -2700,13 +2706,8 @@ SoundDriver::SoundDriver() { const byte adlib_group_data[] = { 1, 1, 9, 1, 0xff }; -const byte v440B0[9] = { 0, 1, 2, 6, 7, 8, 12, 13, 14 }; - -const byte v440B9[9] = { 3, 4, 5, 9, 10, 11, 15, 16, 17 }; - -const byte v440C2[18] = { - 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21 -}; +const byte adlib_operator1_offset[] = { 0, 1, 2, 8, 9, 10, 16, 17, 18 }; +const byte adlib_operator2_offset[] = { 3, 4, 5, 11, 12, 13, 19, 20, 21 }; const byte v44134[64] = { 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -2837,10 +2838,10 @@ void AdlibSoundDriver::playSound(const byte *channelData, int dataOffset, int pr _v4409E[channel] = dataP + offset - _patchData; // Set sustain/release - int portNum = v440C2[v440B0[channel]] + 0x80; + int portNum = adlib_operator1_offset[channel] + 0x80; write(portNum, (_portContents[portNum] & 0xF0) | 0xF); - portNum = v440C2[v440B9[channel]] + 0x80; + portNum = adlib_operator2_offset[channel] + 0x80; write(portNum, (_portContents[portNum] & 0xF0) | 0xF); if (_channelVoiced[channel]) @@ -2897,10 +2898,10 @@ void AdlibSoundDriver::updateChannelVolume(int channelNum) { int level1 = !_v44082[channelNum] ? 63 - _v44070[channelNum] : 63 - v44134[volume * _v44070[channelNum] / 63]; - int portNum = v440C2[v440B0[channelNum]] + 0x40; + int portNum = adlib_operator1_offset[channelNum] + 0x40; write(portNum, (_portContents[portNum] & 0x80) | level1); - portNum = v440C2[v440B9[channelNum]] + 0x40; + portNum = adlib_operator2_offset[channelNum] + 0x40; write(portNum, (_portContents[portNum] & 0x80) | level2); } @@ -2917,7 +2918,7 @@ void AdlibSoundDriver::clearVoice(int channel) { void AdlibSoundDriver::updateChannel(int channel) { const byte *dataP = _patchData + _v4409E[channel]; - int portOffset = v440C2[v440B0[channel]]; + int portOffset = adlib_operator1_offset[channel]; int portNum = portOffset + 0x20; int portValue = 0; @@ -2940,7 +2941,7 @@ void AdlibSoundDriver::updateChannel(int channel) { write(0x80 + portOffset, *(dataP + 14) | (*(dataP + 13) << 4)); write(0xE0 + portOffset, (_portContents[0xE0 + portOffset] & 0xFC) | *(dataP + 15)); - portOffset = v440C2[v440B9[channel]]; + portOffset = adlib_operator2_offset[channel]; portNum = portOffset + 0x20; portValue = 0; if (*(dataP + 17)) @@ -3098,10 +3099,12 @@ void SoundBlasterDriver::playSound(const byte *channelData, int dataOffset, int updateVoice(channel); // Set the new channel data - _channelData = channelData + dataOffset; + _channelData = channelData + dataOffset + 18; // Make a copy of the buffer int dataSize = g_vm->_memoryManager.getSize(channelData); + dataSize -= 18; + byte *soundData = (byte *)malloc(dataSize - dataOffset); Common::copy(_channelData, _channelData + (dataSize - dataOffset), soundData); diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h index 95d0337af3..5d0bc92c1f 100644 --- a/engines/tsage/sound.h +++ b/engines/tsage/sound.h @@ -98,7 +98,7 @@ public: virtual const GroupData *getGroupData() { return NULL; } // Method #3 virtual void installPatch(const byte *data, int size) {} // Method #4 virtual void poll() {} // Method #5 - virtual void proc12() {} // Method #6 + virtual void method6() {} // Method #6 virtual int setMasterVolume(int volume) { return 0; } // Method #7 virtual void proc16() {} // Method #8 virtual void proc18(int al, VoiceType voiceType) {} // Method #9 diff --git a/engines/tsage/tsage.cpp b/engines/tsage/tsage.cpp index 87697f950b..9956d5c7fb 100644 --- a/engines/tsage/tsage.cpp +++ b/engines/tsage/tsage.cpp @@ -38,6 +38,7 @@ TSageEngine::TSageEngine(OSystem *system, const tSageGameDescription *gameDesc) _gameDescription(gameDesc) { g_vm = this; DebugMan.addDebugChannel(kRingDebugScripts, "scripts", "Scripts debugging"); + _debugger = nullptr; if (g_vm->getFeatures() & GF_DEMO) _debugger = new DemoDebugger(); else if (g_vm->getGameID() == GType_Ringworld) @@ -103,7 +104,7 @@ void TSageEngine::initialize() { g_globals = new Ringworld2::Ringworld2Globals(); // Setup the user interface - T2_GLOBALS._uiElements.setup(Common::Point(0, UI_INTERFACE_Y - 2)); + T2_GLOBALS._uiElements.setup(Common::Point(0, UI_INTERFACE_Y)); // Reset all global variables R2_GLOBALS.reset(); diff --git a/engines/tsage/user_interface.cpp b/engines/tsage/user_interface.cpp index 09cc2fd56d..c7053a073d 100644 --- a/engines/tsage/user_interface.cpp +++ b/engines/tsage/user_interface.cpp @@ -87,7 +87,7 @@ void UIQuestion::showDescription(CursorType cursor) { Ringworld2::SceneExt *scene = static_cast<Ringworld2::SceneExt *> (R2_GLOBALS._sceneManager._scene); if (!scene->_sceneAreas.contains(R2_GLOBALS._scannerDialog)) - R2_GLOBALS._scannerDialog->proc12(4, 1, 1, 160, 125); + R2_GLOBALS._scannerDialog->setup2(4, 1, 1, 160, 125); } else { // Show object description SceneItem::display2(3, (int)cursor); @@ -276,11 +276,29 @@ void UICollection::draw() { Rect(0, UI_INTERFACE_Y, SCREEN_WIDTH, SCREEN_HEIGHT), Rect(0, UI_INTERFACE_Y, SCREEN_WIDTH, SCREEN_HEIGHT)); + if (g_vm->getGameID() == GType_Ringworld2) + r2rDrawFrame(); + _clearScreen = 1; g_globals->_sceneManager._scene->_sceneBounds = savedBounds; } } +void UICollection::r2rDrawFrame() { + Visage visage; + visage.setVisage(2, 1); + GfxSurface vertLine = visage.getFrame(1); + GfxSurface horizLine = visage.getFrame(2); + + GLOBALS._screenSurface.copyFrom(horizLine, 0, 0); + GLOBALS._screenSurface.copyFrom(vertLine, 0, 3); + GLOBALS._screenSurface.copyFrom(vertLine, SCREEN_WIDTH - 4, 3); + + // Restrict drawing area to exclude the borders at the edge of the screen + R2_GLOBALS._screenSurface._clipRect = Rect(4, 4, SCREEN_WIDTH - 4, + SCREEN_HEIGHT - 4); +} + /*--------------------------------------------------------------------------*/ UIElements::UIElements(): UICollection() { @@ -289,6 +307,10 @@ UIElements::UIElements(): UICollection() { else _cursorVisage.setVisage(1, 5); g_saver->addLoadNotifier(&UIElements::loadNotifierProc); + + _slotStart = 0; + _scoreValue = 0; + _active = false; } void UIElements::synchronize(Serializer &s) { diff --git a/engines/tsage/user_interface.h b/engines/tsage/user_interface.h index d06dccd9a4..60cefc0751 100644 --- a/engines/tsage/user_interface.h +++ b/engines/tsage/user_interface.h @@ -95,6 +95,8 @@ public: }; class UICollection: public EventHandler { +private: + void r2rDrawFrame(); protected: void erase(); public: |