diff options
author | Sven Hesse | 2009-08-22 15:46:43 +0000 |
---|---|---|
committer | Sven Hesse | 2009-08-22 15:46:43 +0000 |
commit | c70a8745068095227cac1db6054d55db0a0405ad (patch) | |
tree | f15074886c76a98adf87cdc6c891c04edac95787 /engines/gob | |
parent | bed3980ab13e45c9c08e46668769283ec371c171 (diff) | |
download | scummvm-rg350-c70a8745068095227cac1db6054d55db0a0405ad.tar.gz scummvm-rg350-c70a8745068095227cac1db6054d55db0a0405ad.tar.bz2 scummvm-rg350-c70a8745068095227cac1db6054d55db0a0405ad.zip |
Properly fixing the Lost in Time temp sprite issue
svn-id: r43654
Diffstat (limited to 'engines/gob')
-rw-r--r-- | engines/gob/save/savehandler.cpp | 12 | ||||
-rw-r--r-- | engines/gob/save/savehandler.h | 2 | ||||
-rw-r--r-- | engines/gob/save/saveload.h | 1 | ||||
-rw-r--r-- | engines/gob/save/saveload_v3.cpp | 7 |
4 files changed, 20 insertions, 2 deletions
diff --git a/engines/gob/save/savehandler.cpp b/engines/gob/save/savehandler.cpp index 4e2c09bdca..5f24115a6c 100644 --- a/engines/gob/save/savehandler.cpp +++ b/engines/gob/save/savehandler.cpp @@ -229,6 +229,9 @@ int32 TempSpriteHandler::getSize() { } bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) { + if (isDummy(size)) + return true; + // Sprite available? if (!_sprite) return false; @@ -274,6 +277,9 @@ bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) { bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) { SurfaceDescPtr sprite; + if (isDummy(size)) + return true; + if (!createSprite(dataVar, size, offset, &sprite)) return false; @@ -320,6 +326,12 @@ bool TempSpriteHandler::createSprite(int16 dataVar, int32 size, return true; } +// A size of 0 means no proper sprite should be saved/loaded, +// but no error should be thrown either. +bool TempSpriteHandler::isDummy(int32 size) { + return (size == 0); +} + // A negative size is the flag for using a sprite bool TempSpriteHandler::isSprite(int32 size) { return (size < 0); diff --git a/engines/gob/save/savehandler.h b/engines/gob/save/savehandler.h index 55505d1b9a..6a7e563a8f 100644 --- a/engines/gob/save/savehandler.h +++ b/engines/gob/save/savehandler.h @@ -144,6 +144,8 @@ public: protected: SavePartSprite *_sprite; + /** Determine whether it's a dummy sprite save/load. */ + static bool isDummy(int32 size); /** Determine whether using a sprite was requested. */ static bool isSprite(int32 size); /** Determine which sprite is meant. */ diff --git a/engines/gob/save/saveload.h b/engines/gob/save/saveload.h index 8a7d493aed..8e1240daf1 100644 --- a/engines/gob/save/saveload.h +++ b/engines/gob/save/saveload.h @@ -256,6 +256,7 @@ protected: GameHandler *_gameHandler; NotesHandler *_notesHandler; + TempSpriteHandler *_tempSpriteHandler; ScreenshotHandler *_screenshotHandler; SaveHandler *getHandler(const char *fileName) const; diff --git a/engines/gob/save/saveload_v3.cpp b/engines/gob/save/saveload_v3.cpp index 064d472323..bb60f94725 100644 --- a/engines/gob/save/saveload_v3.cpp +++ b/engines/gob/save/saveload_v3.cpp @@ -33,8 +33,8 @@ namespace Gob { SaveLoad_v3::SaveFile SaveLoad_v3::_saveFiles[] = { { "cat.inf", kSaveModeSave , 0, "savegame"}, { "ima.inf", kSaveModeSave , 0, "screenshot"}, + { "intro.$$$", kSaveModeSave , 0, "temporary sprite"}, { "bloc.inf", kSaveModeSave , 0, "notes"}, - { "intro.$$$", kSaveModeIgnore, 0, "temporary sprite"}, { "prot", kSaveModeIgnore, 0, 0}, { "config", kSaveModeIgnore, 0, 0} }; @@ -496,17 +496,20 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName, ScreenshotType s _screenshotHandler = new ScreenshotHandler(vm, _gameHandler, sShotType); } + _tempSpriteHandler = new TempSpriteHandler(vm); _notesHandler = new NotesHandler(2560, vm, targetName); _saveFiles[0].handler = _gameHandler; _saveFiles[1].handler = _screenshotHandler; - _saveFiles[2].handler = _notesHandler; + _saveFiles[2].handler = _tempSpriteHandler; + _saveFiles[3].handler = _notesHandler; } SaveLoad_v3::~SaveLoad_v3() { delete _screenshotHandler; delete _gameHandler; delete _notesHandler; + delete _tempSpriteHandler; } const SaveLoad_v3::SaveFile *SaveLoad_v3::getSaveFile(const char *fileName) const { |