aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorStrangerke2014-11-03 20:29:09 +0100
committerPaul Gilbert2014-12-12 22:22:10 -0500
commitd5ddd2268106d57c8f5cb84d1afd67f26a7a3ccc (patch)
tree600e755557a74ababf9197a68680912070bc084a /engines
parent43e8e905906ad77f1a98efd255ee7589edff7518 (diff)
downloadscummvm-rg350-d5ddd2268106d57c8f5cb84d1afd67f26a7a3ccc.tar.gz
scummvm-rg350-d5ddd2268106d57c8f5cb84d1afd67f26a7a3ccc.tar.bz2
scummvm-rg350-d5ddd2268106d57c8f5cb84d1afd67f26a7a3ccc.zip
ACCESS: Implement mWhileFall
Diffstat (limited to 'engines')
-rw-r--r--engines/access/amazon/amazon_scripts.cpp81
-rw-r--r--engines/access/amazon/amazon_scripts.h3
2 files changed, 83 insertions, 1 deletions
diff --git a/engines/access/amazon/amazon_scripts.cpp b/engines/access/amazon/amazon_scripts.cpp
index a39b8ae6e2..af619cb7e6 100644
--- a/engines/access/amazon/amazon_scripts.cpp
+++ b/engines/access/amazon/amazon_scripts.cpp
@@ -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");
diff --git a/engines/access/amazon/amazon_scripts.h b/engines/access/amazon/amazon_scripts.h
index fb2c66f685..ca96de60d7 100644
--- a/engines/access/amazon/amazon_scripts.h
+++ b/engines/access/amazon/amazon_scripts.h
@@ -40,11 +40,14 @@ protected:
virtual void executeCommand(int commandIndex);
void doFlyCell();
+ void doFallCell();
void scrollFly();
+ void scrollFall();
void cLoop();
void mWhile1();
void mWhile2();
void mWhileFly();
+ void mWhileFall();
void mWhile(int param1);
void guardSee();
void setGuardFrame();