diff options
| -rw-r--r-- | engines/avalanche/graphics.cpp | 13 | ||||
| -rw-r--r-- | engines/avalanche/graphics.h | 3 | ||||
| -rw-r--r-- | engines/avalanche/timer.cpp | 32 | 
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 ");  | 
