From 614dfdfbe353f07dcfe0b21a21e4f4bae702d83d Mon Sep 17 00:00:00 2001 From: lolbot-iichan Date: Sun, 14 Jul 2019 21:49:17 +0300 Subject: WINTERMUTE: Implement loading files using SavefileManager --- engines/wintermute/base/base_file_manager.cpp | 8 ++++++++ engines/wintermute/base/file/base_savefile_manager_file.cpp | 10 ++++++++++ engines/wintermute/base/file/base_savefile_manager_file.h | 2 ++ 3 files changed, 20 insertions(+) (limited to 'engines/wintermute/base') diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp index 7ae499e368..cc74454f22 100644 --- a/engines/wintermute/base/base_file_manager.cpp +++ b/engines/wintermute/base/base_file_manager.cpp @@ -324,6 +324,9 @@ bool BaseFileManager::hasFile(const Common::String &filename) { int slot = atoi(filename.c_str() + 9); return pm.getSaveExists(slot); } + if (sfmFileExists(filename)) { + return true; + } if (diskFileExists(filename)) { return true; } @@ -395,6 +398,11 @@ Common::SeekableReadStream *BaseFileManager::openFileRaw(const Common::String &f return ret; } + ret = openSfmFile(filename); + if (ret) { + return ret; + } + ret = openDiskFile(filename); if (ret) { return ret; diff --git a/engines/wintermute/base/file/base_savefile_manager_file.cpp b/engines/wintermute/base/file/base_savefile_manager_file.cpp index 8bf684192a..d76053f58f 100644 --- a/engines/wintermute/base/file/base_savefile_manager_file.cpp +++ b/engines/wintermute/base/file/base_savefile_manager_file.cpp @@ -45,9 +45,19 @@ Common::String makeSfmFilename(const Common::String &filename) { return BaseEngine::instance().getGameTargetName() + "." + smFilename; } +bool sfmFileExists(const Common::String &filename) { + Common::String smFilename = makeSfmFilename(filename); + return g_system->getSavefileManager()->listSavefiles(smFilename).size() > 0; +} + Common::SeekableReadStream *openSfmFile(const Common::String &filename) { Common::String smFilename = makeSfmFilename(filename); return g_system->getSavefileManager()->openRawFile(smFilename); } +Common::WriteStream *openSfmFileForWrite(const Common::String &filename) { + Common::String smFilename = makeSfmFilename(filename); + return g_system->getSavefileManager()->openForSaving(smFilename, false); +} + } // End of namespace Wintermute diff --git a/engines/wintermute/base/file/base_savefile_manager_file.h b/engines/wintermute/base/file/base_savefile_manager_file.h index fb9e150503..2b129cf39a 100644 --- a/engines/wintermute/base/file/base_savefile_manager_file.h +++ b/engines/wintermute/base/file/base_savefile_manager_file.h @@ -33,7 +33,9 @@ namespace Wintermute { +Common::SeekableReadStream *openSfmFile(const Common::String &filename); Common::WriteStream *openSfmFileForWrite(const Common::String &filename); +bool sfmFileExists(const Common::String &filename); } // End of namespace Wintermute -- cgit v1.2.3