From 443c57146d74d7a92d1c9ec48c0f7eb8a497749b Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Fri, 28 Nov 2008 23:51:59 +0000 Subject: added load/closeFile to Graphics::FlicPlayer (matching DXAPlayer class) svn-id: r35170 --- engines/tucker/sequences.cpp | 65 ++++++++++++++++++++++---------------------- engines/tucker/tucker.h | 2 +- 2 files changed, 33 insertions(+), 34 deletions(-) (limited to 'engines/tucker') diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp index f0c15b48d5..57e037cf97 100644 --- a/engines/tucker/sequences.cpp +++ b/engines/tucker/sequences.cpp @@ -482,7 +482,6 @@ AnimationSequencePlayer::AnimationSequencePlayer(OSystem *system, Audio::Mixer * _newSeq = false; memset(_animationPalette, 0, sizeof(_animationPalette)); memset(_paletteBuffer, 0, sizeof(_paletteBuffer)); - memset(_flicPlayer, 0, sizeof(_flicPlayer)); _soundsListSeqData = 0; _soundsList1 = 0; _soundsList1Count = 0; @@ -836,10 +835,6 @@ void AnimationSequencePlayer::fadeOutPalette() { void AnimationSequencePlayer::unloadAnimation() { _mixer->stopAll(); - for (int i = 0; i < ARRAYSIZE(_flicPlayer); ++i) { - delete _flicPlayer[i]; - _flicPlayer[i] = 0; - } free(_picBufPtr); _picBufPtr = 0; free(_pic2BufPtr); @@ -860,20 +855,24 @@ uint8 *AnimationSequencePlayer::loadPicture(const char *fileName) { } void AnimationSequencePlayer::openAnimation(int index, const char *fileName) { - _flicPlayer[index] = new ::Graphics::FlicPlayer(fileName); - _flicPlayer[index]->decodeFrame(); + if (!_flicPlayer[index].loadFile(fileName)) { + warning("Unable to open flc animation file '%s'", fileName); + _seqNum = 1; + return; + } + _flicPlayer[index].decodeFrame(); if (index == 0) { - memcpy(_animationPalette, _flicPlayer[index]->getPalette(), 1024); - memcpy(_offscreenBuffer, _flicPlayer[index]->getOffscreen(), kScreenWidth * kScreenHeight); + memcpy(_animationPalette, _flicPlayer[index].getPalette(), 1024); + memcpy(_offscreenBuffer, _flicPlayer[index].getOffscreen(), kScreenWidth * kScreenHeight); } } void AnimationSequencePlayer::decodeNextAnimationFrame(int index) { - _flicPlayer[index]->decodeFrame(); - memcpy(_offscreenBuffer, _flicPlayer[index]->getOffscreen(), kScreenWidth * kScreenHeight); + _flicPlayer[index].decodeFrame(); + memcpy(_offscreenBuffer, _flicPlayer[index].getOffscreen(), kScreenWidth * kScreenHeight); if (index == 0) { - if (_flicPlayer[index]->isPaletteDirty()) { - memcpy(_animationPalette, _flicPlayer[index]->getPalette(), 1024); + if (_flicPlayer[index].isPaletteDirty()) { + memcpy(_animationPalette, _flicPlayer[index].getPalette(), 1024); } } if (_seqNum != 19) { @@ -889,7 +888,7 @@ void AnimationSequencePlayer::introSeq17_18() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 19; } updateSounds(); @@ -904,20 +903,20 @@ void AnimationSequencePlayer::introSeq19_20() { _frameTime = 1; _newSeq = false; } - if (_flicPlayer[0]->getCurFrame() >= 116) { - _flicPlayer[1]->decodeFrame(); - if (_flicPlayer[1]->getCurFrame() == _flicPlayer[1]->getFrameCount()) { - _flicPlayer[1]->reset(); + if (_flicPlayer[0].getCurFrame() >= 116) { + _flicPlayer[1].decodeFrame(); + if (_flicPlayer[1].isLastFrame()) { + _flicPlayer[1].reset(); } } - _flicPlayer[0]->decodeFrame(); - const uint8 *t = _flicPlayer[1]->getOffscreen(); + _flicPlayer[0].decodeFrame(); + const uint8 *t = _flicPlayer[1].getOffscreen(); for (int i = 0; i < 64000; ++i) { - const uint8 color = _flicPlayer[0]->getOffscreen()[i]; + const uint8 color = _flicPlayer[0].getOffscreen()[i]; _offscreenBuffer[i] = color ? color : t[i]; } updateSounds(); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 3; } } @@ -974,10 +973,10 @@ void AnimationSequencePlayer::introSeq3_4() { } if (!_updateScreenPicture) { decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == 706) { + if (_flicPlayer[0].getCurFrame() == 706) { initPicPart4(); } - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 9; } } else { @@ -1018,7 +1017,7 @@ void AnimationSequencePlayer::drawPic1Part10() { memcpy(_offscreenBuffer + y * 320, _picBufPtr + 800 + y * 640 + _updateScreenWidth, 320); } for (int i = 0; i < 64000; ++i) { - const uint8 color = _flicPlayer[0]->getOffscreen()[i]; + const uint8 color = _flicPlayer[0].getOffscreen()[i]; if (color) { _offscreenBuffer[i] = color; } @@ -1036,20 +1035,20 @@ void AnimationSequencePlayer::introSeq9_10() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == 984) { + if (_flicPlayer[0].getCurFrame() == 984) { drawPic2Part10(); } - if (_flicPlayer[0]->getCurFrame() >= 264 && _flicPlayer[0]->getCurFrame() <= 295) { + if (_flicPlayer[0].getCurFrame() >= 264 && _flicPlayer[0].getCurFrame() <= 295) { drawPic1Part10(); _updateScreenWidth += 6; - } else if (_flicPlayer[0]->getCurFrame() >= 988 && _flicPlayer[0]->getCurFrame() <= 996) { + } else if (_flicPlayer[0].getCurFrame() >= 988 && _flicPlayer[0].getCurFrame() <= 996) { drawPic1Part10(); _updateScreenWidth -= 25; if (_updateScreenWidth < 0) { _updateScreenWidth = 0; } } - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 21; } updateSounds(); @@ -1063,7 +1062,7 @@ void AnimationSequencePlayer::introSeq21_22() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 1; } updateSounds(); @@ -1077,7 +1076,7 @@ void AnimationSequencePlayer::introSeq13_14() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 15; } updateSounds(); @@ -1091,7 +1090,7 @@ void AnimationSequencePlayer::introSeq15_16() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 27; } updateSounds(); @@ -1105,7 +1104,7 @@ void AnimationSequencePlayer::introSeq27_28() { _newSeq = false; } decodeNextAnimationFrame(0); - if (_flicPlayer[0]->getCurFrame() == _flicPlayer[0]->getFrameCount()) { + if (_flicPlayer[0].isLastFrame()) { _seqNum = 1; } updateSounds(); diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h index ae175d6207..be51ce5a56 100644 --- a/engines/tucker/tucker.h +++ b/engines/tucker/tucker.h @@ -865,7 +865,7 @@ private: bool _newSeq; int _seqNum, _currentSeqNum; - ::Graphics::FlicPlayer *_flicPlayer[2]; + ::Graphics::FlicPlayer _flicPlayer[2]; uint8 _animationPalette[256 * 4], _paletteBuffer[256 * 4]; const int *_soundsListSeqData; const char **_soundsList1; -- cgit v1.2.3