diff options
author | Eugene Sandulenko | 2010-08-31 09:45:21 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2010-10-12 23:22:01 +0000 |
commit | 384468c0148ede9ae8140b4fd75183368d26ada6 (patch) | |
tree | 22bc9e42fe955e1c869ffa05084d3e93fc335560 /engines/sword25/package | |
parent | f71295ab6d6899b21809837b6c6bf317a45193ef (diff) | |
download | scummvm-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.h | 7 | ||||
-rw-r--r-- | engines/sword25/package/scummvmpackagemanager.cpp | 11 | ||||
-rw-r--r-- | engines/sword25/package/scummvmpackagemanager.h | 1 |
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); |