diff --git a/engines/access/amazon/amazon_resources.cpp b/engines/access/amazon/amazon_resources.cpp index 192af2c9b696..af631eae7ed5 100644 --- a/engines/access/amazon/amazon_resources.cpp +++ b/engines/access/amazon/amazon_resources.cpp @@ -1557,6 +1557,23 @@ const byte MAP2[32] = { const byte *MAPTBL[3] = {MAP0, MAP1, MAP2}; +const int DOWNRIVEROBJ[14][4] = { + { 3, 77, 0, 40 }, + { 2, 30, 0, 30 }, + { 2, 290, 0, 50 }, + { 1, 210, 0, 70 }, + { 2, 350, 0, 30 }, + { 1, 370, 0, 20 }, + { 2, 480, 0, 60 }, + { 3, 395, 0, 10 }, + { 1, 550, 0, 30 }, + { 2, 620, 0, 50 }, + { 1, 690, 0, 10 }, + { 2, 715, 0, 40 }, + { 1, 770, 0, 30 }, + { 3, 700, 0, 20 } +}; + const RiverStruct RIVER0OBJECTS[45] = { {16, 31, 6400, 0, 4, 12}, {16, 31, 6200, 0, 2, 12}, diff --git a/engines/access/amazon/amazon_resources.h b/engines/access/amazon/amazon_resources.h index ec412766bc25..02560ccac4ad 100644 --- a/engines/access/amazon/amazon_resources.h +++ b/engines/access/amazon/amazon_resources.h @@ -99,6 +99,8 @@ extern const byte MAP2[32]; extern const byte *MAPTBL[3]; +extern const int DOWNRIVEROBJ[14][4]; + extern const RiverStruct RIVER0OBJECTS[45]; extern const RiverStruct ENDRIVER0[1]; extern const RiverStruct RIVER1OBJECTS[49]; diff --git a/engines/access/amazon/amazon_scripts.cpp b/engines/access/amazon/amazon_scripts.cpp index c61229b5d1bc..4fc0a4ba91c9 100644 --- a/engines/access/amazon/amazon_scripts.cpp +++ b/engines/access/amazon/amazon_scripts.cpp @@ -782,23 +782,6 @@ void AmazonScripts::scrollRiver() { } void AmazonScripts::mWhileDownRiver() { - static const int RIVEROBJ[14][4] = { - {3, 77, 0, 40}, - {2, 30, 0, 30}, - {2, 290, 0, 50}, - {1, 210, 0, 70}, - {2, 350, 0, 30}, - {1, 370, 0, 20}, - {2, 480, 0, 60}, - {3, 395, 0, 10}, - {1, 550, 0, 30}, - {2, 620, 0, 50}, - {1, 690, 0, 10}, - {2, 715, 0, 40}, - {1, 770, 0, 30}, - {3, 700, 0, 20} - }; - _vm->_events->hideCursor(); _vm->_screen->setDisplayScan(); _vm->_screen->clearScreen(); @@ -813,8 +796,6 @@ void AmazonScripts::mWhileDownRiver() { _vm->_room->buildScreen(); _vm->copyBF2Vid(); - // KEYFLG = 0; - _vm->_player->_scrollAmount = 2; _vm->_destIn = &_vm->_buffer2; _xTrack = -7; @@ -829,10 +810,10 @@ void AmazonScripts::mWhileDownRiver() { _pNumObj = 14; for (int i = 0; i <_pNumObj; i++) { _pObject[i] = _vm->_objectsTable[33]; - _pImgNum[i] = RIVEROBJ[i][0]; - _pObjX[i] = RIVEROBJ[i][1]; - _pObjY[i] = RIVEROBJ[i][2]; - _pObjZ[i] = RIVEROBJ[i][3]; + _pImgNum[i] = DOWNRIVEROBJ[i][0]; + _pObjX[i] = DOWNRIVEROBJ[i][1]; + _pObjY[i] = DOWNRIVEROBJ[i][2]; + _pObjZ[i] = DOWNRIVEROBJ[i][3]; _pObjXl[i] = _pObjYl[i] = 0; } @@ -843,34 +824,35 @@ void AmazonScripts::mWhileDownRiver() { _game->_timers[4]._initTm = 350; ++_game->_timers[4]._flag; - while(true) { + while (!_vm->shouldQuit() && !_vm->_events->isKeyMousePressed() && + (_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth != _vm->_room->_playFieldWidth)) { _vm->_images.clear(); _vm->_events->_vbCount = 6; - while ((_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth != _vm->_room->_playFieldWidth) && _vm->_events->_vbCount) { - jungleMove(); - while (_vm->_screen->_scrollX >= TILE_WIDTH) { - _vm->_screen->_scrollX -= TILE_WIDTH; - ++_vm->_screen->_scrollCol; - _vm->_buffer1.moveBufferLeft(); - _vm->_room->buildColumn(_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth, _vm->_screen->_vWindowBytesWide); - } - pan(); - scrollRiver(); + _vm->_screen->_scrollX += _vm->_player->_scrollAmount; + while (_vm->_screen->_scrollX >= TILE_WIDTH) { + _vm->_screen->_scrollX -= TILE_WIDTH; + ++_vm->_screen->_scrollCol; + _vm->_buffer1.moveBufferLeft(); + _vm->_room->buildColumn(_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth, _vm->_screen->_vWindowBytesWide); + } - if (_game->_timers[3]._flag == 0) { - _game->_timers[3]._flag = 1; - _vm->_sound->playSound(1); - } else if (_game->_timers[4]._flag == 0) { - _game->_timers[4]._flag = 1; - _vm->_sound->playSound(0); - } + pan(); + scrollRiver(); - while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) { - _vm->_events->pollEventsAndWait(); - } + if (!_game->_timers[3]._flag) { + ++_game->_timers[3]._flag; + _vm->_sound->playSound(1); + } else if (!_game->_timers[4]._flag) { + ++_game->_timers[4]._flag; + _vm->_sound->playSound(0); + } + + while (!_vm->shouldQuit() && _vm->_events->_vbCount > 0) { + _vm->_events->pollEventsAndWait(); } } + _vm->_events->showCursor(); }