aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche
diff options
context:
space:
mode:
authoruruk2014-02-10 10:49:02 +0100
committeruruk2014-02-10 10:49:39 +0100
commit3f6d71dd258cf998c8fbca25ad98b4b8dfd1a9a6 (patch)
tree808153ff2df406de9acbef943a13cdee8fe85b47 /engines/avalanche
parenta4583ade56b7033e61b308b7a1a75f30235c350a (diff)
downloadscummvm-rg350-3f6d71dd258cf998c8fbca25ad98b4b8dfd1a9a6.tar.gz
scummvm-rg350-3f6d71dd258cf998c8fbca25ad98b4b8dfd1a9a6.tar.bz2
scummvm-rg350-3f6d71dd258cf998c8fbca25ad98b4b8dfd1a9a6.zip
AVALANCHE: Implement 'winning_pic'.
Diffstat (limited to 'engines/avalanche')
-rw-r--r--engines/avalanche/graphics.cpp13
-rw-r--r--engines/avalanche/graphics.h3
-rw-r--r--engines/avalanche/timer.cpp32
3 files changed, 46 insertions, 2 deletions
diff --git a/engines/avalanche/graphics.cpp b/engines/avalanche/graphics.cpp
index 6cafc0bde9..8699ad13cf 100644
--- a/engines/avalanche/graphics.cpp
+++ b/engines/avalanche/graphics.cpp
@@ -718,6 +718,19 @@ void GraphicManager::shiftScreen() {
_surface.drawLine(0, 0, _surface.w, 0, kColorBlack);
}
+void GraphicManager::drawWinningPic() {
+ Common::File file;
+
+ if (!file.open("finale.avd"))
+ error("AVALANCHE: Timer: File not found: finale.avd");
+
+ Graphics::Surface winning = loadPictureRaw(file, 640, 200);
+ drawPicture(_surface, winning, 0, 0);
+
+ winning.free();
+ file.close();
+}
+
void GraphicManager::clearAlso() {
_magics.fillRect(Common::Rect(0, 0, 640, 200), 0);
_magics.frameRect(Common::Rect(0, 45, 640, 161), 15);
diff --git a/engines/avalanche/graphics.h b/engines/avalanche/graphics.h
index d6625ccb61..822b4c7b64 100644
--- a/engines/avalanche/graphics.h
+++ b/engines/avalanche/graphics.h
@@ -92,6 +92,9 @@ public:
// Used in wobble()
void shiftScreen();
+ // Used in winning()
+ void drawWinningPic();
+
// Ghostroom's functions:
void ghostDrawGhost(byte ghostArr[2][66][26], uint16 destX, int16 destY); // Very similar to loadPictureSign(). TODO: Unify the two later if possible.
void ghostDrawGlerk(byte glerkArr[4][35][9], uint16 destX, uint16 destY); // Very similar to ghostDrawGhost(), but not enough to unify the two.
diff --git a/engines/avalanche/timer.cpp b/engines/avalanche/timer.cpp
index 091045f4e4..f63098aea8 100644
--- a/engines/avalanche/timer.cpp
+++ b/engines/avalanche/timer.cpp
@@ -632,11 +632,39 @@ void Timer::arkataShouts() {
addTimer(160, kProcArkataShouts, kReasonArkataShouts);
}
+/**
+ * @remarks Contains the content of the function 'winning_pic', originally located in PINGO.
+ */
void Timer::winning() {
_vm->_dialogs->displayScrollChain('Q', 79);
- //_vm->_pingo->winningPic();
- warning("STUB: Timer::winning()");
+ // This was originally located in winning_pic:
+ CursorMan.showMouse(false);
+ _vm->_graphics->saveScreen();
+ _vm->fadeOut();
+ _vm->_graphics->drawWinningPic();
+ _vm->_graphics->refreshScreen();
+ _vm->fadeIn();
+
+ // Waiting for a keypress or a left mouseclick:
+ Common::Event event;
+ bool escape = false;
+ while (!_vm->shouldQuit() && !escape) {
+ _vm->_graphics->refreshScreen();
+ while (_vm->getEvent(event)) {
+ if ((event.type == Common::EVENT_LBUTTONUP) || (event.type == Common::EVENT_KEYDOWN)) {
+ escape = true;
+ break;
+ }
+ }
+ }
+
+ _vm->fadeOut();
+ _vm->_graphics->restoreScreen();
+ _vm->_graphics->removeBackup();
+ _vm->fadeIn();
+ CursorMan.showMouse(true);
+ // winning_pic's end.
_vm->callVerb(kVerbCodeScore);
_vm->_dialogs->displayText(" T H E E N D ");