diff options
Diffstat (limited to 'engines/agi/saveload.cpp')
-rw-r--r-- | engines/agi/saveload.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/agi/saveload.cpp b/engines/agi/saveload.cpp index b7e830dc53..88b14dcfe2 100644 --- a/engines/agi/saveload.cpp +++ b/engines/agi/saveload.cpp @@ -132,7 +132,7 @@ int AgiEngine::saveGame(const char *fileName, const char *description) { out->writeSint16BE((int16)_game.hasPrompt); out->writeSint16BE((int16)_game.gameFlags); - out->writeSint16BE((int16)_game.inputEnabled); + out->writeSint16BE(_game.inputEnabled); for (i = 0; i < _HEIGHT; i++) out->writeByte(_game.priTable[i]); @@ -302,7 +302,7 @@ int AgiEngine::loadGame(const char *fileName, bool checkId) { // TODO: played time } - _game.state = in->readByte(); + _game.state = (State)in->readByte(); in->read(loadId, 8); if (strcmp(loadId, _game.id) && checkId) { @@ -361,7 +361,7 @@ int AgiEngine::loadGame(const char *fileName, bool checkId) { _game.echoBuffer[0] = 0; _game.keypress = 0; - _game.inputMode = in->readSint16BE(); + _game.inputMode = (InputMode)in->readSint16BE(); _game.lognum = in->readSint16BE(); _game.playerControl = in->readSint16BE(); @@ -864,6 +864,10 @@ int AgiEngine::saveGameDialog() { sprintf(fileName, "%s", getSavegameFilename(_firstSlot + slot)); debugC(8, kDebugLevelMain | kDebugLevelResources, "file is [%s]", fileName); + // Make sure all graphics was blitted to screen. This fixes bug + // #2960567: "AGI: Ego partly erased in Load/Save thumbnails" + _gfx->doUpdate(); + int result = saveGame(fileName, desc); if (result == errOK) |