LASTEXPRESS: Update Animation::process()

- Use Common::Rational to compute the current frame
 - Added check for _currentChunk != NULL
 - Add constructor to Chunk structure

svn-id: r54245
This commit is contained in:
Julien Templier 2010-11-15 15:48:08 +00:00
parent dbb3e1dded
commit a4d9d03601
2 changed files with 11 additions and 2 deletions

View File

@ -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:

View File

@ -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();