[Scummvm-git-logs] scummvm master -> 1be2092c9bdeceec4fdfd7b98813d1f948d90aba
antoniou79
a.antoniou79 at gmail.com
Wed Sep 2 20:28:57 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
1be2092c9b BLADERUNNER: Use unsigned difference for robust behavior
Commit: 1be2092c9bdeceec4fdfd7b98813d1f948d90aba
https://github.com/scummvm/scummvm/commit/1be2092c9bdeceec4fdfd7b98813d1f948d90aba
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2020-09-02T23:25:55+03:00
Commit Message:
BLADERUNNER: Use unsigned difference for robust behavior
For the emulation of repeated key firing while holding Esc or Return keys pressed
Changed paths:
engines/bladerunner/bladerunner.cpp
engines/bladerunner/bladerunner.h
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 1b127655fb..693d20b977 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -232,6 +232,10 @@ BladeRunnerEngine::BladeRunnerEngine(OSystem *syst, const ADGameDescription *des
_actorUpdateCounter = 0;
_actorUpdateTimeLast = 0;
+
+ _currentKeyDown.keycode = Common::KEYCODE_INVALID;
+ _keyRepeatTimeLast = 0;
+ _keyRepeatTimeDelay = 0;
}
BladeRunnerEngine::~BladeRunnerEngine() {
@@ -1300,7 +1304,8 @@ void BladeRunnerEngine::handleEvents() {
// First hit (fire) has a bigger delay (kKeyRepeatInitialDelay) before repeated events are fired from the same key
if (event.kbd.keycode == Common::KEYCODE_ESCAPE || event.kbd.keycode == Common::KEYCODE_RETURN) {
_currentKeyDown = event.kbd.keycode;
- _keyRepeatTime = timeNow + kKeyRepeatInitialDelay;
+ _keyRepeatTimeLast = timeNow;
+ _keyRepeatTimeDelay = kKeyRepeatInitialDelay;
}
handleKeyDown(event);
}
@@ -1339,13 +1344,14 @@ void BladeRunnerEngine::handleEvents() {
}
}
- if ((_currentKeyDown == Common::KEYCODE_ESCAPE || _currentKeyDown == Common::KEYCODE_RETURN) && _keyRepeatTime <= timeNow) {
+ if ((_currentKeyDown == Common::KEYCODE_ESCAPE || _currentKeyDown == Common::KEYCODE_RETURN) && (timeNow - _keyRepeatTimeLast >= _keyRepeatTimeDelay)) {
// create a "new" keydown event
event.type = Common::EVENT_KEYDOWN;
// kbdRepeat field will be unused here since we emulate the kbd repeat behavior anyway, but it's good to set it for consistency
event.kbdRepeat = true;
event.kbd = _currentKeyDown;
- _keyRepeatTime = timeNow + kKeyRepeatSustainDelay;
+ _keyRepeatTimeLast = timeNow;
+ _keyRepeatTimeDelay = kKeyRepeatSustainDelay;
handleKeyDown(event);
}
}
diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h
index 0fb54d5fb3..0e54eb04ab 100644
--- a/engines/bladerunner/bladerunner.h
+++ b/engines/bladerunner/bladerunner.h
@@ -263,7 +263,8 @@ public:
};
Common::KeyState _currentKeyDown;
- uint32 _keyRepeatTime;
+ uint32 _keyRepeatTimeLast;
+ uint32 _keyRepeatTimeDelay;
private:
MIXArchive _archives[kArchiveCount];
More information about the Scummvm-git-logs
mailing list