aboutsummaryrefslogtreecommitdiff
path: root/backends/saves/default/default-saves.h
diff options
context:
space:
mode:
Diffstat (limited to 'backends/saves/default/default-saves.h')
-rw-r--r--backends/saves/default/default-saves.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/backends/saves/default/default-saves.h b/backends/saves/default/default-saves.h
index 81f45f96b8..f2453810bf 100644
--- a/backends/saves/default/default-saves.h
+++ b/backends/saves/default/default-saves.h
@@ -27,6 +27,8 @@
#include "common/savefile.h"
#include "common/str.h"
#include "common/fs.h"
+#include "common/hash-str.h"
+#include <limits.h>
/**
* Provides a default savefile manager implementation for common platforms.
@@ -36,11 +38,24 @@ public:
DefaultSaveFileManager();
DefaultSaveFileManager(const Common::String &defaultSavepath);
+ virtual void updateSavefilesList(Common::StringArray &lockedFiles);
virtual Common::StringArray listSavefiles(const Common::String &pattern);
+ virtual Common::InSaveFile *openRawFile(const Common::String &filename);
virtual Common::InSaveFile *openForLoading(const Common::String &filename);
virtual Common::OutSaveFile *openForSaving(const Common::String &filename, bool compress = true);
virtual bool removeSavefile(const Common::String &filename);
+#ifdef USE_LIBCURL
+
+ static const uint32 INVALID_TIMESTAMP = UINT_MAX;
+ static const char *TIMESTAMPS_FILENAME;
+
+ static Common::HashMap<Common::String, uint32> loadTimestamps();
+ static void saveTimestamps(Common::HashMap<Common::String, uint32> &timestamps);
+ static Common::String concatWithSavesPath(Common::String name);
+
+#endif
+
protected:
/**
* Get the path to the savegame directory.
@@ -54,6 +69,36 @@ protected:
* Sets the internal error and error message accordingly.
*/
virtual void checkPath(const Common::FSNode &dir);
+
+ /**
+ * Assure that the given save path is cached.
+ *
+ * @param savePathName String representation of save path to cache.
+ */
+ void assureCached(const Common::String &savePathName);
+
+ typedef Common::HashMap<Common::String, Common::FSNode, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> SaveFileCache;
+
+ /**
+ * Cache of all the save files in the currently cached directory.
+ *
+ * Modify with caution because we only re-cache when the save path changed!
+ * This needs to be updated inside at least openForSaving and
+ * removeSavefile.
+ */
+ SaveFileCache _saveFileCache;
+
+ /**
+ * List of "locked" files. These cannot be used for saving/loading
+ * because CloudManager is downloading those.
+ */
+ Common::StringArray _lockedFiles;
+
+private:
+ /**
+ * The currently cached directory.
+ */
+ Common::String _cachedDirectory;
};
#endif