aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sword25/kernel/filesystemutil.cpp94
-rw-r--r--engines/sword25/kernel/filesystemutil.h25
-rw-r--r--engines/sword25/kernel/kernel_script.cpp9
-rw-r--r--engines/sword25/kernel/persistenceservice.cpp8
-rw-r--r--engines/sword25/package/packagemanager.cpp22
-rw-r--r--engines/sword25/package/packagemanager.h17
-rw-r--r--engines/sword25/package/packagemanager_script.cpp10
7 files changed, 50 insertions, 135 deletions
diff --git a/engines/sword25/kernel/filesystemutil.cpp b/engines/sword25/kernel/filesystemutil.cpp
index 4268cf83fa..d05ac922e1 100644
--- a/engines/sword25/kernel/filesystemutil.cpp
+++ b/engines/sword25/kernel/filesystemutil.cpp
@@ -43,85 +43,45 @@ namespace Sword25 {
#define BS_LOG_PREFIX "FILESYSTEMUTIL"
-Common::String getAbsolutePath(const Common::String &path) {
- Common::FSNode node(path);
+Common::String FileSystemUtil::getUserdataDirectory() {
+ // FIXME: This code is a hack which bypasses the savefile API,
+ // and should eventually be removed.
+ Common::String path = ConfMan.get("savepath");
- if (!node.exists()) {
- // An error has occurred finding the node
- // We can do nothing at this pointer than return an empty string
- BS_LOG_ERRORLN("A call to GetAbsolutePath failed.");
+ if (path.empty()) {
+ error("No save path has been defined");
return "";
}
- // Return the result
- return node.getPath();
+ // Return the path
+ return path;
}
-class BS_FileSystemUtilScummVM : public FileSystemUtil {
-public:
- virtual Common::String getUserdataDirectory() {
- Common::String path = ConfMan.get("savepath");
-
- if (path.empty()) {
- error("No save path has been defined");
- return "";
- }
-
- // Return the path
- return path;
- }
-
- virtual Common::String getPathSeparator() {
- return Common::String("/");
- }
-
- virtual int32 getFileSize(const Common::String &filename) {
- Common::FSNode node(filename);
-
- // If the file does not exist, return -1 as a result
- if (!node.exists())
- return -1;
-
- // Get the size of the file and return it
- Common::File f;
- f.open(node);
- uint32 size = f.size();
- f.close();
-
- return size;
- }
-
- virtual bool fileExists(const Common::String &filename) {
- Common::File f;
- if (f.exists(filename))
- return true;
+Common::String FileSystemUtil::getPathSeparator() {
+ // FIXME: This code is a hack which bypasses the savefile API,
+ // and should eventually be removed.
+ return Common::String("/");
+}
- // Check if the file exists in the save folder
- Common::FSNode folder(PersistenceService::getSavegameDirectory());
- Common::FSNode fileNode = folder.getChild(FileSystemUtil::getInstance().getPathFilename(filename));
- return fileNode.exists();
- }
+bool FileSystemUtil::fileExists(const Common::String &filename) {
+ Common::File f;
+ if (f.exists(filename))
+ return true;
- virtual bool createDirectory(const Common::String &sirectoryName) {
- // ScummVM doesn't support creating folders, so this is only a stub
- BS_LOG_ERRORLN("CreateDirectory method called");
- return false;
- }
+ // Check if the file exists in the save folder
+ Common::FSNode folder(PersistenceService::getSavegameDirectory());
+ Common::FSNode fileNode = folder.getChild(getPathFilename(filename));
+ return fileNode.exists();
+}
- virtual Common::String getPathFilename(const Common::String &path) {
- for (int i = path.size() - 1; i >= 0; --i) {
- if ((path[i] == '/') || (path[i] == '\\')) {
- return Common::String(&path.c_str()[i + 1]);
- }
+Common::String FileSystemUtil::getPathFilename(const Common::String &path) {
+ for (int i = path.size() - 1; i >= 0; --i) {
+ if ((path[i] == '/') || (path[i] == '\\')) {
+ return Common::String(&path.c_str()[i + 1]);
}
-
- return path;
}
-};
-FileSystemUtil &FileSystemUtil::getInstance() {
- static BS_FileSystemUtilScummVM instance;
- return instance;
+ return path;
}
} // End of namespace Sword25
diff --git a/engines/sword25/kernel/filesystemutil.h b/engines/sword25/kernel/filesystemutil.h
index 4c089e1049..38a3fdaa12 100644
--- a/engines/sword25/kernel/filesystemutil.h
+++ b/engines/sword25/kernel/filesystemutil.h
@@ -61,8 +61,6 @@ namespace Sword25 {
class FileSystemUtil {
public:
- static FileSystemUtil &getInstance();
- virtual ~FileSystemUtil() {}
/**
* This function returns the name of the directory in which all user data is to be stored.
@@ -70,37 +68,32 @@ public:
* These are for example Screenshots, game saves, configuration files, log files, ...
* @return Returns the name of the directory for user data.
*/
- virtual Common::String getUserdataDirectory() = 0;
+ static Common::String getUserdataDirectory();
+
/**
* @return Returns the path seperator
*/
- virtual Common::String getPathSeparator() = 0;
+ static Common::String getPathSeparator();
+
/**
* @param Filename The path to a file.
* @return Returns the size of the specified file. If the size could not be
* determined, or the file does not exist, returns -1
*/
- virtual int32 getFileSize(const Common::String &filename) = 0;
+ static int32 getFileSize(const Common::String &filename);
+
/**
* @param Filename The path to a file.
* @return Returns true if the file exists.
*/
- virtual bool fileExists(const Common::String &filename) = 0;
- /**
- * This function creates a directory
- *
- * If the parameter is "\b\c\d\e" is passed, and "\b\c" already exists, then folder 'd'
- * will be created, and subdirectory 'e' under it.
- * @param DirectoryName The name of the directory to be created
- * @return Returns true if the folder(s) could be created, otherwise false.
- */
- virtual bool createDirectory(const Common::String &directoryName) = 0;
+ static bool fileExists(const Common::String &filename);
+
/**
* Gets the filename from a path and filename
* @param Filename The full path and filename
* @return Returns just the filename
*/
- virtual Common::String getPathFilename(const Common::String &path) = 0;
+ static Common::String getPathFilename(const Common::String &path);
};
} // End of namespace Sword25
diff --git a/engines/sword25/kernel/kernel_script.cpp b/engines/sword25/kernel/kernel_script.cpp
index 275b55fb73..d4b9a56d8e 100644
--- a/engines/sword25/kernel/kernel_script.cpp
+++ b/engines/sword25/kernel/kernel_script.cpp
@@ -136,22 +136,23 @@ static int executeFile(lua_State *L) {
}
static int getUserdataDirectory(lua_State *L) {
- lua_pushstring(L, FileSystemUtil::getInstance().getUserdataDirectory().c_str());
+ lua_pushstring(L, FileSystemUtil::getUserdataDirectory().c_str());
return 1;
}
static int getPathSeparator(lua_State *L) {
- lua_pushstring(L, FileSystemUtil::getInstance().getPathSeparator().c_str());
+ lua_pushstring(L, FileSystemUtil::getPathSeparator().c_str());
return 1;
}
static int fileExists(lua_State *L) {
- lua_pushbooleancpp(L, FileSystemUtil::getInstance().fileExists(luaL_checkstring(L, 1)));
+ lua_pushbooleancpp(L, FileSystemUtil::fileExists(luaL_checkstring(L, 1)));
return 1;
}
static int createDirectory(lua_State *L) {
- lua_pushbooleancpp(L, FileSystemUtil::getInstance().createDirectory(luaL_checkstring(L, 1)));
+ // ScummVM engines cannot create directories, so we do nothing here.
+ lua_pushbooleancpp(L, false);
return 1;
}
diff --git a/engines/sword25/kernel/persistenceservice.cpp b/engines/sword25/kernel/persistenceservice.cpp
index 0159991e0f..1b41f24a1d 100644
--- a/engines/sword25/kernel/persistenceservice.cpp
+++ b/engines/sword25/kernel/persistenceservice.cpp
@@ -202,7 +202,7 @@ uint PersistenceService::getSlotCount() {
}
Common::String PersistenceService::getSavegameDirectory() {
- Common::FSNode node(FileSystemUtil::getInstance().getUserdataDirectory());
+ Common::FSNode node(FileSystemUtil::getUserdataDirectory());
Common::FSNode childNode = node.getChild(SAVEGAME_DIRECTORY);
// Try and return the path using the savegame subfolder. But if doesn't exist, fall back on the data directory
@@ -251,6 +251,9 @@ Common::String &PersistenceService::getSavegameFilename(uint slotID) {
}
bool PersistenceService::saveGame(uint slotID, const Common::String &screenshotFilename) {
+ // FIXME: This code is a hack which bypasses the savefile API,
+ // and should eventually be removed.
+
// Überprüfen, ob die Slot-ID zulässig ist.
if (slotID >= SLOT_COUNT) {
BS_LOG_ERRORLN("Tried to save to an invalid slot (%d). Only slot ids form 0 to %d are allowed.", slotID, SLOT_COUNT - 1);
@@ -260,9 +263,6 @@ bool PersistenceService::saveGame(uint slotID, const Common::String &screenshotF
// Dateinamen erzeugen.
Common::String filename = generateSavegameFilename(slotID);
- // Sicherstellen, dass das Verzeichnis für die Spielstanddateien existiert.
- FileSystemUtil::getInstance().createDirectory(getSavegameDirectory());
-
// Spielstanddatei öffnen und die Headerdaten schreiben.
Common::SaveFileManager *sfm = g_system->getSavefileManager();
Common::OutSaveFile *file = sfm->openForSaving(filename);
diff --git a/engines/sword25/package/packagemanager.cpp b/engines/sword25/package/packagemanager.cpp
index ee13cd5920..bd750d0880 100644
--- a/engines/sword25/package/packagemanager.cpp
+++ b/engines/sword25/package/packagemanager.cpp
@@ -150,7 +150,7 @@ 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;
@@ -214,26 +214,6 @@ 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) {
Common::ArchiveMemberPtr fileNode = getArchiveMember(normalizePath(fileName, _currentDirectory));
return fileNode;
diff --git a/engines/sword25/package/packagemanager.h b/engines/sword25/package/packagemanager.h
index 96f136dd83..03598012a6 100644
--- a/engines/sword25/package/packagemanager.h
+++ b/engines/sword25/package/packagemanager.h
@@ -190,23 +190,6 @@ public:
int doSearch(Common::ArchiveMemberList &list, const Common::String &filter, const Common::String &path, uint typeFilter = FT_DIRECTORY | FT_FILE);
/**
- * Returns a file's size
- * @param FileName The filename
- * @return The file size. If an error occurs, then 0xffffffff is returned.
- * @remarks For files in packages, then uncompressed size is returned.
- **/
- uint getFileSize(const Common::String &fileName);
-
- /**
- * Returns the type of a file.
- * @param FileName The filename
- * @return Returns the file type, either (BS_PackageManager::FT_DIRECTORY
- * or BS_PackageManager::FT_FILE).
- * If the file was not found, then 0 is returned.
- */
- uint getFileType(const Common::String &fileName);
-
- /**
* Determines whether a file exists
* @param FileName The filename
* @return Returns true if the file exists, otherwise false.
diff --git a/engines/sword25/package/packagemanager_script.cpp b/engines/sword25/package/packagemanager_script.cpp
index afab573511..9367ae3071 100644
--- a/engines/sword25/package/packagemanager_script.cpp
+++ b/engines/sword25/package/packagemanager_script.cpp
@@ -90,17 +90,15 @@ static int getAbsolutePath(lua_State *L) {
}
static int getFileSize(lua_State *L) {
- PackageManager *pPM = getPM();
-
- lua_pushnumber(L, pPM->getFileSize(luaL_checkstring(L, 1)));
+ // This function apparently is not used by the game scripts
+ lua_pushnumber(L, 0);
return 1;
}
static int getFileType(lua_State *L) {
- PackageManager *pPM = getPM();
-
- lua_pushnumber(L, pPM->getFileType(luaL_checkstring(L, 1)));
+ // This function apparently is not used by the game scripts
+ lua_pushnumber(L, 0);
return 1;
}