[Scummvm-git-logs] scummvm master -> 9285aa3bff6faae97af106c071056a4fcbd20b9e
antoniou79
a.antoniou79 at gmail.com
Fri Sep 17 19:33:42 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
1712cceb20 SKY: Make autosave slot (0) write protected
1187cf91e1 SKY: Fix savegame deletion via GMM
9285aa3bff SKY: Display message at attempt to delete autosave slot
Commit: 1712cceb205e0fcc94e8327406b15279e8a5e227
https://github.com/scummvm/scummvm/commit/1712cceb205e0fcc94e8327406b15279e8a5e227
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-09-17T22:32:54+03:00
Commit Message:
SKY: Make autosave slot (0) write protected
This prevents the user trying to overwrite it manually using GMM
Changed paths:
engines/sky/metaengine.cpp
diff --git a/engines/sky/metaengine.cpp b/engines/sky/metaengine.cpp
index 32a52dc1e3..a9de4ec377 100644
--- a/engines/sky/metaengine.cpp
+++ b/engines/sky/metaengine.cpp
@@ -47,6 +47,7 @@ class SkyMetaEngine : public MetaEngine {
SaveStateList listSaves(const char *target) const override;
int getMaximumSaveSlot() const override;
void removeSaveState(const char *target, int slot) const override;
+ SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
Common::KeymapArray initKeymaps(const char *target) const override;
};
@@ -55,7 +56,8 @@ bool SkyMetaEngine::hasFeature(MetaEngineFeature f) const {
return
(f == kSupportsListSaves) ||
(f == kSupportsLoadingDuringStartup) ||
- (f == kSupportsDeleteSave);
+ (f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo);
}
bool Sky::SkyEngine::hasFeature(EngineFeature f) const {
@@ -232,6 +234,54 @@ void SkyMetaEngine::removeSaveState(const char *target, int slot) const {
warning("Unable to store Savegame names to file SKY-VM.SAV. (%s)", saveFileMan->popErrorDesc().c_str());
}
+SaveStateDescriptor SkyMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
+ Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+
+ if (slot > 0) {
+ // Search current save game descriptions
+ // for the description of the specified slot, if any
+ Common::String tmpSavename;
+ Common::InSaveFile *inf;
+ inf = saveFileMan->openForLoading("SKY-VM.SAV");
+ if (inf != NULL) {
+ char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN];
+ char *tmpPtr = tmpBuf;
+ inf->read(tmpBuf, MAX_SAVE_GAMES * MAX_TEXT_LEN);
+ for (int i = 0; i < MAX_SAVE_GAMES; ++i) {
+ tmpSavename = tmpPtr;
+ tmpPtr += tmpSavename.size() + 1;
+ if (i == slot - 1) {
+ break;
+ }
+ }
+ delete inf;
+ delete[] tmpBuf;
+ }
+
+ // Make sure the file exists
+ // Note: there can be valid saved file names with empty savename
+ char fName[20];
+ sprintf(fName,"SKY-VM.%03d", slot);
+ Common::InSaveFile *in = saveFileMan->openForLoading(fName);
+ if (in) {
+ delete in;
+ SaveStateDescriptor descriptor(slot, tmpSavename);
+ return descriptor;
+ }
+ }
+
+ // Reaching here, means we selected an empty save slot, that does not correspond to a save file
+ SaveStateDescriptor emptySave;
+ // Do not allow save slot 0 (used for auto-saving) to be overwritten.
+ if (slot == 0) {
+ emptySave.setAutosave(true);
+ emptySave.setWriteProtectedFlag(true);
+ } else {
+ emptySave.setWriteProtectedFlag(false);
+ }
+ return emptySave;
+}
+
#if PLUGIN_ENABLED_DYNAMIC(SKY)
REGISTER_PLUGIN_DYNAMIC(SKY, PLUGIN_TYPE_ENGINE, SkyMetaEngine);
#else
Commit: 1187cf91e1b5caaf1a0eedc9ca5fd33b7b447084
https://github.com/scummvm/scummvm/commit/1187cf91e1b5caaf1a0eedc9ca5fd33b7b447084
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-09-17T22:32:54+03:00
Commit Message:
SKY: Fix savegame deletion via GMM
Changed paths:
engines/sky/metaengine.cpp
diff --git a/engines/sky/metaengine.cpp b/engines/sky/metaengine.cpp
index a9de4ec377..fe0ed4f5b7 100644
--- a/engines/sky/metaengine.cpp
+++ b/engines/sky/metaengine.cpp
@@ -214,7 +214,7 @@ void SkyMetaEngine::removeSaveState(const char *target, int slot) const {
}
// Update the save game description at the given slot
- savenames[slot] = "";
+ savenames[slot - 1] = "";
// Save the updated descriptions
Common::OutSaveFile *outf;
Commit: 9285aa3bff6faae97af106c071056a4fcbd20b9e
https://github.com/scummvm/scummvm/commit/9285aa3bff6faae97af106c071056a4fcbd20b9e
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-09-17T22:32:54+03:00
Commit Message:
SKY: Display message at attempt to delete autosave slot
Sky engine does not allow autosave file deletion
Changed paths:
engines/sky/metaengine.cpp
diff --git a/engines/sky/metaengine.cpp b/engines/sky/metaengine.cpp
index fe0ed4f5b7..16e3d7c77d 100644
--- a/engines/sky/metaengine.cpp
+++ b/engines/sky/metaengine.cpp
@@ -32,6 +32,8 @@
#include "common/file.h"
#include "common/fs.h"
+#include "gui/message.h"
+
#include "sky/control.h"
#include "sky/sky.h"
@@ -188,8 +190,15 @@ SaveStateList SkyMetaEngine::listSaves(const char *target) const {
int SkyMetaEngine::getMaximumSaveSlot() const { return MAX_SAVE_GAMES; }
void SkyMetaEngine::removeSaveState(const char *target, int slot) const {
- if (slot == 0) // do not delete the auto save
+ if (slot == 0) {
+ // Do not delete the auto save
+ // Note: Setting the autosave slot as write protected (with setWriteProtectedFlag())
+ // does not disable the delete action on the slot.
+ const Common::U32String message = _("WARNING: Deleting the autosave slot is not supported by this engine");
+ GUI::MessageDialog warn(message);
+ warn.runModal();
return;
+ }
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
char fName[20];
More information about the Scummvm-git-logs
mailing list