aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/utils.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2013-06-21 21:30:38 -0400
committerEugene Sandulenko2013-09-06 14:48:15 +0300
commit29f323fd27d67aede4668e07984eabd69180aee5 (patch)
treeed3e84d02ab1efe4081a2f6a5505008d6b873d17 /engines/fullpipe/utils.cpp
parent47faa885015f619b730d8716c8527ae5819cb35f (diff)
downloadscummvm-rg350-29f323fd27d67aede4668e07984eabd69180aee5.tar.gz
scummvm-rg350-29f323fd27d67aede4668e07984eabd69180aee5.tar.bz2
scummvm-rg350-29f323fd27d67aede4668e07984eabd69180aee5.zip
FULLPIPE: Completed Background loading
Diffstat (limited to 'engines/fullpipe/utils.cpp')
-rw-r--r--engines/fullpipe/utils.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp
index 468d03b6f9..0462c4ec3e 100644
--- a/engines/fullpipe/utils.cpp
+++ b/engines/fullpipe/utils.cpp
@@ -23,9 +23,11 @@
#include "fullpipe/fullpipe.h"
#include "common/file.h"
+#include "common/memstream.h"
#include "fullpipe/objects.h"
#include "fullpipe/motion.h"
+#include "fullpipe/ngiarchive.h"
namespace Fullpipe {
@@ -102,6 +104,64 @@ char *MfcArchive::readPascalString(bool twoByte) {
return tmp;
}
+MemoryObject::MemoryObject() {
+ _filename = 0;
+ _field_8 = 0;
+ _field_C = 0;
+ _field_10 = -1;
+ _field_14 = 1;
+ _dataSize = 0;
+ _flags = 0;
+ _libHandle = 0;
+ _data = 0;
+}
+
+bool MemoryObject::load(MfcArchive &file) {
+ _filename = file.readPascalString();
+
+ if (g_fullpipe->_currArchive) {
+ _field_14 = 0;
+ _libHandle = g_fullpipe->_currArchive;
+ }
+
+ return true;
+}
+
+void MemoryObject::loadFile(char *filename) {
+ if (!_data) {
+ if (g_fullpipe->_currArchive != _libHandle) {
+ assert(0);
+ }
+
+ Common::SeekableReadStream *s = _libHandle->createReadStreamForMember(filename);
+
+ if (s) {
+ debug(0, "Reading %s", filename);
+ assert(s->size() > 0);
+ _data = calloc(s->size(), 1);
+ s->read(_data, s->size());
+
+ delete s;
+ }
+ }
+}
+
+MemoryObject2::MemoryObject2() {
+ _data2 = 0;
+}
+
+bool MemoryObject2::load(MfcArchive &file) {
+ MemoryObject::load(file);
+
+ _flags |= 1;
+
+ if (_filename) {
+ MemoryObject::loadFile(_filename);
+ }
+
+ return true;
+}
+
int MfcArchive::readCount() {
int count = readUint16LE();