aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/package/packagemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sword25/package/packagemanager.cpp')
-rw-r--r--engines/sword25/package/packagemanager.cpp37
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;
}