diff options
Diffstat (limited to 'graphics/flic_player.cpp')
-rw-r--r-- | graphics/flic_player.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/graphics/flic_player.cpp b/graphics/flic_player.cpp index 19766d7af5..af32209279 100644 --- a/graphics/flic_player.cpp +++ b/graphics/flic_player.cpp @@ -27,12 +27,21 @@ namespace Graphics { -FlicPlayer::FlicPlayer(const char *fileName) +FlicPlayer::FlicPlayer() : _paletteDirty(false), _offscreen(0), _currFrame(0) { - memset(&_flicInfo, 0, sizeof(_flicInfo)); - _fileStream.open(fileName); - assert(_fileStream.isOpen()); +} + +FlicPlayer::~FlicPlayer() { + closeFile(); +} + +bool FlicPlayer::loadFile(const char *fileName) { + closeFile(); + + if (!_fileStream.open(fileName)) { + return false; + } _flicInfo.size = _fileStream.readUint32LE(); _flicInfo.type = _fileStream.readUint16LE(); @@ -56,10 +65,14 @@ FlicPlayer::FlicPlayer(const char *fileName) // Seek to the first frame _fileStream.seek(_flicInfo.offsetFrame1); + return true; } -FlicPlayer::~FlicPlayer() { +void FlicPlayer::closeFile() { + memset(&_flicInfo, 0, sizeof(_flicInfo)); + _fileStream.close(); delete[] _offscreen; + _offscreen = 0; } void FlicPlayer::redraw() { |