diff options
author | Sven Hesse | 2007-08-02 22:12:20 +0000 |
---|---|---|
committer | Sven Hesse | 2007-08-02 22:12:20 +0000 |
commit | a2aec6c753b7d2881a2460e039d5309e6120de62 (patch) | |
tree | 4dd9e2e6f774eb36d0e0ae07b941f51621c02e83 /engines/gob/saveload_v3.cpp | |
parent | 59089f95dd2e21065a424405b486e7138cf6b1c6 (diff) | |
download | scummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.tar.gz scummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.tar.bz2 scummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.zip |
Saving works now in Lost in Time
svn-id: r28418
Diffstat (limited to 'engines/gob/saveload_v3.cpp')
-rw-r--r-- | engines/gob/saveload_v3.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/engines/gob/saveload_v3.cpp b/engines/gob/saveload_v3.cpp index 2f143d683a..249361e222 100644 --- a/engines/gob/saveload_v3.cpp +++ b/engines/gob/saveload_v3.cpp @@ -34,9 +34,14 @@ namespace Gob { -SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName) : +SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName, + uint32 screenshotSize, uint32 indexOffset, uint32 screenshotOffset) : SaveLoad_v2(vm, targetName) { + _screenshotSize = screenshotSize; + _indexOffset = indexOffset; + _screenshotOffset = screenshotOffset; + _saveSlot = -1; _stagesCount = 3; @@ -81,7 +86,7 @@ uint32 SaveLoad_v3::getSaveGameSize() { size = 1040 + (READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4) * 2; if (_useScreenshots) - size += 19968; + size += _screenshotSize; return size; } @@ -126,7 +131,7 @@ int32 SaveLoad_v3::getSizeScreenshot() { in = saveMan->openForLoading(setCurSlot(i)); if (in) { delete in; - size = (i + 1) * 19968 + 80; + size = (i + 1) * _screenshotSize + _screenshotOffset; break; } } @@ -218,11 +223,11 @@ bool SaveLoad_v3::loadScreenshot(int16 dataVar, int32 size, int32 offset) { Common::SaveFileManager *saveMan = g_system->getSavefileManager(); Common::InSaveFile *in; - int slot = (offset - 80) / 19968; - int slotR = (offset - 80) % 19968; + int slot = (offset - _screenshotOffset) / _screenshotSize; + int slotR = (offset - _screenshotOffset) % _screenshotSize; _useScreenshots = true; - if ((size == 40) && (offset == 40)) { + if ((size == 40) && (offset == _indexOffset)) { char buf[40]; memset(buf, 0, 40); @@ -335,12 +340,12 @@ bool SaveLoad_v3::saveNotes(int16 dataVar, int32 size, int32 offset) { } bool SaveLoad_v3::saveScreenshot(int16 dataVar, int32 size, int32 offset) { - int slot = (offset - 80) / 19968; - int slotR = (offset - 80) % 19968; + int slot = (offset - _screenshotOffset) / _screenshotSize; + int slotR = (offset - _screenshotOffset) % _screenshotSize; _useScreenshots = true; - if ((offset < 80) && (size > 0)) { + if ((offset < _screenshotOffset) && (size > 0)) { return true; |