diff options
author | uruk | 2014-02-08 18:07:51 +0100 |
---|---|---|
committer | uruk | 2014-02-08 18:07:51 +0100 |
commit | 5c9029c7319f3e5bbffb0aba51b6d1e7a739df09 (patch) | |
tree | e5626b50aa2e1710a751b42f7f807810b1b3f622 | |
parent | bb596a5b1b6ee4737ac7161657f044a567fa620d (diff) | |
download | scummvm-rg350-5c9029c7319f3e5bbffb0aba51b6d1e7a739df09.tar.gz scummvm-rg350-5c9029c7319f3e5bbffb0aba51b6d1e7a739df09.tar.bz2 scummvm-rg350-5c9029c7319f3e5bbffb0aba51b6d1e7a739df09.zip |
AVALANCHE: Finish GhostRoom's implementation.
-rw-r--r-- | engines/avalanche/animation.cpp | 2 | ||||
-rw-r--r-- | engines/avalanche/ghostroom.cpp | 30 |
2 files changed, 27 insertions, 5 deletions
diff --git a/engines/avalanche/animation.cpp b/engines/avalanche/animation.cpp index a3c01af404..74dd2100e5 100644 --- a/engines/avalanche/animation.cpp +++ b/engines/avalanche/animation.cpp @@ -815,7 +815,7 @@ void Animation::callSpecial(uint16 which) { } break; case 4: // This is the ghost room link. - _sprites[0]->turn(kDirRight); // you'll see this after we get back from bootstrap + _sprites[0]->turn(kDirRight); // You'll see this after we get back. _vm->_timer->addTimer(1, Timer::kProcGhostRoomPhew, Timer::kReasonGhostRoomPhew); _vm->_ghostroom->run(); break; diff --git a/engines/avalanche/ghostroom.cpp b/engines/avalanche/ghostroom.cpp index dc75fff3e9..a6d84df2ef 100644 --- a/engines/avalanche/ghostroom.cpp +++ b/engines/avalanche/ghostroom.cpp @@ -28,12 +28,14 @@ #include "avalanche/avalanche.h" #include "avalanche/ghostroom.h" +#include "common/random.h" + namespace Avalanche { const int8 GhostRoom::kAdjustment[5] = { 7, 0, 7, 7, 7 }; const byte GhostRoom::kWaveOrder[5] = { 4, 0, 1, 2, 3 }; const byte GhostRoom::kGlerkFade[26] = { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, 0 }; -const byte GhostRoom::kGreldetFade[18] = { 1, 2, 3, 4, 5, 6, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1 }; +const byte GhostRoom::kGreldetFade[18] = { 0, 1, 2, 3, 4, 5, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0 }; GhostRoom::GhostRoom(AvalancheEngine *vm) { _vm = vm; @@ -287,7 +289,7 @@ void GhostRoom::run() { _vm->_graphics->refreshScreen(); // Avvy hurries back: - _glerkStage = 1; + _glerkStage = 0; _greldetCount = 18; _redGreldet = false; @@ -306,14 +308,34 @@ void GhostRoom::run() { _vm->_graphics->drawDot(x + 22, 136, kColorBlack); // Eyes would leave a trail 1 pixel high behind them. } + // Plot the Green Eyes: + if ((x % 53) == 5) { + bigGreenEyes(_glerkStage); + _glerkStage++; + } + + // Plot the Greldet: + + if (_greldetCount == 18) { + _greldetX = _vm->_rnd->getRandomNumber(599); + _greldetY = _vm->_rnd->getRandomNumber(79); + _greldetCount = 0; + _redGreldet = !_redGreldet; + } + + _vm->_graphics->ghostDrawPicture(_greldet[kGreldetFade[_greldetCount]][_redGreldet], _greldetX, _greldetY); + _greldetCount++; + _vm->_graphics->refreshScreen(); wait(10); } - warning("STUB: run()"); - CursorMan.showMouse(true); + _vm->_graphics->restoreScreen(); + _vm->_graphics->removeBackup(); + _vm->fadeOut(); + _vm->fadeIn(); } } // End of namespace Avalanche |