From 6944797891cb80cb465d0d06ab824f498e7459d8 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Mon, 1 Jan 2007 07:37:07 +0000 Subject: 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. svn-id: r24964 --- engines/agos/agos.cpp | 2 ++ engines/agos/agos.h | 2 ++ engines/agos/event.cpp | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp index e7147ef269..8003c2843c 100644 --- a/engines/agos/agos.cpp +++ b/engines/agos/agos.cpp @@ -81,6 +81,8 @@ AGOSEngine::AGOSEngine(OSystem *syst) _debugger = 0; _keyPressed = 0; + _keyRepeatKey = 0; + _keyRepeatTime = 0; _gameFile = 0; diff --git a/engines/agos/agos.h b/engines/agos/agos.h index ecc12c2ad4..043ab9709b 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -213,6 +213,8 @@ protected: const GameSpecificSettings *gss; byte _keyPressed; + byte _keyRepeatKey; + uint32 _keyRepeatTime; typedef enum { FORMAT_NONE, diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp index 1f083d23dd..37a72db995 100644 --- a/engines/agos/event.cpp +++ b/engines/agos/event.cpp @@ -369,6 +369,13 @@ void AGOSEngine::delay(uint amount) { _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; @@ -420,6 +427,11 @@ void AGOSEngine::delay(uint amount) { 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() { -- cgit v1.2.3