mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 07:14:59 +00:00
CGE2: Add autosave functionality.
This commit is contained in:
parent
61083e5cab
commit
60a77ae6d7
@ -142,6 +142,7 @@ private:
|
||||
void writeSavegameHeader(Common::OutSaveFile *out, SavegameHeader &header);
|
||||
void syncGame(Common::SeekableReadStream *readStream, Common::WriteStream *writeStream);
|
||||
void syncHeader(Common::Serializer &s);
|
||||
void saveGame(int slotNumber, const Common::String &desc);
|
||||
bool loadGame(int slotNumber);
|
||||
void resetGame();
|
||||
void syncSpeechSettings();
|
||||
|
@ -645,8 +645,6 @@ void CGE2Engine::runGame() {
|
||||
_commandHandler->addCommand(kCmdClear, -1, 0, nullptr);
|
||||
_commandHandlerTurbo->addCommand(kCmdClear, -1, 0, nullptr);
|
||||
_mouse->off();
|
||||
|
||||
_vga->sunset();
|
||||
}
|
||||
|
||||
void CGE2Engine::loadUser() {
|
||||
|
@ -129,6 +129,11 @@ SaveStateDescriptor CGE2MetaEngine::querySaveMetaInfos(const char *target, int s
|
||||
desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay);
|
||||
desc.setSaveTime(header.saveHour, header.saveMinutes);
|
||||
|
||||
// Slot 0 is used for the 'automatic save on exit' save in Soltys, thus
|
||||
// we prevent it from being deleted or overwritten by accident.
|
||||
desc.setDeletableFlag(slot != 0);
|
||||
desc.setWriteProtectedFlag(slot == 0);
|
||||
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@ -186,8 +191,15 @@ bool CGE2Engine::canLoadGameStateCurrently() {
|
||||
}
|
||||
|
||||
Common::Error CGE2Engine::saveGameState(int slot, const Common::String &desc) {
|
||||
storeHeroPos();
|
||||
saveGame(slot, desc);
|
||||
sceneUp(_now);
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
void CGE2Engine::saveGame(int slotNumber, const Common::String &desc) {
|
||||
// Set up the serializer
|
||||
Common::String slotName = generateSaveName(slot);
|
||||
Common::String slotName = generateSaveName(slotNumber);
|
||||
Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(slotName);
|
||||
|
||||
// Write out the ScummVM savegame header
|
||||
@ -197,16 +209,12 @@ Common::Error CGE2Engine::saveGameState(int slot, const Common::String &desc) {
|
||||
writeSavegameHeader(saveFile, header);
|
||||
|
||||
// Write out the data of the savegame
|
||||
storeHeroPos();
|
||||
sceneDown();
|
||||
syncGame(nullptr, saveFile);
|
||||
sceneUp(_now);
|
||||
|
||||
// Finish writing out game data
|
||||
saveFile->finalize();
|
||||
delete saveFile;
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -691,7 +691,11 @@ Sprite *CGE2Engine::expandSprite(Sprite *spr) {
|
||||
}
|
||||
|
||||
void CGE2Engine::qGame() {
|
||||
warning("STUB: CGE2Engine::qGame()");
|
||||
// Write out the user's progress
|
||||
saveGame(0, Common::String("Automatic Savegame"));
|
||||
|
||||
busy(false);
|
||||
_vga->sunset();
|
||||
_endGame = true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user