mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-10 12:55:24 +00:00
SUPERNOVA: Fix several issues with savegames
This commit is contained in:
parent
34658bc7d4
commit
87ab33a8aa
@ -2243,6 +2243,7 @@ bool ArsanoMeetup2::interact(Action verb, Object &obj1, Object &obj2) {
|
||||
_gm->loadTime();
|
||||
_gm->_rooms[CAVE]->getObject(1)->_exitRoom = MEETUP3;
|
||||
_gm->_state._dream = true;
|
||||
_vm->paletteFadeIn();
|
||||
}
|
||||
} else {
|
||||
_gm->changeRoom(MEETUP2);
|
||||
|
@ -127,6 +127,10 @@ bool GameManager::deserialize(Common::ReadStream *in, int version) {
|
||||
}
|
||||
changeRoom(curRoomId);
|
||||
|
||||
// Some additional variables
|
||||
_guiEnabled = true;
|
||||
_animationEnabled = true;
|
||||
|
||||
return !in->err();
|
||||
}
|
||||
|
||||
@ -989,6 +993,9 @@ void GameManager::reply(const char *text, int aus1, int aus2) {
|
||||
}
|
||||
|
||||
int GameManager::dialog(int num, byte rowLength[6], StringID text[6], int number) {
|
||||
_vm->_allowLoadGame = false;
|
||||
_guiEnabled = false;
|
||||
|
||||
bool remove[6];
|
||||
for (int i = 0; i < 5; ++i)
|
||||
remove[i] = _currentRoom->sentenceRemoved(i, number);
|
||||
@ -1015,18 +1022,19 @@ int GameManager::dialog(int num, byte rowLength[6], StringID text[6], int number
|
||||
rq += rowLength[i];
|
||||
}
|
||||
|
||||
_guiEnabled = false;
|
||||
_currentSentence = -1;
|
||||
do {
|
||||
mouseInput3();
|
||||
} while (_currentSentence == -1 && !_vm->shouldQuit());
|
||||
_guiEnabled = true;
|
||||
|
||||
_vm->renderBox(0, 138, 320, 62, kColorBlack);
|
||||
|
||||
if (number && _texts[_rowsStart[_currentSentence]] != kStringDialogSeparator)
|
||||
_currentRoom->removeSentence(_currentSentence, number);
|
||||
|
||||
_guiEnabled = true;
|
||||
_vm->_allowLoadGame = true;
|
||||
|
||||
return _currentSentence;
|
||||
}
|
||||
|
||||
|
@ -982,7 +982,8 @@ Common::Error SupernovaEngine::loadGameState(int slot) {
|
||||
}
|
||||
|
||||
bool SupernovaEngine::canSaveGameStateCurrently() {
|
||||
return _allowSaveGame;
|
||||
// Do not allow saving when either _allowSaveGame, _animationEnabled or _guiEnabled is false
|
||||
return _allowSaveGame && _gm->_animationEnabled && _gm->_guiEnabled;
|
||||
}
|
||||
|
||||
Common::Error SupernovaEngine::saveGameState(int slot, const Common::String &desc) {
|
||||
@ -1024,6 +1025,13 @@ bool SupernovaEngine::loadGame(int slot) {
|
||||
Graphics::skipThumbnail(*savefile);
|
||||
_gm->deserialize(savefile, saveVersion);
|
||||
|
||||
if (saveVersion >= 5) {
|
||||
_menuBrightness = savefile->readByte();
|
||||
_brightness = savefile->readByte();
|
||||
} else {
|
||||
_menuBrightness = _brightness = 255;
|
||||
}
|
||||
|
||||
delete savefile;
|
||||
|
||||
return true;
|
||||
@ -1054,6 +1062,9 @@ bool SupernovaEngine::saveGame(int slot, const Common::String &description) {
|
||||
Graphics::saveThumbnail(*savefile);
|
||||
_gm->serialize(savefile);
|
||||
|
||||
savefile->writeByte(_menuBrightness);
|
||||
savefile->writeByte(_brightness);
|
||||
|
||||
savefile->finalize();
|
||||
delete savefile;
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
namespace Supernova {
|
||||
|
||||
#define SAVEGAME_HEADER MKTAG('M','S','N','1')
|
||||
#define SAVEGAME_VERSION 4
|
||||
#define SAVEGAME_VERSION 5
|
||||
|
||||
#define SUPERNOVA_DAT "supernova.dat"
|
||||
#define SUPERNOVA_DAT_VERSION 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user