aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Montoir2008-11-30 12:23:24 +0000
committerGregory Montoir2008-11-30 12:23:24 +0000
commit8d59712192fad46b95fd2dc36d659b2c2649c873 (patch)
treea4b867e0da8d140a672587419398f16f1a0c0488
parent2730a6dddce10c1ff387a64355822707fc93c8ae (diff)
downloadscummvm-rg350-8d59712192fad46b95fd2dc36d659b2c2649c873.tar.gz
scummvm-rg350-8d59712192fad46b95fd2dc36d659b2c2649c873.tar.bz2
scummvm-rg350-8d59712192fad46b95fd2dc36d659b2c2649c873.zip
fixed listSaves ordering
svn-id: r35191
-rw-r--r--engines/tucker/detection.cpp18
-rw-r--r--engines/tucker/tucker.h3
2 files changed, 14 insertions, 7 deletions
diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp
index 8263b6eb91..cfbac613f5 100644
--- a/engines/tucker/detection.cpp
+++ b/engines/tucker/detection.cpp
@@ -125,26 +125,32 @@ public:
virtual SaveStateList listSaves(const char *target) const {
Common::String pattern = Tucker::generateGameStateFileName(target, 0, true);
Common::StringList filenames = g_system->getSavefileManager()->listSavefiles(pattern.c_str());
- sort(filenames.begin(), filenames.end());
+ bool slotsTable[Tucker::kLastSaveSlot + 1];
+ memset(slotsTable, 0, sizeof(slotsTable));
SaveStateList saveList;
for (Common::StringList::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
int slot;
const char *ext = strrchr(file->c_str(), '.');
- if (ext && (slot = atoi(ext + 1)) >= 0) {
+ if (ext && (slot = atoi(ext + 1)) >= 0 && slot <= Tucker::kLastSaveSlot) {
Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(file->c_str());
if (in) {
- char description[64];
- snprintf(description, sizeof(description), "savegm.%02d", slot);
- saveList.push_back(SaveStateDescriptor(slot, description));
+ slotsTable[slot] = true;
delete in;
}
}
}
+ for (int slot = 0; slot <= Tucker::kLastSaveSlot; ++slot) {
+ if (slotsTable[slot]) {
+ char description[64];
+ snprintf(description, sizeof(description), "savegm.%02d", slot);
+ saveList.push_back(SaveStateDescriptor(slot, description));
+ }
+ }
return saveList;
}
virtual int getMaximumSaveSlot() const {
- return 99;
+ return Tucker::kLastSaveSlot;
}
virtual void removeSaveState(const char *target, int slot) const {
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index b26e8b20b4..5d9ad6b007 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -176,7 +176,8 @@ enum {
kFadePaletteStep = 5,
kStartupLocation = 1,
kDefaultCharSpeechSoundCounter = 1,
- kMaxSoundVolume = 127
+ kMaxSoundVolume = 127,
+ kLastSaveSlot = 99
};
enum Verb {