diff options
author | Filippos Karapetis | 2015-12-13 04:53:12 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2015-12-23 21:34:01 +0100 |
commit | 452c20ab8abd8f01050e37f355fa2efeb6ef3743 (patch) | |
tree | 186586fa9d801f70dc19940ca874d978090ea914 | |
parent | 1b0a7db0b604b5dddaa0e01cbafe2f3fdc760ce9 (diff) | |
download | scummvm-rg350-452c20ab8abd8f01050e37f355fa2efeb6ef3743.tar.gz scummvm-rg350-452c20ab8abd8f01050e37f355fa2efeb6ef3743.tar.bz2 scummvm-rg350-452c20ab8abd8f01050e37f355fa2efeb6ef3743.zip |
LAB: Get rid of the rest of the custom time delay functions
-rw-r--r-- | engines/lab/anim.cpp | 9 | ||||
-rw-r--r-- | engines/lab/anim.h | 2 | ||||
-rw-r--r-- | engines/lab/engine.cpp | 10 | ||||
-rw-r--r-- | engines/lab/intro.cpp | 23 | ||||
-rw-r--r-- | engines/lab/utils.cpp | 74 | ||||
-rw-r--r-- | engines/lab/utils.h | 5 |
6 files changed, 12 insertions, 111 deletions
diff --git a/engines/lab/anim.cpp b/engines/lab/anim.cpp index ac51860ed7..347841d8d1 100644 --- a/engines/lab/anim.cpp +++ b/engines/lab/anim.cpp @@ -46,8 +46,6 @@ Anim::Anim(LabEngine *vm) : _vm(vm) { _headerdata._height = 0; _headerdata._fps = 0; _headerdata._flags = 0; - _waitSec = 0; - _waitMicros = 0; _delayMicros = 0; _continuous = false; _isPlaying = false; @@ -98,8 +96,9 @@ void Anim::diffNextFrame(bool onlyDiffData) { if (!onlyDiffData) { if (_headerdata._fps) { - _vm->_utils->waitForTime(_waitSec, _waitMicros); - _vm->_utils->addCurTime(0L, _delayMicros, &_waitSec, &_waitMicros); + uint32 targetMillis = g_system->getMillis() + _delayMicros; + while (g_system->getMillis() < targetMillis) + g_system->delayMillis(10); } if (_isPal && !_noPalChange) { @@ -273,8 +272,6 @@ void Anim::stopDiffEnd() { */ void Anim::readDiff(byte *buffer, bool playOnce, bool onlyDiffData) { _playOnce = playOnce; - _waitSec = 0; - _waitMicros = 0; _delayMicros = 0; _header = 0; _curBit = 0; diff --git a/engines/lab/anim.h b/engines/lab/anim.h index 797c5536f4..6c18224932 100644 --- a/engines/lab/anim.h +++ b/engines/lab/anim.h @@ -61,8 +61,6 @@ private: uint32 _header; uint16 _curBit; uint16 _numChunks; - uint32 _waitSec; - uint32 _waitMicros; uint32 _delayMicros; bool _continuous; bool _isPlaying; diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp index 1b77d04459..a22409e618 100644 --- a/engines/lab/engine.cpp +++ b/engines/lab/engine.cpp @@ -1145,12 +1145,7 @@ int LabEngine::followCrumbs() { }; if (_isCrumbWaiting) { - uint32 Secs; - uint32 Micros; - - _utils->timeDiff(_crumbSecs, _crumbMicros, &Secs, &Micros); - - if (Secs != 0 || Micros != 0) + if (g_system->getMillis() <= _crumbSecs * 1000 + _crumbMicros) return 0; _isCrumbWaiting = false; @@ -1193,7 +1188,8 @@ int LabEngine::followCrumbs() { _isCrumbTurning = (moveDir != VKEY_UPARROW); _isCrumbWaiting = true; - _utils->addCurTime(theDelay / ONESECOND, theDelay % ONESECOND, &_crumbSecs, &_crumbMicros); + _crumbSecs = (theDelay + g_system->getMillis()) / 1000; + _crumbMicros = (theDelay + g_system->getMillis()) % 1000; } return moveDir; diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp index 0165116b00..b6fbf04f2b 100644 --- a/engines/lab/intro.cpp +++ b/engines/lab/intro.cpp @@ -75,19 +75,13 @@ void Intro::doPictText(const char *filename, TextFont *msgFont, bool isScreen) { char path[50] = "Lab:rooms/Intro/"; strcat(path, filename); - uint timeDelay; - if (isScreen) { - _vm->_music->updateMusic(); - timeDelay = 35; - } else { - _vm->_music->updateMusic(); - timeDelay = 7; - } + uint timeDelay = (isScreen) ? 35 : 7; + _vm->_music->updateMusic(); if (_quitIntro) return; - uint32 lastSecs = 0L, lastMicros = 0L, secs = 0L, micros = 0L; + uint32 lastMillis = 0; IntuiMessage *msg; bool drawNextText = true, end = false, begin = true; @@ -132,9 +126,7 @@ void Intro::doPictText(const char *filename, TextFont *msgFont, bool isScreen) { return; } - uint32 t = g_system->getMillis(); - lastSecs = t / 1000; - lastMicros = t % 1000; + lastMillis = g_system->getMillis(); } msg = _vm->getMsg(); @@ -143,12 +135,9 @@ void Intro::doPictText(const char *filename, TextFont *msgFont, bool isScreen) { _vm->_music->updateMusic(); _vm->_anim->diffNextFrame(); - uint32 t = g_system->getMillis(); - secs = t / 1000; - micros = t % 1000; - _vm->_utils->anyTimeDiff(lastSecs, lastMicros, secs, micros, &secs, µs); + uint32 elapsedSeconds = (g_system->getMillis() - lastMillis) / 1000; - if (secs > timeDelay) { + if (elapsedSeconds > timeDelay) { if (end) { if (isScreen) _vm->_graphics->fade(false, 0); diff --git a/engines/lab/utils.cpp b/engines/lab/utils.cpp index 3adcc954c9..ec69d81f46 100644 --- a/engines/lab/utils.cpp +++ b/engines/lab/utils.cpp @@ -427,78 +427,4 @@ void Utils::setBytesPerRow(int num) { _dataBytesPerRow = num; } -/** - * Adds seconds and microseconds to current time to get a new time. - */ -void Utils::addCurTime(uint32 sec, uint32 micros, uint32 *timeSec, uint32 *timeMicros) { - uint32 t = g_system->getMillis(); - *timeSec = (t / 1000) + sec; - *timeMicros = (t % 1000) + micros; - - if (*timeMicros >= ONESECOND) { - (*timeSec)++; - (*timeMicros) -= ONESECOND; - } -} - -/** - * Finds the difference between time1 and time2. If time1 is later than - * time2, returns 0. - */ -void Utils::anyTimeDiff(uint32 sec1, uint32 micros1, uint32 sec2, uint32 micros2, uint32 *diffSecs, uint32 *diffMicros) { - *diffSecs = 0; - *diffMicros = 0; - - if (sec1 > sec2) - return; - else if ((sec1 == sec2) && (micros1 >= micros2)) - return; - - if (micros1 > micros2) { - *diffSecs = sec2 - sec1 - 1; - *diffMicros = (ONESECOND - micros1) + micros2; - } else { - *diffSecs = sec2 - sec1; - *diffMicros = micros2 - micros1; - } -} - -/** - * Finds the difference between the current time, and a future time. Returns - * 0 if the future time is actually before the current time. - */ -void Utils::timeDiff(uint32 sec, uint32 micros, uint32 *diffSec, uint32 *diffMicros) { - uint32 t = g_system->getMillis(); - uint32 curSec = t / 1000; - uint32 curMicros = t % 1000; - - anyTimeDiff(curSec, curMicros, sec, micros, diffSec, diffMicros); -} - -/** -* Waits for Secs seconds and Micros microseconds to pass. -*/ -void Utils::microDelay(uint32 secs, uint32 micros) { - uint32 targetMillis = g_system->getMillis() + secs * 1000 + micros; - while (g_system->getMillis() < targetMillis) - g_system->delayMillis(10); -} - -/** - * Waits for a specified time to occur. - */ -void Utils::waitForTime(uint32 sec, uint32 micros) { - uint32 targetMillis = sec * 1000 + micros; - uint32 t = g_system->getMillis(); - uint32 curSec = t / 1000; - uint32 curMicros = t % 1000; - - if (t >= targetMillis) - return; - - if (curMicros > micros) - microDelay(sec - curSec - 1, (ONESECOND - curMicros) + micros - 1); - else - microDelay(sec - curSec, micros - curMicros - 1); -} } // End of namespace Lab diff --git a/engines/lab/utils.h b/engines/lab/utils.h index 65c00a3eec..b0aa58f795 100644 --- a/engines/lab/utils.h +++ b/engines/lab/utils.h @@ -43,7 +43,6 @@ private: void VUnDiffByteByte(byte *Dest, byte *diff, uint16 bytesperrow); void VUnDiffByteWord(uint16 *Dest, uint16 *diff, uint16 bytesperrow); void VUnDiffByteLong(uint32 *Dest, uint32 *diff, uint16 bytesperrow); - void microDelay(uint32 secs, uint32 micros); public: Utils(LabEngine *vm); @@ -60,10 +59,6 @@ public: void runLengthDecode(byte *dest, byte *source); void VRunLengthDecode(byte *dest, byte *source, uint16 bytesPerRow); void setBytesPerRow(int num); - void addCurTime(uint32 sec, uint32 micros, uint32 *timeSec, uint32 *timeMicros); - void waitForTime(uint32 sec, uint32 micros); - void anyTimeDiff(uint32 sec1, uint32 micros1, uint32 sec2, uint32 micros2, uint32 *diffSecs, uint32 *diffMicros); - void timeDiff(uint32 sec, uint32 micros, uint32 *diffSec, uint32 *diffMicros); }; |