aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
Diffstat (limited to 'engines/saga')
-rw-r--r--engines/saga/detection.cpp18
-rw-r--r--engines/saga/saga.h1
2 files changed, 18 insertions, 1 deletions
diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp
index c49661a052..b7503278e7 100644
--- a/engines/saga/detection.cpp
+++ b/engines/saga/detection.cpp
@@ -187,9 +187,10 @@ SaveStateList SagaMetaEngine::listSaves(const char *target) const {
sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
SaveStateList saveList;
+ int slotNum = 0;
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
- int slotNum = atoi(file->c_str() + file->size() - 2);
+ slotNum = atoi(file->c_str() + file->size() - 2);
if (slotNum >= 0 && slotNum <= 99) {
Common::InSaveFile *in = saveFileMan->openForLoading(file->c_str());
@@ -199,10 +200,20 @@ SaveStateList SagaMetaEngine::listSaves(const char *target) const {
in->read(saveDesc, SAVE_TITLE_SIZE);
saveList.push_back(SaveStateDescriptor(slotNum, saveDesc));
delete in;
+ } else {
+ // handle gaps
+ *saveDesc = 0;
+ saveList.push_back(SaveStateDescriptor(slotNum, saveDesc));
}
}
}
+ // Fill the rest of the list with empty slots
+ *saveDesc = 0;
+ for (int i = slotNum + 1; i <= 99; i++) {
+ saveList.push_back(SaveStateDescriptor(i, saveDesc));
+ }
+
return saveList;
}
@@ -265,4 +276,9 @@ Common::Error SagaEngine::loadGameState(int slot) {
return Common::kNoError; // TODO: return success/failure
}
+Common::Error SagaEngine::saveGameState(int slot, const char *desc) {
+ save(calcSaveFileName((uint)slot), desc);
+ return Common::kNoError; // TODO: return success/failure
+}
+
} // End of namespace Saga
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index 6563cd30d6..592336fe98 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -653,6 +653,7 @@ public:
int getDisplayWidth() const;
int getDisplayHeight() const;
Common::Error loadGameState(int slot);
+ Common::Error saveGameState(int slot, const char *desc);
bool canLoadGameStateCurrently();
bool canSaveGameStateCurrently();
const GameDisplayInfo &getDisplayInfo();