Properly fixing the Lost in Time temp sprite issue
svn-id: r43654
This commit is contained in:
parent
bed3980ab1
commit
c70a874506
4 changed files with 20 additions and 2 deletions
|
@ -229,6 +229,9 @@ int32 TempSpriteHandler::getSize() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
|
bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
|
||||||
|
if (isDummy(size))
|
||||||
|
return true;
|
||||||
|
|
||||||
// Sprite available?
|
// Sprite available?
|
||||||
if (!_sprite)
|
if (!_sprite)
|
||||||
return false;
|
return false;
|
||||||
|
@ -274,6 +277,9 @@ bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
|
||||||
bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
|
bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
|
||||||
SurfaceDescPtr sprite;
|
SurfaceDescPtr sprite;
|
||||||
|
|
||||||
|
if (isDummy(size))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (!createSprite(dataVar, size, offset, &sprite))
|
if (!createSprite(dataVar, size, offset, &sprite))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -320,6 +326,12 @@ bool TempSpriteHandler::createSprite(int16 dataVar, int32 size,
|
||||||
return true;
|
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
|
// A negative size is the flag for using a sprite
|
||||||
bool TempSpriteHandler::isSprite(int32 size) {
|
bool TempSpriteHandler::isSprite(int32 size) {
|
||||||
return (size < 0);
|
return (size < 0);
|
||||||
|
|
|
@ -144,6 +144,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
SavePartSprite *_sprite;
|
SavePartSprite *_sprite;
|
||||||
|
|
||||||
|
/** Determine whether it's a dummy sprite save/load. */
|
||||||
|
static bool isDummy(int32 size);
|
||||||
/** Determine whether using a sprite was requested. */
|
/** Determine whether using a sprite was requested. */
|
||||||
static bool isSprite(int32 size);
|
static bool isSprite(int32 size);
|
||||||
/** Determine which sprite is meant. */
|
/** Determine which sprite is meant. */
|
||||||
|
|
|
@ -256,6 +256,7 @@ protected:
|
||||||
|
|
||||||
GameHandler *_gameHandler;
|
GameHandler *_gameHandler;
|
||||||
NotesHandler *_notesHandler;
|
NotesHandler *_notesHandler;
|
||||||
|
TempSpriteHandler *_tempSpriteHandler;
|
||||||
ScreenshotHandler *_screenshotHandler;
|
ScreenshotHandler *_screenshotHandler;
|
||||||
|
|
||||||
SaveHandler *getHandler(const char *fileName) const;
|
SaveHandler *getHandler(const char *fileName) const;
|
||||||
|
|
|
@ -33,8 +33,8 @@ namespace Gob {
|
||||||
SaveLoad_v3::SaveFile SaveLoad_v3::_saveFiles[] = {
|
SaveLoad_v3::SaveFile SaveLoad_v3::_saveFiles[] = {
|
||||||
{ "cat.inf", kSaveModeSave , 0, "savegame"},
|
{ "cat.inf", kSaveModeSave , 0, "savegame"},
|
||||||
{ "ima.inf", kSaveModeSave , 0, "screenshot"},
|
{ "ima.inf", kSaveModeSave , 0, "screenshot"},
|
||||||
|
{ "intro.$$$", kSaveModeSave , 0, "temporary sprite"},
|
||||||
{ "bloc.inf", kSaveModeSave , 0, "notes"},
|
{ "bloc.inf", kSaveModeSave , 0, "notes"},
|
||||||
{ "intro.$$$", kSaveModeIgnore, 0, "temporary sprite"},
|
|
||||||
{ "prot", kSaveModeIgnore, 0, 0},
|
{ "prot", kSaveModeIgnore, 0, 0},
|
||||||
{ "config", 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);
|
_screenshotHandler = new ScreenshotHandler(vm, _gameHandler, sShotType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_tempSpriteHandler = new TempSpriteHandler(vm);
|
||||||
_notesHandler = new NotesHandler(2560, vm, targetName);
|
_notesHandler = new NotesHandler(2560, vm, targetName);
|
||||||
|
|
||||||
_saveFiles[0].handler = _gameHandler;
|
_saveFiles[0].handler = _gameHandler;
|
||||||
_saveFiles[1].handler = _screenshotHandler;
|
_saveFiles[1].handler = _screenshotHandler;
|
||||||
_saveFiles[2].handler = _notesHandler;
|
_saveFiles[2].handler = _tempSpriteHandler;
|
||||||
|
_saveFiles[3].handler = _notesHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveLoad_v3::~SaveLoad_v3() {
|
SaveLoad_v3::~SaveLoad_v3() {
|
||||||
delete _screenshotHandler;
|
delete _screenshotHandler;
|
||||||
delete _gameHandler;
|
delete _gameHandler;
|
||||||
delete _notesHandler;
|
delete _notesHandler;
|
||||||
|
delete _tempSpriteHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
const SaveLoad_v3::SaveFile *SaveLoad_v3::getSaveFile(const char *fileName) const {
|
const SaveLoad_v3::SaveFile *SaveLoad_v3::getSaveFile(const char *fileName) const {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue