ACCESS: Implement mWhileFall

This commit is contained in:
Strangerke 2014-11-03 20:29:09 +01:00 committed by Paul Gilbert
parent 43e8e90590
commit d5ddd22681
2 changed files with 83 additions and 1 deletions

View file

@ -226,6 +226,27 @@ void AmazonScripts::doFlyCell() {
}
}
void AmazonScripts::doFallCell() {
if (_vm->_scaleI <= 0)
return;
_game->_destIn = &_game->_buffer2;
// 115, 11, i
_vm->_screen->plotImage(_vm->_objectsTable[20], _game->_plane._planeCount / 6, Common::Point(115, 11));
_vm->_scaleI -= 3;
_vm->_scale = _vm->_scaleI;
_vm->_screen->setScaleTable(_vm->_scale);
++_game->_plane._xCount;
if (_game->_plane._xCount == 5)
return;
_game->_plane._xCount = 0;
if (_game->_plane._planeCount == 18)
_game->_plane._planeCount = 0;
else
_game->_plane._planeCount += 6;
}
void AmazonScripts::scrollFly() {
_vm->copyBF1BF2();
_vm->_newRects.clear();
@ -234,6 +255,14 @@ void AmazonScripts::scrollFly() {
_vm->copyBF2Vid();
}
void AmazonScripts::scrollFall() {
_vm->copyBF1BF2();
_vm->_newRects.clear();
doFallCell();
_vm->copyRects();
_vm->copyBF2Vid();
}
void AmazonScripts::mWhileFly() {
_vm->_events->hideCursor();
_vm->_screen->clearScreen();
@ -290,6 +319,56 @@ void AmazonScripts::mWhileFly() {
}
}
void AmazonScripts::mWhileFall() {
_vm->_events->hideCursor();
_vm->_screen->clearScreen();
_vm->_screen->setBufferScan();
_vm->_screen->fadeOut();
_vm->_screen->_scrollX = 0;
_vm->_room->buildScreen();
_vm->copyBF2Vid();
_vm->_screen->fadeIn();
_vm->_oldRects.clear();
_vm->_newRects.clear();
// KEYFLG = 0;
_vm->_screen->_scrollRow = _vm->_screen->_scrollCol = 0;
_vm->_screen->_scrollX = _vm->_screen->_scrollY = 0;
_vm->_player->_scrollAmount = 3;
_vm->_scaleI = 255;
_game->_plane._xCount = 0;
_game->_plane._planeCount = 0;
while (true) {
int _vbCount = 4;
if (_vm->_screen->_scrollCol + _vm->_screen->_vWindowWidth == _vm->_room->_playFieldWidth) {
_vm->_events->showCursor();
return;
}
_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);
}
scrollFall();
g_system->delayMillis(10);
while(_vbCount > 0) {
// To be rewritten when NEWTIMER is done
_vm->_events->checkForNextFrameCounter();
_vbCount--;
}
}
}
void AmazonScripts::mWhile(int param1) {
switch(param1) {
case 1:
@ -299,7 +378,7 @@ void AmazonScripts::mWhile(int param1) {
mWhileFly();
break;
case 3:
warning("TODO FALL");
mWhileFall();
break;
case 4:
warning("TODO JWALK");