diff options
Diffstat (limited to 'engines/sword25/package/packagemanager.cpp')
-rw-r--r-- | engines/sword25/package/packagemanager.cpp | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/engines/sword25/package/packagemanager.cpp b/engines/sword25/package/packagemanager.cpp index 063844f3ba..4765d26ed4 100644 --- a/engines/sword25/package/packagemanager.cpp +++ b/engines/sword25/package/packagemanager.cpp @@ -75,10 +75,6 @@ PackageManager::~PackageManager() { } -Service *PackageManager_CreateObject(Kernel *kernelPtr) { - return new PackageManager(kernelPtr); -} - /** * Scans through the archive list for a specified file */ @@ -154,13 +150,13 @@ byte *PackageManager::getFile(const Common::String &fileName, uint *fileSizePtr) // Savegame loading logic Common::SaveFileManager *sfm = g_system->getSavefileManager(); Common::InSaveFile *file = sfm->openForLoading( - FileSystemUtil::GetInstance().GetPathFilename(fileName)); + FileSystemUtil::getPathFilename(fileName)); if (!file) { BS_LOG_ERRORLN("Could not load savegame \"%s\".", fileName.c_str()); return 0; } - if (*fileSizePtr) + if (fileSizePtr) *fileSizePtr = file->size(); byte *buffer = new byte[file->size()]; @@ -186,7 +182,7 @@ byte *PackageManager::getFile(const Common::String &fileName, uint *fileSizePtr) delete in; if (!bytesRead) { - delete buffer; + delete[] buffer; return NULL; } @@ -218,27 +214,14 @@ Common::String PackageManager::getAbsolutePath(const Common::String &fileName) { return normalizePath(fileName, _currentDirectory); } -uint PackageManager::getFileSize(const Common::String &fileName) { - Common::SeekableReadStream *in; - Common::ArchiveMemberPtr fileNode = getArchiveMember(normalizePath(fileName, _currentDirectory)); - if (!fileNode) - return 0; - if (!(in = fileNode->createReadStream())) - return 0; - - uint fileSize = in->size(); - - return fileSize; -} - -uint PackageManager::getFileType(const Common::String &fileName) { - warning("STUB: BS_PackageManager::GetFileType(%s)", fileName.c_str()); - - //return fileNode.isDirectory() ? BS_PackageManager::FT_DIRECTORY : BS_PackageManager::FT_FILE; - return PackageManager::FT_FILE; -} - bool PackageManager::fileExists(const Common::String &fileName) { + // FIXME: The current Zip implementation doesn't support getting a folder entry, which is needed for detecting + // the English voick pack + if (fileName == "/speech/en") { + // To get around this, change to detecting one of the files in the folder + return getArchiveMember(normalizePath(fileName + "/APO0001.ogg", _currentDirectory)); + } + Common::ArchiveMemberPtr fileNode = getArchiveMember(normalizePath(fileName, _currentDirectory)); return fileNode; } |