[Scummvm-git-logs] scummvm master -> a60558071d0c6ffec9d099571fd1daff9e735532
sev-
sev at scummvm.org
Mon Sep 19 19:17:21 CEST 2016
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3bf4f3fcbe FULLPIPE: Fix crash at load dialog initialization
26142799ad FULLPIPE: Correct slot number on loading
1e9351efaf FULLPIPE: Added debug info to saveload code
783d968e20 FULLPIPE: Fix saving object to savegames
a60558071d FULLPIPE: Fix game save/load
Commit: 3bf4f3fcbe342d5ddb805e66de1df29541541410
https://github.com/scummvm/scummvm/commit/3bf4f3fcbe342d5ddb805e66de1df29541541410
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-09-19T18:13:31+02:00
Commit Message:
FULLPIPE: Fix crash at load dialog initialization
Changed paths:
engines/fullpipe/gameloader.cpp
engines/fullpipe/modal.cpp
diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp
index 55db7fb..d1f2781 100644
--- a/engines/fullpipe/gameloader.cpp
+++ b/engines/fullpipe/gameloader.cpp
@@ -712,7 +712,8 @@ bool readSavegameHeader(Common::InSaveFile *in, FullpipeSavegameHeader &header)
// Read in the string
header.saveName.clear();
char ch;
- while ((ch = (char)in->readByte()) != '\0') header.saveName += ch;
+ while ((ch = (char)in->readByte()) != '\0')
+ header.saveName += ch;
// Get the thumbnail
header.thumbnail = Graphics::loadThumbnail(*in);
diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp
index 8836429..5f8afbc 100644
--- a/engines/fullpipe/modal.cpp
+++ b/engines/fullpipe/modal.cpp
@@ -1601,7 +1601,7 @@ void ModalSaveGame::setup(Scene *sc, int mode) {
} else {
w = 0;
- for (int j = 0; j < 16; j++) {
+ for (uint j = 0; j < _arrayL.size(); j++) {
_arrayL[j]->getDimensions(&point);
w += point.x + 2;
}
@@ -1640,7 +1640,11 @@ bool ModalSaveGame::getFileInfo(int slot, FileInfo *fileinfo) {
SaveStateDescriptor desc(slot, header.saveName);
char res[17];
- snprintf(res, 17, "%s %s", desc.getSaveDate().c_str(), desc.getSaveTime().c_str());
+ // FIXME. HACK. TODO: Set proper dates
+ desc.setSaveDate(2016, 9, 18);
+ desc.setSaveTime(9, 56);
+
+ snprintf(res, 17, "%s %s", desc.getSaveDate().c_str(), desc.getSaveTime().c_str());
for (int i = 0; i < 16; i++) {
switch(res[i]) {
Commit: 26142799adf6ef4e07a3a91c413f40c7253aa3f8
https://github.com/scummvm/scummvm/commit/26142799adf6ef4e07a3a91c413f40c7253aa3f8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-09-19T18:13:31+02:00
Commit Message:
FULLPIPE: Correct slot number on loading
Changed paths:
engines/fullpipe/modal.cpp
engines/fullpipe/stateloader.cpp
diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp
index 5f8afbc..cceec4a 100644
--- a/engines/fullpipe/modal.cpp
+++ b/engines/fullpipe/modal.cpp
@@ -1622,7 +1622,7 @@ char *ModalSaveGame::getSaveName() {
if (_queryRes < 0)
return 0;
- return _files[_queryRes]->filename;
+ return _files[_queryRes - 1]->filename;
}
bool ModalSaveGame::getFileInfo(int slot, FileInfo *fileinfo) {
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 3d74e93..588a366 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -42,6 +42,11 @@ void GameLoader::readSavegame(const char *fname) {
SaveHeader header;
Common::InSaveFile *saveFile = g_system->getSavefileManager()->openForLoading(fname);
+ if (!saveFile) {
+ warning("Cannot open save %s for loading", fname);
+ return;
+ }
+
header.version = saveFile->readUint32LE();
saveFile->read(header.magic, 32);
header.updateCounter = saveFile->readUint32LE();
Commit: 1e9351efaf5c7c99c23f6155b4f9ac591f8c42d4
https://github.com/scummvm/scummvm/commit/1e9351efaf5c7c99c23f6155b4f9ac591f8c42d4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-09-19T18:13:31+02:00
Commit Message:
FULLPIPE: Added debug info to saveload code
Changed paths:
engines/fullpipe/stateloader.cpp
engines/fullpipe/statesaver.cpp
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 588a366..12895fd 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -53,6 +53,9 @@ void GameLoader::readSavegame(const char *fname) {
header.unkField = saveFile->readUint32LE();
header.encSize = saveFile->readUint32LE();
+ debugC(3, kDebugLoading, "version: %d magic: %s updateCounter: %d unkField: %d encSize: %d, pos: %d",
+ header.version, header.magic, header.updateCounter, header.unkField, header.encSize, saveFile->pos());
+
if (header.version != 48)
return;
diff --git a/engines/fullpipe/statesaver.cpp b/engines/fullpipe/statesaver.cpp
index c63587a..eaf0352 100644
--- a/engines/fullpipe/statesaver.cpp
+++ b/engines/fullpipe/statesaver.cpp
@@ -109,6 +109,9 @@ void GameLoader::writeSavegame(Scene *sc, const char *fname) {
saveFile->writeUint32LE(header.unkField);
saveFile->writeUint32LE(header.encSize);
+ debugC(3, kDebugLoading, "version: %d magic: %s updateCounter: %d unkField: %d encSize: %d, pos: %d",
+ header.version, header.magic, header.updateCounter, header.unkField, header.encSize, saveFile->pos());
+
saveFile->write(stream.getData(), stream.size());
saveFile->finalize();
Commit: 783d968e20fb7a29d5c19ba6671d6c9ba363ec41
https://github.com/scummvm/scummvm/commit/783d968e20fb7a29d5c19ba6671d6c9ba363ec41
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-09-19T18:58:39+02:00
Commit Message:
FULLPIPE: Fix saving object to savegames
Changed paths:
engines/fullpipe/stateloader.cpp
engines/fullpipe/statesaver.cpp
engines/fullpipe/utils.cpp
engines/fullpipe/utils.h
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 12895fd..1f327b5 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -78,11 +78,11 @@ void GameLoader::readSavegame(const char *fname) {
for (uint i = 0; i < header.encSize; i++)
data[i] -= i & 0x7f;
- MfcArchive *archive = new MfcArchive(new Common::MemoryReadStream(data, header.encSize));
+ //Common::hexdump(data, 48);
- GameVar var;
+ MfcArchive *archive = new MfcArchive(new Common::MemoryReadStream(data, header.encSize));
- var.load(*archive);
+ GameVar *var = (GameVar *)archive->readClass();
GameVar *v = _gameVar->getSubVarByName("OBJSTATES");
@@ -96,7 +96,7 @@ void GameLoader::readSavegame(const char *fname) {
}
}
- addVar(&var, v);
+ addVar(var, v);
getGameLoaderInventory()->loadPartial(*archive);
@@ -313,6 +313,8 @@ GameVar::GameVar() {
_varType = 0;
_value.floatValue = 0;
_varName = 0;
+
+ _objtype = kObjTypeGameVar;
}
GameVar::~GameVar() {
diff --git a/engines/fullpipe/statesaver.cpp b/engines/fullpipe/statesaver.cpp
index eaf0352..406c87a 100644
--- a/engines/fullpipe/statesaver.cpp
+++ b/engines/fullpipe/statesaver.cpp
@@ -97,6 +97,8 @@ void GameLoader::writeSavegame(Scene *sc, const char *fname) {
for (uint i = 0; i < header.encSize; i++)
stream.getData()[i] += i & 0x7f;
+ //Common::hexdump(stream.getData(), 48);
+
if (_savegameCallback)
_savegameCallback(archive, true);
diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp
index 5403ade..ba0e180 100644
--- a/engines/fullpipe/utils.cpp
+++ b/engines/fullpipe/utils.cpp
@@ -109,7 +109,7 @@ char *MfcArchive::readPascalString(bool twoByte) {
return tmp;
}
-void MfcArchive::writePascalString(char *str, bool twoByte) {
+void MfcArchive::writePascalString(const char *str, bool twoByte) {
int len = strlen(str);
if (twoByte)
@@ -475,6 +475,14 @@ void MfcArchive::writeObject(CObject *obj) {
writeUint16LE(0xffff); // New class
_objectHash[obj] = _lastIndex++;
+ switch (obj->_objtype) {
+ case kObjTypeGameVar:
+ writePascalString(lookupObjectId(kGameVar));
+ break;
+ default:
+ error("Unhandled save for object type: %d", obj->_objtype);
+ }
+
obj->save(*this);
}
}
diff --git a/engines/fullpipe/utils.h b/engines/fullpipe/utils.h
index 44bda68..41a54f4 100644
--- a/engines/fullpipe/utils.h
+++ b/engines/fullpipe/utils.h
@@ -68,7 +68,7 @@ public:
MfcArchive(Common::WriteStream *file);
char *readPascalString(bool twoByte = false);
- void writePascalString(char *str, bool twoByte = false);
+ void writePascalString(const char *str, bool twoByte = false);
int readCount();
double readDouble();
CObject *parseClass(bool *isCopyReturned);
@@ -103,7 +103,8 @@ enum ObjType {
kObjTypeMctlCompound,
kObjTypeObjstateCommand,
kObjTypePictureObject,
- kObjTypeStaticANIObject
+ kObjTypeStaticANIObject,
+ kObjTypeGameVar
};
class CObject {
Commit: a60558071d0c6ffec9d099571fd1daff9e735532
https://github.com/scummvm/scummvm/commit/a60558071d0c6ffec9d099571fd1daff9e735532
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-09-19T19:17:02+02:00
Commit Message:
FULLPIPE: Fix game save/load
Changed paths:
engines/fullpipe/stateloader.cpp
engines/fullpipe/statesaver.cpp
engines/fullpipe/utils.cpp
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 1f327b5..d5d374f 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -78,8 +78,6 @@ void GameLoader::readSavegame(const char *fname) {
for (uint i = 0; i < header.encSize; i++)
data[i] -= i & 0x7f;
- //Common::hexdump(data, 48);
-
MfcArchive *archive = new MfcArchive(new Common::MemoryReadStream(data, header.encSize));
GameVar *var = (GameVar *)archive->readClass();
diff --git a/engines/fullpipe/statesaver.cpp b/engines/fullpipe/statesaver.cpp
index 406c87a..eaf0352 100644
--- a/engines/fullpipe/statesaver.cpp
+++ b/engines/fullpipe/statesaver.cpp
@@ -97,8 +97,6 @@ void GameLoader::writeSavegame(Scene *sc, const char *fname) {
for (uint i = 0; i < header.encSize; i++)
stream.getData()[i] += i & 0x7f;
- //Common::hexdump(stream.getData(), 48);
-
if (_savegameCallback)
_savegameCallback(archive, true);
diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp
index ba0e180..9dfebf2 100644
--- a/engines/fullpipe/utils.cpp
+++ b/engines/fullpipe/utils.cpp
@@ -475,9 +475,11 @@ void MfcArchive::writeObject(CObject *obj) {
writeUint16LE(0xffff); // New class
_objectHash[obj] = _lastIndex++;
+ writeUint16LE(1); // schema
+
switch (obj->_objtype) {
case kObjTypeGameVar:
- writePascalString(lookupObjectId(kGameVar));
+ writePascalString(lookupObjectId(kGameVar), true); // Two byte counter
break;
default:
error("Unhandled save for object type: %d", obj->_objtype);
More information about the Scummvm-git-logs
mailing list