aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/package
diff options
context:
space:
mode:
authorEugene Sandulenko2010-08-31 09:45:21 +0000
committerEugene Sandulenko2010-10-12 23:22:01 +0000
commit384468c0148ede9ae8140b4fd75183368d26ada6 (patch)
tree22bc9e42fe955e1c869ffa05084d3e93fc335560 /engines/sword25/package
parentf71295ab6d6899b21809837b6c6bf317a45193ef (diff)
downloadscummvm-rg350-384468c0148ede9ae8140b4fd75183368d26ada6.tar.gz
scummvm-rg350-384468c0148ede9ae8140b4fd75183368d26ada6.tar.bz2
scummvm-rg350-384468c0148ede9ae8140b4fd75183368d26ada6.zip
SWORD25: Started to hook TheoraDecoder. Crashes at startup.
svn-id: r53297
Diffstat (limited to 'engines/sword25/package')
-rw-r--r--engines/sword25/package/packagemanager.h7
-rw-r--r--engines/sword25/package/scummvmpackagemanager.cpp11
-rw-r--r--engines/sword25/package/scummvmpackagemanager.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/engines/sword25/package/packagemanager.h b/engines/sword25/package/packagemanager.h
index c441fff122..4aaa05c589 100644
--- a/engines/sword25/package/packagemanager.h
+++ b/engines/sword25/package/packagemanager.h
@@ -101,6 +101,13 @@ public:
* @remark The client must not forget to release the data of the file using BE_DELETE_A.
*/
virtual byte *GetFile(const Common::String &FileName, unsigned int *pFileSize = NULL) = 0;
+
+ /**
+ * Returns a stream from file file from the virtual directory tree
+ * @param FileName The filename of the file to load
+ * @return Pointer to the stream object
+ */
+ virtual Common::SeekableReadStream *GetStream(const Common::String &fileName) = 0;
/**
* Downloads an XML file and prefixes it with an XML Version key, since the XML files don't contain it,
* and it is required for ScummVM to correctly parse the XML.
diff --git a/engines/sword25/package/scummvmpackagemanager.cpp b/engines/sword25/package/scummvmpackagemanager.cpp
index 7a38e8d22a..ee4e100b32 100644
--- a/engines/sword25/package/scummvmpackagemanager.cpp
+++ b/engines/sword25/package/scummvmpackagemanager.cpp
@@ -152,6 +152,17 @@ byte *ScummVMPackageManager::GetFile(const Common::String &fileName, unsigned in
return buffer;
}
+Common::SeekableReadStream *ScummVMPackageManager::GetStream(const Common::String &fileName) {
+ Common::SeekableReadStream *in;
+ Common::ArchiveMemberPtr fileNode = GetArchiveMember(normalizePath(fileName, _currentDirectory));
+ if (!fileNode)
+ return 0;
+ if (!(in = fileNode->createReadStream()))
+ return 0;
+
+ return in;
+}
+
Common::String ScummVMPackageManager::GetCurrentDirectory() {
return _currentDirectory;
}
diff --git a/engines/sword25/package/scummvmpackagemanager.h b/engines/sword25/package/scummvmpackagemanager.h
index 140347000b..6ffc10264a 100644
--- a/engines/sword25/package/scummvmpackagemanager.h
+++ b/engines/sword25/package/scummvmpackagemanager.h
@@ -73,6 +73,7 @@ public:
virtual bool LoadPackage(const Common::String &fileName, const Common::String &mountPosition);
virtual bool LoadDirectoryAsPackage(const Common::String &directoryName, const Common::String &mountPosition);
virtual byte *GetFile(const Common::String &fileName, unsigned int *fileSizePtr = 0);
+ virtual Common::SeekableReadStream *GetStream(const Common::String &fileName);
virtual Common::String GetCurrentDirectory();
virtual bool ChangeDirectory(const Common::String &directory);
virtual Common::String GetAbsolutePath(const Common::String &fileName);