aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/ui/elevator.cpp
diff options
context:
space:
mode:
authorThanasis Antoniou2019-08-31 19:18:33 +0300
committerThanasis Antoniou2019-08-31 19:19:32 +0300
commita99e8d7baba5bcbc6cc07ff2d34d81fb7e3e93dc (patch)
tree05a80e1d0b4212c7a8b753c02ba8009a2c404b07 /engines/bladerunner/ui/elevator.cpp
parent196378d9da0366feb341c0b9ab5f63b6dce0c218 (diff)
downloadscummvm-rg350-a99e8d7baba5bcbc6cc07ff2d34d81fb7e3e93dc.tar.gz
scummvm-rg350-a99e8d7baba5bcbc6cc07ff2d34d81fb7e3e93dc.tar.bz2
scummvm-rg350-a99e8d7baba5bcbc6cc07ff2d34d81fb7e3e93dc.zip
BLADERUNNER: Replace delayMillis(10) calls with software timers
Diffstat (limited to 'engines/bladerunner/ui/elevator.cpp')
-rw-r--r--engines/bladerunner/ui/elevator.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/engines/bladerunner/ui/elevator.cpp b/engines/bladerunner/ui/elevator.cpp
index a3f795263a..15354c739c 100644
--- a/engines/bladerunner/ui/elevator.cpp
+++ b/engines/bladerunner/ui/elevator.cpp
@@ -187,6 +187,8 @@ int Elevator::activate(int elevatorId) {
void Elevator::open() {
resetDescription();
_isOpen = true;
+ _timeLast = _vm->_time->currentSystem();
+ _firstTickCall = true;
}
bool Elevator::isOpen() const {
@@ -205,9 +207,18 @@ int Elevator::handleMouseDown(int x, int y) {
void Elevator::tick() {
if (!_vm->_windowIsActive) {
+ _timeLast = _vm->_time->currentSystem();
return;
}
+ uint32 timeNow = _vm->_time->currentSystem();
+ // unsigned difference is intentional
+ if (timeNow - _timeLast < _vm->kUpdateFrameTimeInMs && !_firstTickCall) {
+ return;
+ } else if (_firstTickCall) {
+ _firstTickCall = false;
+ }
+
int frame = _vqaPlayer->update();
assert(frame >= -1);
@@ -231,7 +242,7 @@ void Elevator::tick() {
_vm->blitToScreen(_vm->_surfaceFront);
tickDescription();
- _vm->_system->delayMillis(10);
+ _timeLast = timeNow;
}
void Elevator::buttonClick(int buttonId) {