diff options
Diffstat (limited to 'engines/wintermute/base/base_string_table.cpp')
-rw-r--r-- | engines/wintermute/base/base_string_table.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/engines/wintermute/base/base_string_table.cpp b/engines/wintermute/base/base_string_table.cpp index 9adbbdf7be..7a2428bd48 100644 --- a/engines/wintermute/base/base_string_table.cpp +++ b/engines/wintermute/base/base_string_table.cpp @@ -189,8 +189,10 @@ bool BaseStringTable::loadFile(const char *filename, bool clearOld) { BaseEngine::LOG(0, "Loading string table..."); if (clearOld) { + _filenames.clear(); _strings.clear(); } + _filenames.push_back(Common::String(filename)); uint32 size; byte *buffer = BaseFileManager::getEngineInstance()->readWholeFile(filename, &size); @@ -253,4 +255,27 @@ bool BaseStringTable::loadFile(const char *filename, bool clearOld) { return STATUS_OK; } +bool BaseStringTable::persist(BasePersistenceManager *persistMgr) { + // Do nothing if the save game is too old. + if (!persistMgr->checkVersion(1, 3, 1)) { + return true; + } + uint32 numFiles = _filenames.size(); + persistMgr->transferUint32("NumFiles", &numFiles); + if (persistMgr->getIsSaving()) { + for (int i = 0; i < numFiles; i++) { + persistMgr->transferString("Filename", &_filenames[i]); + } + } else { + _strings.clear(); + _filenames.clear(); + for (int i = 0; i < numFiles; i++) { + Common::String filename = ""; + persistMgr->transferString("Filename", &filename); + loadFile(filename.c_str(), false); + } + } + return true; +} + } // End of namespace Wintermute |