aboutsummaryrefslogtreecommitdiff
path: root/sword2/sword2.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-05-31 12:53:55 +0000
committerTorbjörn Andersson2005-05-31 12:53:55 +0000
commit55f98f9b041c4ef2e59215e9cbc2f5190f163cbe (patch)
tree4bf9bf3ae9810f2b4752025b5049028d014c3b03 /sword2/sword2.cpp
parent0eb4e9411679a927c9fe255b0b1a105920d1a5d8 (diff)
downloadscummvm-rg350-55f98f9b041c4ef2e59215e9cbc2f5190f163cbe.tar.gz
scummvm-rg350-55f98f9b041c4ef2e59215e9cbc2f5190f163cbe.tar.bz2
scummvm-rg350-55f98f9b041c4ef2e59215e9cbc2f5190f163cbe.zip
Added keyboard auto-repeat. (I've been meaning to do that for a long time.)
svn-id: r18302
Diffstat (limited to 'sword2/sword2.cpp')
-rw-r--r--sword2/sword2.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/sword2/sword2.cpp b/sword2/sword2.cpp
index 9daced6548..06363f51f5 100644
--- a/sword2/sword2.cpp
+++ b/sword2/sword2.cpp
@@ -132,6 +132,7 @@ Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst) : Engine(syst)
_debugger = NULL;
_keyboardEvent.pending = false;
+ _keyboardEvent.repeat = 0;
_mouseEvent.pending = false;
_wantSfxDebug = false;
@@ -475,17 +476,23 @@ uint32 Sword2Engine::setEventFilter(uint32 filter) {
void Sword2Engine::parseEvents() {
OSystem::Event event;
+
+ uint32 now = _system->getMillis();
while (_system->pollEvent(event)) {
switch (event.type) {
case OSystem::EVENT_KEYDOWN:
if (!(_eventFilter & RD_KEYDOWN)) {
_keyboardEvent.pending = true;
+ _keyboardEvent.repeat = now + 400;
_keyboardEvent.ascii = event.kbd.ascii;
_keyboardEvent.keycode = event.kbd.keycode;
_keyboardEvent.modifiers = event.kbd.flags;
}
break;
+ case OSystem::EVENT_KEYUP:
+ _keyboardEvent.repeat = 0;
+ break;
case OSystem::EVENT_MOUSEMOVE:
if (!(_eventFilter & RD_KEYDOWN)) {
_mouse->setPos(event.mouse.x, event.mouse.y - MENUDEEP);
@@ -534,6 +541,12 @@ void Sword2Engine::parseEvents() {
break;
}
}
+
+ // Handle keyboard auto-repeat
+ if (!_keyboardEvent.pending && _keyboardEvent.repeat && now >= _keyboardEvent.repeat) {
+ _keyboardEvent.pending = true;
+ _keyboardEvent.repeat = now + 100;
+ }
}
void Sword2Engine::gameCycle() {