aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/ui/elevator.cpp
diff options
context:
space:
mode:
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) {