diff options
Diffstat (limited to 'engines/bladerunner/ui/elevator.cpp')
-rw-r--r-- | engines/bladerunner/ui/elevator.cpp | 13 |
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) { |