diff options
author | johndoe123 | 2014-04-15 13:21:00 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 1f74de6a4679cecba4fd77e9c79cfaee9c3dd0f6 (patch) | |
tree | d8a58e89f20839b2853551bf41b28a9623a0e2af /engines/illusions/illusions.cpp | |
parent | b1927ca30458226ad7ed52cc85d37416261d444d (diff) | |
download | scummvm-rg350-1f74de6a4679cecba4fd77e9c79cfaee9c3dd0f6.tar.gz scummvm-rg350-1f74de6a4679cecba4fd77e9c79cfaee9c3dd0f6.tar.bz2 scummvm-rg350-1f74de6a4679cecba4fd77e9c79cfaee9c3dd0f6.zip |
ILLUSIONS: More work on Duckman
- Implement palette fader
- Add more inventory functions
- Add more script opcodes
Diffstat (limited to 'engines/illusions/illusions.cpp')
-rw-r--r-- | engines/illusions/illusions.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/engines/illusions/illusions.cpp b/engines/illusions/illusions.cpp index 8a350961e2..afaaa00a3a 100644 --- a/engines/illusions/illusions.cpp +++ b/engines/illusions/illusions.cpp @@ -141,6 +141,7 @@ int IllusionsEngine::updateGraphics() { uint32 currTime = getCurrentTime(); _camera->update(currTime); + updateFader(); // TODO Move to BackgroundItems class BackgroundItem *backgroundItem = _backgroundItems->findActiveBackground(); @@ -177,8 +178,6 @@ int IllusionsEngine::updateGraphics() { */ if (actor->_surfInfo._dimensions._width && actor->_surfInfo._dimensions._height) { uint32 priority = control->getPriority(); -//if (control->_objectId == 0x0004001B) continue; -//debug("objectId: %08X; priority: %d (%d)", control->_objectId, priority, control->_priority); _screen->_drawQueue->insertSprite(&actor->_drawFlags, actor->_surface, actor->_surfInfo._dimensions, drawPosition, control->_position, priority, actor->_scale, actor->_spriteFlags); @@ -268,6 +267,29 @@ bool IllusionsEngine::isVoicePlaying() { return false; } +void IllusionsEngine::updateFader() { + if (_fader && !_fader->_paused && _fader->_active) { + int32 currTime = getCurrentTime(); + int32 currDuration = currTime - _fader->_startTime; + if (currDuration) { + int newValue; + if (currDuration >= _fader->_duration) { + newValue = _fader->_maxValue; + } else { + newValue = (currDuration * (_fader->_maxValue - _fader->_minValue) / _fader->_duration) + _fader->_minValue; + } + if (_fader->_currValue != newValue) { + _fader->_currValue = newValue; + _screen->setFader(newValue, _fader->_firstIndex, _fader->_lastIndex); + } + if (_fader->_currValue == _fader->_maxValue) { + _fader->_active = false; + notifyThreadId(_fader->_notifyThreadId); + } + } + } +} + void IllusionsEngine::setCurrFontId(uint32 fontId) { _fontId = fontId; } |