diff options
author | Matthew Hoops | 2010-12-07 01:37:43 +0000 |
---|---|---|
committer | Matthew Hoops | 2010-12-07 01:37:43 +0000 |
commit | a789ee11c2116d190bc0f2f2051ad931fb53d478 (patch) | |
tree | 965da206d9f7cec985ca3439e006efc7582a4c27 | |
parent | 65f218dce04d7bf82d08b440e2e14d37a80aa71c (diff) | |
download | scummvm-rg350-a789ee11c2116d190bc0f2f2051ad931fb53d478.tar.gz scummvm-rg350-a789ee11c2116d190bc0f2f2051ad931fb53d478.tar.bz2 scummvm-rg350-a789ee11c2116d190bc0f2f2051ad931fb53d478.zip |
MOHAWK: Implement loading to different ages in Myst
svn-id: r54807
-rw-r--r-- | engines/mohawk/myst.cpp | 6 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/intro.cpp | 16 | ||||
-rw-r--r-- | engines/mohawk/myst_stacks/intro.h | 1 |
3 files changed, 20 insertions, 3 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index f0c63f90f7..ed92f6081e 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -388,6 +388,7 @@ void MohawkEngine_Myst::changeToStack(uint16 stack) { switch (_curStack) { case kChannelwoodStack: + _saveLoad->_v->globals.currentAge = 4; _scriptParser = new MystScriptParser_Channelwood(this); break; case kCreditsStack: @@ -397,6 +398,7 @@ void MohawkEngine_Myst::changeToStack(uint16 stack) { _scriptParser = new MystScriptParser_Demo(this); break; case kDniStack: + _saveLoad->_v->globals.currentAge = 6; _scriptParser = new MystScriptParser_Dni(this); break; case kIntroStack: @@ -406,21 +408,25 @@ void MohawkEngine_Myst::changeToStack(uint16 stack) { _scriptParser = new MystScriptParser_MakingOf(this); break; case kMechanicalStack: + _saveLoad->_v->globals.currentAge = 3; _scriptParser = new MystScriptParser_Mechanical(this); break; case kMystStack: + _saveLoad->_v->globals.currentAge = 2; _scriptParser = new MystScriptParser_Myst(this); break; case kDemoPreviewStack: _scriptParser = new MystScriptParser_Preview(this); break; case kSeleniticStack: + _saveLoad->_v->globals.currentAge = 0; _scriptParser = new MystScriptParser_Selenitic(this); break; case kDemoSlidesStack: _scriptParser = new MystScriptParser_Slides(this); break; case kStoneshipStack: + _saveLoad->_v->globals.currentAge = 1; _scriptParser = new MystScriptParser_Stoneship(this); break; default: diff --git a/engines/mohawk/myst_stacks/intro.cpp b/engines/mohawk/myst_stacks/intro.cpp index a0df5cf2e2..0741c22e1f 100644 --- a/engines/mohawk/myst_stacks/intro.cpp +++ b/engines/mohawk/myst_stacks/intro.cpp @@ -26,6 +26,7 @@ #include "mohawk/myst.h" #include "mohawk/graphics.h" #include "mohawk/myst_areas.h" +#include "mohawk/myst_saveload.h" #include "mohawk/sound.h" #include "mohawk/video.h" #include "mohawk/myst_stacks/intro.h" @@ -63,6 +64,15 @@ void MystScriptParser_Intro::disablePersistentScripts() { void MystScriptParser_Intro::runPersistentScripts() { } +uint16 MystScriptParser_Intro::getVar(uint16 var) { + switch(var) { + case 0: + return _vm->_saveLoad->_v->globals.currentAge; + default: + return MystScriptParser::getVar(var); + } +} + void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, uint16 *argv) { // Hard coded SoundId valid only for Intro Stack. // Other stacks use Opcode 40, which takes SoundId values as arguments. @@ -72,7 +82,7 @@ void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, u debugC(kDebugScript, "\tvar: %d", var); // TODO: Merge with changeStack (Opcode 40) Implementation? - if (_vm->_varStore->getVar(var) == 5 || _vm->_varStore->getVar(var) > 7) { + if (getVar(var) == 5 || getVar(var) > 7) { // TODO: Dead Book i.e. Released Sirrus/Achenar } else { // Play Linking Sound, blocking... @@ -84,7 +94,7 @@ void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, u // Play Flyby Entry Movie on Masterpiece Edition. The Macintosh version is currently hooked // up to the Cinepak versions of the video (the 'c' suffix) until the SVQ1 decoder is completed. if ((_vm->getFeatures() & GF_ME)) { - switch (_stackMap[_vm->_varStore->getVar(var)]) { + switch (_stackMap[getVar(var)]) { case kSeleniticStack: if (_vm->getPlatform() == Common::kPlatformMacintosh) _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_SEc", kMasterpieceOnly)); @@ -123,7 +133,7 @@ void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, u } } - uint16 varValue = _vm->_varStore->getVar(var); + uint16 varValue = getVar(var); _vm->changeToStack(_stackMap[varValue]); _vm->changeToCard(_startCard[varValue], true); diff --git a/engines/mohawk/myst_stacks/intro.h b/engines/mohawk/myst_stacks/intro.h index 78dc3bcaee..fc2ae5e1e7 100644 --- a/engines/mohawk/myst_stacks/intro.h +++ b/engines/mohawk/myst_stacks/intro.h @@ -47,6 +47,7 @@ public: private: void setupOpcodes(); + uint16 getVar(uint16 var); DECLARE_OPCODE(o_useLinkBook); |