[Scummvm-cvs-logs] CVS: scummvm/gui console.h,1.27,1.28 console.cpp,1.51,1.52

Max Horn fingolfin at users.sourceforge.net
Sun Dec 12 13:24:01 CET 2004


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17239

Modified Files:
	console.h console.cpp 
Log Message:
clean up slide code

Index: console.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- console.h	27 Nov 2004 01:25:25 -0000	1.27
+++ console.h	12 Dec 2004 21:23:21 -0000	1.28
@@ -59,7 +59,13 @@
 	bool	_caretVisible;
 	uint32	_caretTime;
 	
-	bool	_slideUpAndClose;
+	enum SlideMode {
+		kNoSlideMode,
+		kUpSlideMode,
+		kDownSlideMode
+	};
+		
+	SlideMode	_slideMode;
 	uint32	_slideTime;
 
 	ScrollBarWidget *_scrollBar;

Index: console.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- console.cpp	27 Nov 2004 01:25:25 -0000	1.51
+++ console.cpp	12 Dec 2004 21:23:21 -0000	1.52
@@ -35,7 +35,7 @@
 #define kConsoleLineHeight	(g_consolefont.getFontHeight() + 2)
 
 enum {
-	kConsoleSlideDownDuration = 300	// Time in milliseconds
+	kConsoleSlideDownDuration = 200	// Time in milliseconds
 };
 
 
@@ -65,7 +65,7 @@
 	_caretVisible = false;
 	_caretTime = 0;
 
-	_slideUpAndClose = false;
+	_slideMode = kNoSlideMode;
 	_slideTime = 0;
 
 	// Add scrollbar
@@ -104,9 +104,9 @@
 }
 
 void ConsoleDialog::slideUpAndClose() {
-	if (!_slideUpAndClose) {
+	if (_slideMode == kNoSlideMode) {
 		_slideTime = g_system->getMillis();
-		_slideUpAndClose = true;
+		_slideMode = kUpSlideMode;
 	}
 }
 
@@ -117,6 +117,7 @@
 	// certain period of time. 
 	_y = -_h;
 	_slideTime = g_system->getMillis();
+	_slideMode = kDownSlideMode;
 
 	Dialog::open();
 	if (_promptStartPos == -1) {
@@ -166,20 +167,25 @@
 	}
 	
 	// Perform the "slide animation".
-	if (_slideUpAndClose) {
-		_y = -(int)(_h * (float)(g_system->getMillis() - _slideTime) / kConsoleSlideDownDuration);
-		if (_y <= -_h) {
-			_slideUpAndClose = false;
+	if (_slideMode != kNoSlideMode) {
+		const float tmp = (float)(g_system->getMillis() - _slideTime) / kConsoleSlideDownDuration;
+		if (_slideMode == kUpSlideMode) {
+			_y = (int)(_h * (0.0 - tmp));
+		} else {
+			_y = (int)(_h * (tmp - 1.0));
+		}
+		
+		if (_slideMode == kDownSlideMode && _y > 0) {
+			// End the slide
+			_slideMode = kNoSlideMode;
+			_y = 0;
+			draw();
+		} else if (_slideMode == kUpSlideMode && _y <= -_h) {
+			// End the slide
+			_slideMode = kNoSlideMode;
 			close();
 		} else
 			draw();
-	} else
-	if (_y < 0) {
-		_y = -(int)(_h * (1.0 - (float)(g_system->getMillis() - _slideTime) / kConsoleSlideDownDuration));
-		if (_y > 0)
-			_y = 0;
-
-		draw();
 	}
 }
 
@@ -190,7 +196,7 @@
 void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
 	int i;
 	
-	if (_slideUpAndClose)
+	if (_slideMode != kNoSlideMode)
 		return;
 
 	switch (keycode) {





More information about the Scummvm-git-logs mailing list