diff options
Diffstat (limited to 'engines/scumm')
-rw-r--r-- | engines/scumm/detection.cpp | 10 | ||||
-rw-r--r-- | engines/scumm/dialogs.cpp | 12 | ||||
-rw-r--r-- | engines/scumm/saveload.cpp | 22 |
3 files changed, 31 insertions, 13 deletions
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index 25c0a7318d..90c6e40aa7 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -190,7 +190,7 @@ static bool testGame(const GameSettings *g, const DescMap &fileMD5Map, const Com // the first match is used. static bool searchFSNode(const FSList &fslist, const Common::String &name, FilesystemNode &result) { for (FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) { - if (!scumm_stricmp(file->name().c_str(), name.c_str())) { + if (!scumm_stricmp(file->getName().c_str(), name.c_str())) { result = *file; return true; } @@ -216,7 +216,7 @@ static Common::Language detectLanguage(const FSList &fslist, byte id) { FSList tmpList; if (searchFSNode(fslist, "RESOURCE", resDir) && resDir.isDirectory() - && resDir.listDir(tmpList, FilesystemNode::kListFilesOnly) + && resDir.getChildren(tmpList, FilesystemNode::kListFilesOnly) && searchFSNode(tmpList, filename, langFile)) { tmp.open(langFile); } @@ -320,7 +320,7 @@ static void detectGames(const FSList &fslist, Common::List<DetectorResult> &resu DetectorDesc d; d.node = *file; d.md5Entry = 0; - fileMD5Map[file->name()] = d; + fileMD5Map[file->getName()] = d; } } @@ -447,7 +447,7 @@ static bool testGame(const GameSettings *g, const DescMap &fileMD5Map, const Com Common::File tmp; if (!tmp.open(d.node)) { - warning("SCUMM detectGames: failed to open '%s' for read access", d.node.path().c_str()); + warning("SCUMM detectGames: failed to open '%s' for read access", d.node.getPath().c_str()); return false; } @@ -751,7 +751,7 @@ PluginError Engine_SCUMM_create(OSystem *syst, Engine **engine) { // Fetch the list of files in the current directory FSList fslist; FilesystemNode dir(ConfMan.get("path")); - if (!dir.listDir(fslist, FilesystemNode::kListFilesOnly)) { + if (!dir.getChildren(fslist, FilesystemNode::kListFilesOnly)) { return kInvalidPathError; } diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp index 58fd740b17..1666578c4c 100644 --- a/engines/scumm/dialogs.cpp +++ b/engines/scumm/dialogs.cpp @@ -421,10 +421,10 @@ void SaveLoadChooser::updateInfos() { #pragma mark - Common::StringList generateSavegameList(ScummEngine *scumm, bool saveMode) { - // Get savegame names - Common::StringList l; + // Get savegame descriptions + Common::StringList descriptions; char name[32]; - uint i = saveMode ? 1 : 0; + uint i = saveMode ? 1 : 0; //the autosave is on slot #0 bool avail_saves[81]; scumm->listSavegames(avail_saves, ARRAYSIZE(avail_saves)); @@ -433,10 +433,10 @@ Common::StringList generateSavegameList(ScummEngine *scumm, bool saveMode) { scumm->getSavegameName(i, name); else name[0] = 0; - l.push_back(name); + descriptions.push_back(name); } - - return l; + + return descriptions; } MainMenuDialog::MainMenuDialog(ScummEngine *scumm) diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp index 4e8d670403..0e485e226a 100644 --- a/engines/scumm/saveload.cpp +++ b/engines/scumm/saveload.cpp @@ -384,10 +384,28 @@ void ScummEngine::makeSavegameName(char *out, int slot, bool temporary) { } void ScummEngine::listSavegames(bool *marks, int num) { + assert(marks); + char prefix[256]; + char slot[2]; + int slotNum; + Common::StringList filenames; + makeSavegameName(prefix, 99, false); - prefix[strlen(prefix)-2] = 0; - _saveFileMan->listSavefiles(prefix, marks, num); + prefix[strlen(prefix)-2] = '*'; + prefix[strlen(prefix)-1] = 0; + memset(marks, false, num * sizeof(bool)); //assume no savegames for this title + filenames = _saveFileMan->listSavefiles(prefix); + + for(Common::StringList::const_iterator file = filenames.begin(); file != filenames.end(); file++){ + //Obtain the last 2 digits of the filename, since they correspond to the save slot + slot[0] = file->c_str()[file->size()-2]; + slot[1] = file->c_str()[file->size()-1]; + + slotNum = atoi(slot); + if(slotNum >= 0 && slotNum < num) + marks[slotNum] = true; //mark this slot as valid + } } bool ScummEngine::getSavegameName(int slot, char *desc) { |