aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2015-02-19 19:03:45 +0200
committerEugene Sandulenko2015-12-15 00:05:02 +0100
commit5bc37fd878e89dbcf3312dedcb0b4cfcd89cda7f (patch)
treeda2a342b5a0909f3766221ab050aa2a6764486ca
parent95461c91616eda80b33cfec3597f8c3243748a89 (diff)
downloadscummvm-rg350-5bc37fd878e89dbcf3312dedcb0b4cfcd89cda7f.tar.gz
scummvm-rg350-5bc37fd878e89dbcf3312dedcb0b4cfcd89cda7f.tar.bz2
scummvm-rg350-5bc37fd878e89dbcf3312dedcb0b4cfcd89cda7f.zip
LAB: Fix loading of saved games
-rw-r--r--engines/lab/savegame.cpp6
-rw-r--r--engines/lab/special.cpp24
2 files changed, 9 insertions, 21 deletions
diff --git a/engines/lab/savegame.cpp b/engines/lab/savegame.cpp
index 5cf0674852..4d40540ce4 100644
--- a/engines/lab/savegame.cpp
+++ b/engines/lab/savegame.cpp
@@ -219,7 +219,7 @@ bool loadGame(uint16 *RoomNum, uint16 *Direction, uint16 *Quarters, int slot) {
CurTile[i][j] = file->readUint16LE();
// Breadcrumbs
- for (i = 0; i < sizeof(BreadCrumbs); i++) {
+ for (i = 0; i < 128; i++) {
BreadCrumbs[i].RoomNum = file->readUint16LE();
BreadCrumbs[i].Direction = file->readUint16LE();
}
@@ -227,10 +227,10 @@ bool loadGame(uint16 *RoomNum, uint16 *Direction, uint16 *Quarters, int slot) {
DroppingCrumbs = (BreadCrumbs[0].RoomNum != 0);
FollowingCrumbs = false;
- for (i = 0; i < sizeof(BreadCrumbs); i++) {
+ for (i = 0; i < 128; i++) {
if (BreadCrumbs[i].RoomNum == 0)
break;
- NumCrumbs++;
+ NumCrumbs = i;
}
delete file;
diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp
index 3909d974b0..ae9eb02a37 100644
--- a/engines/lab/special.cpp
+++ b/engines/lab/special.cpp
@@ -972,28 +972,16 @@ bool saveRestoreGame(void) {
// Restore
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int slot = dialog->runModalWithCurrentTarget();
- if (slot >= 0)
+ if (slot >= 0) {
isOK = loadGame(&RoomNum, &Direction, &(Inventory[QUARTERNUM].Many), slot);
+ if (isOK)
+ g_music->resetMusic();
+ }
}
- if (!isOK)
- return false;
-
- g_music->resetMusic();
-
- eatMessages();
-
- mouseHide();
- memset(diffcmap, 0, 3 * 256);
- VGASetPal(diffcmap, 256);
- setAPen(0);
- rectFill(0, 0, VGAScreenWidth - 1, VGAScreenHeight - 1);
- blackScreen();
WSDL_UpdateScreen();
-
- freeAllStolenMem();
-
- return true;
+
+ return isOK;
}
/*---------------------------------------------------------------------------*/