diff options
author | Torbjörn Andersson | 2005-05-31 12:53:55 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2005-05-31 12:53:55 +0000 |
commit | 55f98f9b041c4ef2e59215e9cbc2f5190f163cbe (patch) | |
tree | 4bf9bf3ae9810f2b4752025b5049028d014c3b03 | |
parent | 0eb4e9411679a927c9fe255b0b1a105920d1a5d8 (diff) | |
download | scummvm-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
-rw-r--r-- | sword2/sword2.cpp | 13 | ||||
-rw-r--r-- | sword2/sword2.h | 1 |
2 files changed, 14 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() { diff --git a/sword2/sword2.h b/sword2/sword2.h index afa0a2a5b2..ffbe086b24 100644 --- a/sword2/sword2.h +++ b/sword2/sword2.h @@ -78,6 +78,7 @@ struct MouseEvent { struct KeyboardEvent { bool pending; + uint32 repeat; uint16 ascii; int keycode; int modifiers; |