aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/game
diff options
context:
space:
mode:
authorLittleboy2012-08-27 23:29:09 -0400
committerLittleboy2012-08-27 23:30:23 -0400
commit6ab8db638e4a1d547ee67db067b5d6c3d6c940a4 (patch)
tree981fed8e6621957dde6ba8f5ec90c67ca36d50f1 /engines/lastexpress/game
parentee8581b778b83bc01af0f26bc8b3680ebc266700 (diff)
downloadscummvm-rg350-6ab8db638e4a1d547ee67db067b5d6c3d6c940a4.tar.gz
scummvm-rg350-6ab8db638e4a1d547ee67db067b5d6c3d6c940a4.tar.bz2
scummvm-rg350-6ab8db638e4a1d547ee67db067b5d6c3d6c940a4.zip
LASTEXPRESS: Implement more savegame loading
- Rename existing function to load the last saved game - Remove loadgame debugger command
Diffstat (limited to 'engines/lastexpress/game')
-rw-r--r--engines/lastexpress/game/savegame.cpp30
-rw-r--r--engines/lastexpress/game/savegame.h4
2 files changed, 28 insertions, 6 deletions
diff --git a/engines/lastexpress/game/savegame.cpp b/engines/lastexpress/game/savegame.cpp
index 7efce0007b..021dc40bb9 100644
--- a/engines/lastexpress/game/savegame.cpp
+++ b/engines/lastexpress/game/savegame.cpp
@@ -482,10 +482,10 @@ void SaveLoad::clear(bool clearStream) {
// Save & Load
//////////////////////////////////////////////////////////////////////////
-// Load game
-void SaveLoad::loadGame(GameId id) {
+// Load last saved game
+void SaveLoad::loadLastGame() {
if (!_savegame)
- error("[SaveLoad::loadGame] No savegame stream present");
+ error("[SaveLoad::loadLastGame] No savegame stream present");
// Rewind current savegame
_savegame->seek(0);
@@ -522,7 +522,29 @@ void SaveLoad::loadGame(GameId id) {
}
// Load a specific game entry
-void SaveLoad::loadGame(GameId id, uint32 index) {
+void SaveLoad::loadGame(uint32 index) {
+ if (!_savegame)
+ error("[SaveLoad::loadLastGame] No savegame stream present");
+
+ // Rewind current savegame
+ _savegame->seek(0);
+
+ // Write main header (with selected index)
+ SavegameMainHeader header;
+ header.count = index;
+ header.brightness = getState()->brightness;
+ header.volume = getState()->volume;
+
+ Common::Serializer ser(NULL, _savegame);
+ header.saveLoadWithSerializer(ser);
+
+ // TODO
+ // Go to the entry
+ // Load the entry
+ // Get offset (main and entry)
+ // Write main header again with correct entry offset
+ // Setup game and start
+
error("[SaveLoad::loadGame] Not implemented! (only loading the last entry is working for now)");
}
diff --git a/engines/lastexpress/game/savegame.h b/engines/lastexpress/game/savegame.h
index 8656b2ee86..361957227e 100644
--- a/engines/lastexpress/game/savegame.h
+++ b/engines/lastexpress/game/savegame.h
@@ -153,8 +153,8 @@ public:
uint32 init(GameId id, bool resetHeaders);
// Save & Load
- void loadGame(GameId id);
- void loadGame(GameId id, uint32 index);
+ void loadLastGame();
+ void loadGame(uint32 index);
void saveGame(SavegameType type, EntityIndex entity, uint32 value);
void loadVolumeBrightness();