NEVERHOOD: Add an option to skip the Hall of Records storyboard scenes

Quoting from the Neverhood wiki: "The Hall of Records is considered to
be one of the longest and most tedious elements of the Neverhood, and
takes approximately nine to ten minutes to walk through".

This option allows the player to just skip past all of these tedious
storyboard scenes
This commit is contained in:
Filippos Karapetis 2013-10-31 08:24:03 +02:00
parent f9bbc2ca37
commit 1a40387d0d
3 changed files with 25 additions and 2 deletions

View File

@ -152,13 +152,20 @@ static const NeverhoodGameDescription gameDescriptions[] = {
} // End of namespace Neverhood
static const ExtraGuiOption neverhoodExtraGuiOption = {
static const ExtraGuiOption neverhoodExtraGuiOption1 = {
_s("Use original save/load screens"),
_s("Use the original save/load screens, instead of the ScummVM ones"),
"originalsaveload",
false
};
static const ExtraGuiOption neverhoodExtraGuiOption2 = {
_s("Skip the Hall of Records storyboard scenes"),
_s("Allows the player to skip past the Hall of Records storyboard scenes"),
"skiphallofrecordsscenes",
false
};
class NeverhoodMetaEngine : public AdvancedMetaEngine {
public:
NeverhoodMetaEngine() : AdvancedMetaEngine(Neverhood::gameDescriptions, sizeof(Neverhood::NeverhoodGameDescription), neverhoodGames) {
@ -212,7 +219,8 @@ bool NeverhoodMetaEngine::createInstance(OSystem *syst, Engine **engine, const A
const ExtraGuiOptions NeverhoodMetaEngine::getExtraGuiOptions(const Common::String &target) const {
ExtraGuiOptions options;
options.push_back(neverhoodExtraGuiOption);
options.push_back(neverhoodExtraGuiOption1);
options.push_back(neverhoodExtraGuiOption2);
return options;
}

View File

@ -20,6 +20,8 @@
*
*/
#include "common/config-manager.h"
#include "neverhood/diskplayerscene.h"
#include "neverhood/gamemodule.h"
#include "neverhood/modules/module1000_sprites.h"
@ -46,6 +48,18 @@ Module2200::~Module2200() {
}
void Module2200::createScene(int sceneNum, int which) {
if (sceneNum == 46 && ConfMan.getBool("skiphallofrecordsscenes")) {
// Skip the whole Hall of Records storyboard scenes,
// and teleport to the last scene
sceneNum = 41;
}
if (sceneNum == 40 && ConfMan.getBool("skiphallofrecordsscenes")) {
// Skip the whole Hall of Records storyboard scenes,
// and teleport back to the first scene
sceneNum = 5;
}
debug(1, "Module2200::createScene(%d, %d)", sceneNum, which);
_sceneNum = sceneNum;
switch (_sceneNum) {

View File

@ -79,6 +79,7 @@ Common::Error NeverhoodEngine::run() {
// Assign default values to the config manager, in case settings are missing
ConfMan.registerDefault("originalsaveload", "false");
ConfMan.registerDefault("skiphallofrecordsscenes", "false");
_staticData = new StaticData();
_staticData->load("neverhood.dat");