From 2f86db50ef835031aa218b906d96761d4e0f8597 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 7 Dec 2010 18:21:05 +0000 Subject: MOHAWK: Fix loading from the launcher in Myst svn-id: r54813 --- engines/mohawk/myst.cpp | 50 +++++++++++++++++++--------------------- engines/mohawk/myst_saveload.cpp | 9 +++++--- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index e9661f54df..6026eb3462 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -261,34 +261,34 @@ Common::Error MohawkEngine_Myst::run() { _rnd = new Common::RandomSource(); _mouseClicked = false; - // Start us on the first stack. - if (getGameType() == GType_MAKINGOF) - changeToStack(kMakingOfStack); - else if (getFeatures() & GF_DEMO) - changeToStack(kDemoStack); - else - changeToStack(kIntroStack); - - if (getFeatures() & GF_DEMO) - changeToCard(2000, true); - else - changeToCard(1, true); + // Load Help System (Masterpiece Edition Only) + if (getFeatures() & GF_ME) { + MohawkArchive *mhk = new MohawkArchive(); + if (!mhk->open("help.dat")) + error("Could not load help.dat"); + _mhk.push_back(mhk); + } // Load game from launcher/command line if requested - if (ConfMan.hasKey("save_slot") && !(getFeatures() & GF_DEMO)) { + if (ConfMan.hasKey("save_slot") && canLoadGameStateCurrently()) { uint32 gameToLoad = ConfMan.getInt("save_slot"); Common::StringArray savedGamesList = _saveLoad->generateSaveGameList(); if (gameToLoad > savedGamesList.size()) error ("Could not find saved game"); _saveLoad->loadGame(savedGamesList[gameToLoad]); - } - - // Load Help System (Masterpiece Edition Only) - if (getFeatures() & GF_ME) { - MohawkArchive *mhk = new MohawkArchive(); - if (!mhk->open("help.dat")) - error("Could not load help.dat"); - _mhk.push_back(mhk); + } else { + // Start us on the first stack. + if (getGameType() == GType_MAKINGOF) + changeToStack(kMakingOfStack); + else if (getFeatures() & GF_DEMO) + changeToStack(kDemoStack); + else + changeToStack(kIntroStack); + + if (getFeatures() & GF_DEMO) + changeToCard(2000, true); + else + changeToCard(1, true); } // Test Load Function... @@ -1062,12 +1062,10 @@ void MohawkEngine_Myst::runLoadDialog() { } Common::Error MohawkEngine_Myst::loadGameState(int slot) { - if (_saveLoad->loadGame(_saveLoad->generateSaveGameList()[slot])) { - changeToStack(kIntroStack); - changeToCard(5, true); + if (_saveLoad->loadGame(_saveLoad->generateSaveGameList()[slot])) return Common::kNoError; - } else - return Common::kUnknownError; + + return Common::kUnknownError; } Common::Error MohawkEngine_Myst::saveGameState(int slot, const char *desc) { diff --git a/engines/mohawk/myst_saveload.cpp b/engines/mohawk/myst_saveload.cpp index bc75fee2a4..04b2be93bc 100644 --- a/engines/mohawk/myst_saveload.cpp +++ b/engines/mohawk/myst_saveload.cpp @@ -65,9 +65,6 @@ Common::StringArray MystSaveLoad::generateSaveGameList() { } bool MystSaveLoad::loadGame(const Common::String &filename) { - if (_vm->getFeatures() & GF_DEMO) // Don't load games in the demo - return false; - Common::InSaveFile *loadFile = _saveFileMan->openForLoading(filename); if (!loadFile) return false; @@ -90,6 +87,9 @@ bool MystSaveLoad::loadGame(const Common::String &filename) { syncGameState(s); delete loadFile; + // Switch us back to the intro stack + _vm->changeToStack(kIntroStack); + // Set our default cursor switch (_v->globals.heldPage) { case 2: @@ -105,6 +105,9 @@ bool MystSaveLoad::loadGame(const Common::String &filename) { _vm->setMainCursor(kDefaultMystCursor); } + // Set us to the linking book + _vm->changeToCard(5, true); + return true; } -- cgit v1.2.3