[Scummvm-cvs-logs] scummvm master -> de4ec97f6dbb1b97ef8c9eda453f51dbd318cafe

urukgit urukgit at users.noreply.github.com
Wed Jan 15 20:03:39 CET 2014


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
de4ec97f6d AVALANCHE: Implement wobble, move it to Animation.


Commit: de4ec97f6dbb1b97ef8c9eda453f51dbd318cafe
    https://github.com/scummvm/scummvm/commit/de4ec97f6dbb1b97ef8c9eda453f51dbd318cafe
Author: uruk (koppirnyo at gmail.com)
Date: 2014-01-15T11:03:06-08:00

Commit Message:
AVALANCHE: Implement wobble, move it to Animation.

Changed paths:
    engines/avalanche/animation.cpp
    engines/avalanche/animation.h
    engines/avalanche/graphics.cpp
    engines/avalanche/graphics.h
    engines/avalanche/parser.cpp
    engines/avalanche/pingo.cpp
    engines/avalanche/pingo.h
    engines/avalanche/timer.cpp



diff --git a/engines/avalanche/animation.cpp b/engines/avalanche/animation.cpp
index 9f9822e..639abe9 100644
--- a/engines/avalanche/animation.cpp
+++ b/engines/avalanche/animation.cpp
@@ -1443,6 +1443,25 @@ void Animation::thunder() {
 	_vm->_graphics->setBackgroundColor(kColorBlack);
 }
 
+/**
+* Makes the screen wobble.
+*/
+void Animation::wobble() {
+	_vm->_graphics->saveScreen();
+
+	for (int i = 0; i < 26; i++) {
+		_vm->_graphics->shiftScreen();
+		_vm->_graphics->refreshScreen();
+		_vm->_system->delayMillis(i * 7);
+
+		_vm->_graphics->restoreScreen();
+		_vm->_system->delayMillis(i * 7);
+	}
+
+	_vm->_graphics->restoreScreen();
+	_vm->_graphics->removeBackup();
+}
+
 void Animation::setDirection(Direction dir) {
 	_direction = dir;
 }
diff --git a/engines/avalanche/animation.h b/engines/avalanche/animation.h
index d3b52c7..aa4e648 100644
--- a/engines/avalanche/animation.h
+++ b/engines/avalanche/animation.h
@@ -129,6 +129,8 @@ public:
 	void drawLightning(int16 x1, int16 y1, int16 x2, int16 y2);
 	void thunder();
 
+	void wobble();
+
 	void setDirection(Direction dir);
 	void setOldDirection(Direction dir);
 	Direction getDirection();
diff --git a/engines/avalanche/graphics.cpp b/engines/avalanche/graphics.cpp
index fec483b..82248f5 100644
--- a/engines/avalanche/graphics.cpp
+++ b/engines/avalanche/graphics.cpp
@@ -577,6 +577,16 @@ Graphics::Surface GraphicManager::loadPictureSign(Common::File &file, int xl, in
 	return picture;
 }
 
+/**
+* Shifts the whole screen down by one line and fills the gap with black.
+*/
+void GraphicManager::shiftScreen() {
+	for (uint16 y = _surface.h - 1; y > 1; y--)
+		memcpy(_surface.getBasePtr(0, y), _surface.getBasePtr(0, y - 1), _surface.w);
+
+	_surface.drawLine(0, 0, _surface.w, 0, kColorBlack);
+}
+
 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 4c811e5..ea3b621 100644
--- a/engines/avalanche/graphics.h
+++ b/engines/avalanche/graphics.h
@@ -87,6 +87,9 @@ public:
 	void nimDrawLogo();
 	void nimFree();
 
+	// Used in wobble()
+	void shiftScreen();
+
 	void clearAlso();
 	void clearTextBar();
 	void setAlsoLine(int x1, int y1, int x2, int y2, Color color);
diff --git a/engines/avalanche/parser.cpp b/engines/avalanche/parser.cpp
index 362c818..34cdb95 100644
--- a/engines/avalanche/parser.cpp
+++ b/engines/avalanche/parser.cpp
@@ -1144,7 +1144,7 @@ void Parser::swallow() {
 				return;
 			}
 			_vm->_dialogs->displayScrollChain('U', 1);
-			_vm->_pingo->wobble();
+			_vm->_animation->wobble();
 			_vm->_dialogs->displayScrollChain('U', 2);
 			_vm->_objects[kObjectWine - 1] = false;
 			_vm->refreshObjectList();
diff --git a/engines/avalanche/pingo.cpp b/engines/avalanche/pingo.cpp
index d8550f9..40467ab 100644
--- a/engines/avalanche/pingo.cpp
+++ b/engines/avalanche/pingo.cpp
@@ -56,10 +56,6 @@ void Pingo::copyPage(byte frp, byte top) { // taken from Copy02 (above)
 	warning("STUB: Pingo::copyPage()");
 }
 
-void Pingo::wobble() {
-	warning("STUB: Pingo::wobble()");
-}
-
 void Pingo::winningPic() {
 	Common::File f;
 	_vm->fadeOut();
diff --git a/engines/avalanche/pingo.h b/engines/avalanche/pingo.h
index e3a516c..6eecaf6 100644
--- a/engines/avalanche/pingo.h
+++ b/engines/avalanche/pingo.h
@@ -43,7 +43,6 @@ public:
 	void copy02();
 	void copy03();
 	void copyPage(byte frp, byte top);
-	void wobble();
 	void winningPic();
 
 private:
diff --git a/engines/avalanche/timer.cpp b/engines/avalanche/timer.cpp
index 40f2af5..c8ea820 100644
--- a/engines/avalanche/timer.cpp
+++ b/engines/avalanche/timer.cpp
@@ -492,7 +492,7 @@ void Timer::buyDrinks() {
 	_vm->_malagauche = 0;
 
 	_vm->_dialogs->displayScrollChain('D', _vm->_drinking); // Display message about it.
-	_vm->_pingo->wobble(); // Do the special effects.
+	_vm->_animation->wobble(); // Do the special effects.
 	_vm->_dialogs->displayScrollChain('D', 1); // That'll be thruppence.
 	if (_vm->decreaseMoney(3)) // Pay 3d.
 		_vm->_dialogs->displayScrollChain('D', 3); // Tell 'em you paid up.






More information about the Scummvm-git-logs mailing list