diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/lastexpress/data/animation.cpp | 6 | ||||
-rw-r--r-- | engines/lastexpress/data/animation.h | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/engines/lastexpress/data/animation.cpp b/engines/lastexpress/data/animation.cpp index 3f1383022f..5ac9f8bf00 100644 --- a/engines/lastexpress/data/animation.cpp +++ b/engines/lastexpress/data/animation.cpp @@ -34,6 +34,8 @@ #include "lastexpress/helpers.h" #include "common/events.h" +#include "common/rational.h" + #include "engines/engine.h" namespace LastExpress { @@ -104,10 +106,10 @@ bool Animation::process() { error("Trying to show an animation before loading data"); // TODO: substract the time paused by the GUI - uint32 currentFrame = (uint32)(((float)(g_engine->_system->getMillis() - _startTime)) / 33.33f); + int32 currentFrame = Common::Rational((g_engine->_system->getMillis() - _startTime) * 100, 3333).toInt(); // Process all chunks until the current frame - while (!_changed && currentFrame > _currentChunk->frame && !hasEnded()) { + while (!_changed && _currentChunk != NULL && currentFrame > _currentChunk->frame && !hasEnded()) { switch(_currentChunk->type) { //TODO: some info chunks are probably subtitle/sync related case kChunkTypeUnknown1: diff --git a/engines/lastexpress/data/animation.h b/engines/lastexpress/data/animation.h index ca1f7c6fa0..435621eb8e 100644 --- a/engines/lastexpress/data/animation.h +++ b/engines/lastexpress/data/animation.h @@ -69,6 +69,7 @@ private: // despite their size field, info chunks don't have a payload enum ChunkType { + kChunkTypeNone = 0, kChunkTypeUnknown1 = 1, kChunkTypeUnknown2 = 2, kChunkTypeAudioInfo = 3, @@ -91,6 +92,12 @@ private: ChunkType type; uint16 frame; uint32 size; + + Chunk() { + type = kChunkTypeNone; + frame = 0; + size = 0; + } }; void reset(); |