[Scummvm-cvs-logs] SF.net SVN: scummvm: [24964] scummvm/trunk/engines/agos

eriktorbjorn at users.sourceforge.net eriktorbjorn at users.sourceforge.net
Mon Jan 1 08:37:10 CET 2007


Revision: 24964
          http://scummvm.svn.sourceforge.net/scummvm/?rev=24964&view=rev
Author:   eriktorbjorn
Date:     2006-12-31 23:37:07 -0800 (Sun, 31 Dec 2006)

Log Message:
-----------
At Kirben's request, I've applied my old keyboard repeat patch for the AGOS
engine. Swampy's Adventures really needs it, and the more generic solution to
keyboard repeat is apparently stalled.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/event.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2007-01-01 05:44:34 UTC (rev 24963)
+++ scummvm/trunk/engines/agos/agos.cpp	2007-01-01 07:37:07 UTC (rev 24964)
@@ -81,6 +81,8 @@
 	_debugger = 0;
 
 	_keyPressed = 0;
+	_keyRepeatKey = 0;
+	_keyRepeatTime = 0;
 
 	_gameFile = 0;
 

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2007-01-01 05:44:34 UTC (rev 24963)
+++ scummvm/trunk/engines/agos/agos.h	2007-01-01 07:37:07 UTC (rev 24964)
@@ -213,6 +213,8 @@
 	const GameSpecificSettings *gss;
 
 	byte _keyPressed;
+	byte _keyRepeatKey;
+	uint32 _keyRepeatTime;
 
 	typedef enum {
 		FORMAT_NONE,

Modified: scummvm/trunk/engines/agos/event.cpp
===================================================================
--- scummvm/trunk/engines/agos/event.cpp	2007-01-01 05:44:34 UTC (rev 24963)
+++ scummvm/trunk/engines/agos/event.cpp	2007-01-01 07:37:07 UTC (rev 24964)
@@ -369,7 +369,14 @@
 					_keyPressed = 8;
 				else
 					_keyPressed = (byte)event.kbd.ascii;
+
+				_keyRepeatTime = _system->getMillis() + 400;
+				_keyRepeatKey = _keyPressed;
 				break;
+			case OSystem::EVENT_KEYUP:
+				_keyRepeatKey = 0;
+				_keyRepeatTime = 0;
+				break;
 			case OSystem::EVENT_MOUSEMOVE:
 				_sdlMouseX = event.mouse.x;
 				_sdlMouseY = event.mouse.y;
@@ -420,6 +427,11 @@
 
 		cur = _system->getMillis();
 	} while (cur < start + amount);
+
+	if (_keyPressed == 0 && _keyRepeatKey != 0 && _keyRepeatTime != 0 && cur >= _keyRepeatTime) {
+		_keyPressed = _keyRepeatKey;
+		_keyRepeatTime = cur + 100;
+	}
 }
 
 void AGOSEngine::timer_callback() {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list