diff options
author | Johannes Schickel | 2008-04-27 12:40:56 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-04-27 12:40:56 +0000 |
commit | 7eef01cec48ac26d406a73a431120e56d919f63b (patch) | |
tree | 5cd0d6b19a5eb4a41ee06b09a6366185d14df482 /engines/kyra | |
parent | 1aac349da42f0a4c21204d2fc88041c4b63aa3c9 (diff) | |
download | scummvm-rg350-7eef01cec48ac26d406a73a431120e56d919f63b.tar.gz scummvm-rg350-7eef01cec48ac26d406a73a431120e56d919f63b.tar.bz2 scummvm-rg350-7eef01cec48ac26d406a73a431120e56d919f63b.zip |
Moved newShape code to sequences_v3.cpp
svn-id: r31752
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/animator_v3.cpp | 73 | ||||
-rw-r--r-- | engines/kyra/sequences_v3.cpp | 76 |
2 files changed, 76 insertions, 73 deletions
diff --git a/engines/kyra/animator_v3.cpp b/engines/kyra/animator_v3.cpp index 078b914e86..07a3713908 100644 --- a/engines/kyra/animator_v3.cpp +++ b/engines/kyra/animator_v3.cpp @@ -532,79 +532,6 @@ void KyraEngine_v3::showIdleAnim() { _nextIdleType = !_nextIdleType; } -int KyraEngine_v3::initNewShapes(uint8 *filedata) { - debugC(9, kDebugLevelAnimator, "KyraEngine_v3::initNewShapes(%p)", (const void*)filedata); - const int lastEntry = MIN(_newShapeLastEntry, 41); - for (int i = 0; i < lastEntry; ++i) - _gameShapes[9+i] = _screen->getPtrToShape(filedata, i); - return lastEntry; -} - -void KyraEngine_v3::processNewShapes(int allowSkip, int resetChar) { - debugC(9, kDebugLevelAnimator, "KyraEngine_v3::processNewShapes(%d, %d)", allowSkip, resetChar); - setCharacterAnimDim(_newShapeWidth, _newShapeHeight); - - _scriptInterpreter->initScript(&_temporaryScriptState, &_temporaryScriptData); - _scriptInterpreter->startScript(&_temporaryScriptState, 1); - - resetSkipFlag(); - - while (_scriptInterpreter->validScript(&_temporaryScriptState)) { - _temporaryScriptExecBit = false; - while (_scriptInterpreter->validScript(&_temporaryScriptState) && !_temporaryScriptExecBit) - _scriptInterpreter->runScript(&_temporaryScriptState); - - if (_newShapeAnimFrame < 0) - continue; - - _mainCharacter.animFrame = _newShapeAnimFrame + 9; - updateCharacterAnim(0); - if (_chatText) - updateWithText(); - else - update(); - - uint32 delayEnd = _system->getMillis() + _newShapeDelay * _tickLength; - - while ((!skipFlag() || !allowSkip) && _system->getMillis() < delayEnd) { - if (_chatText) - updateWithText(); - else - update(); - - delay(10); - } - - if (skipFlag()) - resetSkipFlag(); - } - - if (resetChar) { - if (_newShapeFlag >= 0) { - _mainCharacter.animFrame = _newShapeFlag + 9; - updateCharacterAnim(0); - if (_chatText) - updateWithText(); - else - update(); - } - - _mainCharacter.animFrame = _characterFrameTable[_mainCharacter.facing]; - updateCharacterAnim(0); - } - - _newShapeFlag = -1; - resetCharacterAnimDim(); -} - -void KyraEngine_v3::resetNewShapes(int count, uint8 *filedata) { - debugC(9, kDebugLevelAnimator, "KyraEngine_v3::resetNewShapes(%d, %p)", count, (const void*)filedata); - for (int i = 0; i < count; ++i) - _gameShapes[9+i] = 0; - delete [] filedata; - setNextIdleAnimTimer(); -} - void KyraEngine_v3::addItemToAnimList(int item) { debugC(9, kDebugLevelAnimator, "KyraEngine_v3::addItemToAnimList(%d)", item); restorePage3(); diff --git a/engines/kyra/sequences_v3.cpp b/engines/kyra/sequences_v3.cpp index d697da60db..0c833b1b3a 100644 --- a/engines/kyra/sequences_v3.cpp +++ b/engines/kyra/sequences_v3.cpp @@ -169,6 +169,9 @@ void KyraEngine_v3::eelScript() { objectChat((const char*)getTableEntry(_cCodeFile, 35), 0, 204, 35); objectChat((const char*)getTableEntry(_cCodeFile, 40), 0, 204, 40); + + setGameFlag(0xD1); + playSoundEffect(0x2A, 0xC8); setGameFlag(0x171); @@ -200,5 +203,78 @@ void KyraEngine_v3::eelScript() { _screen->showMouse(); } +int KyraEngine_v3::initNewShapes(uint8 *filedata) { + debugC(9, kDebugLevelAnimator, "KyraEngine_v3::initNewShapes(%p)", (const void*)filedata); + const int lastEntry = MIN(_newShapeLastEntry, 41); + for (int i = 0; i < lastEntry; ++i) + _gameShapes[9+i] = _screen->getPtrToShape(filedata, i); + return lastEntry; +} + +void KyraEngine_v3::processNewShapes(int allowSkip, int resetChar) { + debugC(9, kDebugLevelAnimator, "KyraEngine_v3::processNewShapes(%d, %d)", allowSkip, resetChar); + setCharacterAnimDim(_newShapeWidth, _newShapeHeight); + + _scriptInterpreter->initScript(&_temporaryScriptState, &_temporaryScriptData); + _scriptInterpreter->startScript(&_temporaryScriptState, 1); + + resetSkipFlag(); + + while (_scriptInterpreter->validScript(&_temporaryScriptState)) { + _temporaryScriptExecBit = false; + while (_scriptInterpreter->validScript(&_temporaryScriptState) && !_temporaryScriptExecBit) + _scriptInterpreter->runScript(&_temporaryScriptState); + + if (_newShapeAnimFrame < 0) + continue; + + _mainCharacter.animFrame = _newShapeAnimFrame + 9; + updateCharacterAnim(0); + if (_chatText) + updateWithText(); + else + update(); + + uint32 delayEnd = _system->getMillis() + _newShapeDelay * _tickLength; + + while ((!skipFlag() || !allowSkip) && _system->getMillis() < delayEnd) { + if (_chatText) + updateWithText(); + else + update(); + + delay(10); + } + + if (skipFlag()) + resetSkipFlag(); + } + + if (resetChar) { + if (_newShapeFlag >= 0) { + _mainCharacter.animFrame = _newShapeFlag + 9; + updateCharacterAnim(0); + if (_chatText) + updateWithText(); + else + update(); + } + + _mainCharacter.animFrame = _characterFrameTable[_mainCharacter.facing]; + updateCharacterAnim(0); + } + + _newShapeFlag = -1; + resetCharacterAnimDim(); +} + +void KyraEngine_v3::resetNewShapes(int count, uint8 *filedata) { + debugC(9, kDebugLevelAnimator, "KyraEngine_v3::resetNewShapes(%d, %p)", count, (const void*)filedata); + for (int i = 0; i < count; ++i) + _gameShapes[9+i] = 0; + delete [] filedata; + setNextIdleAnimTimer(); +} + } // end of namespace Kyra |