MOHAWK: Add an engine specific option to play the Myst fly by movie

It is disabled by default since the original engine never plays it.
When enabled, it is only played when first arriving on Myst.
This commit is contained in:
Bastien Bouclet 2016-02-28 09:28:18 +01:00
parent 21317eec72
commit 833b800a32
4 changed files with 42 additions and 25 deletions

View File

@ -26,6 +26,7 @@
#include "common/savefile.h"
#include "common/system.h"
#include "common/textconsole.h"
#include "common/translation.h"
#include "mohawk/livingbooks.h"
@ -160,9 +161,23 @@ static const char *directoryGlobs[] = {
0
};
static const ADExtraGuiOptionsMap optionsList[] = {
{
GAMEOPTION_PLAY_MYST_FLYBY,
{
_s("Play the Myst fly by movie"),
_s("The Myst fly by movie was not played by the original engine."),
"playmystflyby",
false
}
},
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
class MohawkMetaEngine : public AdvancedMetaEngine {
public:
MohawkMetaEngine() : AdvancedMetaEngine(Mohawk::gameDescriptions, sizeof(Mohawk::MohawkGameDescription), mohawkGames) {
MohawkMetaEngine() : AdvancedMetaEngine(Mohawk::gameDescriptions, sizeof(Mohawk::MohawkGameDescription), mohawkGames, optionsList) {
_singleid = "mohawk";
_maxScanDepth = 2;
_directoryGlobs = directoryGlobs;

View File

@ -22,6 +22,13 @@
namespace Mohawk {
#define GAMEOPTION_PLAY_MYST_FLYBY GUIO_GAMEOPTIONS1
#define GUI_OPTIONS_MYST GUIO1(GUIO_NOASPECT)
#define GUI_OPTIONS_MYST_ME GUIO2(GUIO_NOASPECT, GAMEOPTION_PLAY_MYST_FLYBY)
#define GUI_OPTIONS_MYST_DEMO GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
#define GUI_OPTIONS_MYST_MAKING_OF GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
static const MohawkGameDescription gameDescriptions[] = {
// Myst
// English Windows 3.11
@ -34,7 +41,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -52,7 +59,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_DEMO | ADGF_UNSTABLE,
GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
GUI_OPTIONS_MYST_DEMO
},
GType_MYST,
GF_DEMO,
@ -70,7 +77,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -88,7 +95,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -106,7 +113,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::ES_ESP,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -124,7 +131,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::IT_ITA,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -142,7 +149,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::JA_JPN,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -160,7 +167,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::FR_FRA,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -178,7 +185,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
GUI_OPTIONS_MYST_MAKING_OF
},
GType_MAKINGOF,
0,
@ -196,7 +203,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::JA_JPN,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
GUI_OPTIONS_MYST_MAKING_OF
},
GType_MAKINGOF,
0,
@ -214,7 +221,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST_ME
},
GType_MYST,
GF_ME,
@ -232,7 +239,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST_ME
},
GType_MYST,
GF_ME,
@ -250,7 +257,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::FR_FRA,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST_ME
},
GType_MYST,
GF_ME,
@ -268,7 +275,7 @@ static const MohawkGameDescription gameDescriptions[] = {
Common::PL_POL,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST_ME
},
GType_MYST,
GF_ME,
@ -2698,7 +2705,7 @@ static const MohawkGameDescription fallbackDescs[] = {
Common::UNK_LANG,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST
},
GType_MYST,
0,
@ -2713,7 +2720,7 @@ static const MohawkGameDescription fallbackDescs[] = {
Common::UNK_LANG,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO2(GUIO_NOASPECT, GUIO_NOLAUNCHLOAD)
GUI_OPTIONS_MYST_MAKING_OF
},
GType_MAKINGOF,
0,
@ -2728,7 +2735,7 @@ static const MohawkGameDescription fallbackDescs[] = {
Common::UNK_LANG,
Common::kPlatformWindows,
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
GUI_OPTIONS_MYST_ME
},
GType_MYST,
GF_ME,

View File

@ -66,11 +66,6 @@ MohawkEngine_Myst::MohawkEngine_Myst(OSystem *syst, const MohawkGameDescription
DebugMan.addDebugChannel(kDebugHelp, "Help", "Track Help File (HELP) Parsing");
DebugMan.addDebugChannel(kDebugCache, "Cache", "Track Resource Cache Accesses");
// Engine tweaks
// Disabling this makes engine behavior as per
// original, including bugs, missing bits etc. :)
_tweaksEnabled = true;
_currentCursor = 0;
_mainCursor = kDefaultMystCursor;
_showResourceRects = false;
@ -503,8 +498,9 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS
flyby = "stoneship flyby";
break;
// Myst Flyby Movie not used in Original Masterpiece Edition Engine
// We play it when first arriving on Myst, and if the user has chosen so.
case kMystStack:
if (_tweaksEnabled)
if (ConfMan.getBool("playmystflyby") && card == 4134)
flyby = "myst flyby";
break;
case kMechanicalStack:

View File

@ -192,7 +192,6 @@ public:
MystSoundBlock readSoundBlock(Common::ReadStream *stream) const;
void applySoundBlock(const MystSoundBlock &block);
bool _tweaksEnabled;
bool _needsUpdate;
bool _needsPageDrop;
bool _needsShowMap;