aboutsummaryrefslogtreecommitdiff
path: root/graphics/flic_player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/flic_player.cpp')
-rw-r--r--graphics/flic_player.cpp23
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() {