[Scummvm-cvs-logs] scummvm master -> 855b5320b3249e138eeb07a2414ce2ecb862387a
bluegr
md5 at scummvm.org
Sat Dec 17 18:32:09 CET 2011
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:
0731bcb5ac DREAMWEB: Implement removeSaveState()
af1c8d774d DREAMWEB: Fix two off-by-one errors in saveGame(), rewrite scanForNames() to use listSavefiles() and use Common::strlcop
855b5320b3 DREAMWEB: Use ScummVM's save/load dialogs by default
Commit: 0731bcb5acb9a591eac843904e725de98b19fa73
https://github.com/scummvm/scummvm/commit/0731bcb5acb9a591eac843904e725de98b19fa73
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-17T09:28:04-08:00
Commit Message:
DREAMWEB: Implement removeSaveState()
Changed paths:
engines/dreamweb/detection.cpp
diff --git a/engines/dreamweb/detection.cpp b/engines/dreamweb/detection.cpp
index ba7152b..db2155f 100644
--- a/engines/dreamweb/detection.cpp
+++ b/engines/dreamweb/detection.cpp
@@ -116,6 +116,8 @@ SaveStateList DreamWebMetaEngine::listSaves(const char *target) const {
int DreamWebMetaEngine::getMaximumSaveSlot() const { return 99; }
void DreamWebMetaEngine::removeSaveState(const char *target, int slot) const {
+ Common::String fileName = Common::String::format("DREAMWEB.D%02d", slot);
+ g_system->getSavefileManager()->removeSavefile(fileName);
}
#if PLUGIN_ENABLED_DYNAMIC(DREAMWEB)
Commit: af1c8d774d4d15b848876c915165cf4b2632ebae
https://github.com/scummvm/scummvm/commit/af1c8d774d4d15b848876c915165cf4b2632ebae
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-17T09:30:06-08:00
Commit Message:
DREAMWEB: Fix two off-by-one errors in saveGame(), rewrite scanForNames() to use listSavefiles() and use Common::strlcopy instead of strncpy
Changed paths:
engines/dreamweb/saveload.cpp
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 2945874..574036c 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -191,16 +191,16 @@ void DreamGenContext::saveGame() {
}
char descbuf[17] = { 2, 0 };
- strncpy((char*)descbuf+1, game_description.c_str(), 16);
+ Common::strlcpy((char*)descbuf+1, game_description.c_str(), 16);
unsigned int desclen = game_description.size();
if (desclen > 15)
desclen = 15;
// zero terminate, and pad with ones
descbuf[++desclen] = 0;
- while (desclen < 17)
+ while (desclen < 16)
descbuf[++desclen] = 1;
if (savegameId < 7)
- memcpy(&_saveNames[17*savegameId], descbuf, 17);
+ Common::strlcpy(&_saveNames[17 * savegameId + 1], descbuf, 16); // the first character is unused
savePosition(savegameId, descbuf);
@@ -464,42 +464,39 @@ void DreamGenContext::loadPosition(unsigned int slot) {
// Count number of save files, and load their descriptions into _saveNames
unsigned int DreamGenContext::scanForNames() {
- unsigned int count = 0;
-
- FileHeader header;
-
- // TODO: Change this to use SaveFileManager::listSavefiles()
+ // Initialize the first 7 slots (like the original code expects)
for (unsigned int slot = 0; slot < 7; ++slot) {
- _saveNames[17*slot+0] = 2;
- _saveNames[17*slot+1] = 0;
+ _saveNames[17 * slot + 0] = 2;
+ _saveNames[17 * slot + 1] = 0;
for (int i = 2; i < 17; ++i)
- _saveNames[17*slot+i] = 1;
-
- // Try opening savegame with the given slot id
- Common::String filename = engine->getSavegameFilename(slot);
- Common::InSaveFile *inSaveFile = engine->getSaveFileManager()->openForLoading(filename);
- if (!inSaveFile)
- continue;
-
- ++count;
-
- inSaveFile->read((uint8 *)&header, sizeof(FileHeader));
-
- if (header.len(0) != 17) {
- ::warning("Error loading save: description buffer isn't 17 bytes");
- delete inSaveFile;
- continue;
- }
-
- // NB: Only possible if slot < 7
- inSaveFile->read(&_saveNames[17*slot], 17);
+ _saveNames[17 * slot + i] = 1; // initialize with 1's
+ }
- delete inSaveFile;
+ Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+ Common::StringArray files = saveFileMan->listSavefiles("DREAMWEB.D??");
+ Common::sort(files.begin(), files.end());
+
+ SaveStateList saveList;
+ for (uint i = 0; i < files.size(); ++i) {
+ const Common::String &file = files[i];
+ Common::InSaveFile *stream = saveFileMan->openForLoading(file);
+ if (!stream)
+ error("cannot open save file %s", file.c_str());
+ char name[17] = {};
+ stream->seek(0x61);
+ stream->read(name, sizeof(name) - 1);
+ delete stream;
+
+ int slotNum = atoi(file.c_str() + file.size() - 2);
+ SaveStateDescriptor sd(slotNum, name);
+ saveList.push_back(sd);
+ if (slotNum < 7)
+ Common::strlcpy(&_saveNames[17 * slotNum + 1], name, 16); // the first character is unused
}
- al = (uint8)count;
+ al = saveList.size() <= 7 ? (uint8)saveList.size() : 7;
- return count;
+ return saveList.size();
}
void DreamGenContext::loadOld() {
Commit: 855b5320b3249e138eeb07a2414ce2ecb862387a
https://github.com/scummvm/scummvm/commit/855b5320b3249e138eeb07a2414ce2ecb862387a
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-17T09:30:48-08:00
Commit Message:
DREAMWEB: Use ScummVM's save/load dialogs by default
Changed paths:
engines/dreamweb/dreamweb.cpp
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index 082b7d8..0af3f00 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -209,7 +209,7 @@ Common::Error DreamWebEngine::run() {
syncSoundSettings();
_console = new DreamWebConsole(this);
- ConfMan.registerDefault("dreamweb_originalsaveload", "true");
+ ConfMan.registerDefault("dreamweb_originalsaveload", "false");
_timer->installTimerProc(vSyncInterrupt, 1000000 / 70, this, "dreamwebVSync");
_context.__start();
More information about the Scummvm-git-logs
mailing list