aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorDavid Corrales2007-07-12 17:58:15 +0000
committerDavid Corrales2007-07-12 17:58:15 +0000
commit720c974fafaca16b6e86f28ffc14c8c3aa574e15 (patch)
treed2d1ad9231fdc85099e12234ea14e5e50a89d8be /engines/scumm
parentc1961f1f76e91595624a2e49e48b0fab5f412f27 (diff)
downloadscummvm-rg350-720c974fafaca16b6e86f28ffc14c8c3aa574e15.tar.gz
scummvm-rg350-720c974fafaca16b6e86f28ffc14c8c3aa574e15.tar.bz2
scummvm-rg350-720c974fafaca16b6e86f28ffc14c8c3aa574e15.zip
Changed SaveFileManager::listSavegames() function to be engine agnostic. It now returns a list will the full paths of existing files that match a given regex.
Additionally, modified the 5 engines which use the default manager (Agos, Queen, Saga, Scumm and Touche) to parse the filename list and mark the available saves bool array correctly. svn-id: r28046
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/dialogs.cpp12
-rw-r--r--engines/scumm/saveload.cpp22
2 files changed, 26 insertions, 8 deletions
diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp
index 16fe72531b..85a72cb090 100644
--- a/engines/scumm/dialogs.cpp
+++ b/engines/scumm/dialogs.cpp
@@ -427,10 +427,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));
@@ -439,10 +439,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 9d0d0ad654..3f638946c4 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) {