HOPKINS: Initialize censorship based on per-engine GUI option instead of optional text flag
This commit is contained in:
parent
ea9fee35e8
commit
6bcc8dfee6
3 changed files with 45 additions and 25 deletions
|
@ -29,6 +29,7 @@
|
||||||
#include "common/memstream.h"
|
#include "common/memstream.h"
|
||||||
#include "engines/advancedDetector.h"
|
#include "engines/advancedDetector.h"
|
||||||
#include "common/system.h"
|
#include "common/system.h"
|
||||||
|
#include "common/translation.h"
|
||||||
#include "graphics/colormasks.h"
|
#include "graphics/colormasks.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
|
|
||||||
|
@ -69,6 +70,30 @@ static const PlainGameDescriptor hopkinsGames[] = {
|
||||||
|
|
||||||
#include "hopkins/detection_tables.h"
|
#include "hopkins/detection_tables.h"
|
||||||
|
|
||||||
|
static const ADExtraGuiOptionsMap optionsList[] = {
|
||||||
|
{
|
||||||
|
GAMEOPTION_GORE_DEFAULT_OFF,
|
||||||
|
{
|
||||||
|
_s("Gore Mode"),
|
||||||
|
_s("Enable Gore Mode when available"),
|
||||||
|
"enable_gore",
|
||||||
|
false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
GAMEOPTION_GORE_DEFAULT_ON,
|
||||||
|
{
|
||||||
|
_s("Gore Mode"),
|
||||||
|
_s("Enable Gore Mode when available"),
|
||||||
|
"enable_gore",
|
||||||
|
true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
AD_EXTRA_GUI_OPTIONS_TERMINATOR
|
||||||
|
};
|
||||||
|
|
||||||
const static char *directoryGlobs[] = {
|
const static char *directoryGlobs[] = {
|
||||||
"voice",
|
"voice",
|
||||||
"link",
|
"link",
|
||||||
|
@ -77,7 +102,7 @@ const static char *directoryGlobs[] = {
|
||||||
|
|
||||||
class HopkinsMetaEngine : public AdvancedMetaEngine {
|
class HopkinsMetaEngine : public AdvancedMetaEngine {
|
||||||
public:
|
public:
|
||||||
HopkinsMetaEngine() : AdvancedMetaEngine(Hopkins::gameDescriptions, sizeof(Hopkins::HopkinsGameDescription), hopkinsGames) {
|
HopkinsMetaEngine() : AdvancedMetaEngine(Hopkins::gameDescriptions, sizeof(Hopkins::HopkinsGameDescription), hopkinsGames, optionsList) {
|
||||||
_maxScanDepth = 3;
|
_maxScanDepth = 3;
|
||||||
_directoryGlobs = directoryGlobs;
|
_directoryGlobs = directoryGlobs;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
|
|
||||||
namespace Hopkins {
|
namespace Hopkins {
|
||||||
|
|
||||||
|
#define GAMEOPTION_GORE_DEFAULT_ON GUIO_GAMEOPTIONS1
|
||||||
|
#define GAMEOPTION_GORE_DEFAULT_OFF GUIO_GAMEOPTIONS2
|
||||||
|
|
||||||
static const HopkinsGameDescription gameDescriptions[] = {
|
static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
{
|
{
|
||||||
// Hopkins FBI Linux Demo UK 1.00 and 1.02
|
// Hopkins FBI Linux Demo UK 1.00 and 1.02
|
||||||
|
@ -35,7 +38,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformLinux,
|
Common::kPlatformLinux,
|
||||||
ADGF_DEMO,
|
ADGF_DEMO,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -51,7 +54,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformOS2,
|
Common::kPlatformOS2,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -66,7 +69,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformBeOS,
|
Common::kPlatformBeOS,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -81,7 +84,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::ES_ESP,
|
Common::ES_ESP,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -96,7 +99,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_OFF)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -111,7 +114,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::RU_RUS,
|
Common::RU_RUS,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -126,7 +129,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::FR_FRA,
|
Common::FR_FRA,
|
||||||
Common::kPlatformLinux,
|
Common::kPlatformLinux,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -141,7 +144,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformLinux,
|
Common::kPlatformLinux,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -156,7 +159,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::FR_FRA,
|
Common::FR_FRA,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -172,7 +175,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::PL_POL,
|
Common::PL_POL,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_OFF)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -189,7 +192,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_DEMO,
|
ADGF_DEMO,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_ON)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -204,7 +207,7 @@ static const HopkinsGameDescription gameDescriptions[] = {
|
||||||
Common::PL_POL,
|
Common::PL_POL,
|
||||||
Common::kPlatformWindows,
|
Common::kPlatformWindows,
|
||||||
ADGF_DEMO,
|
ADGF_DEMO,
|
||||||
GUIO1(GUIO_NONE)
|
GUIO1(GAMEOPTION_GORE_DEFAULT_OFF)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ AD_TABLE_END_MARKER }
|
{ AD_TABLE_END_MARKER }
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "hopkins/hopkins.h"
|
#include "hopkins/hopkins.h"
|
||||||
#include "hopkins/globals.h"
|
#include "hopkins/globals.h"
|
||||||
|
|
||||||
|
#include "common/config-manager.h"
|
||||||
#include "common/system.h"
|
#include "common/system.h"
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "common/file.h"
|
#include "common/file.h"
|
||||||
|
@ -68,20 +69,11 @@ int FileManager::readStream(Common::ReadStream &stream, void *buf, size_t nbytes
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize censorship based on blood.dat file
|
* The original censorship was based on blood.dat file.
|
||||||
|
* It's now using the config manager and a per-engine GUI option.
|
||||||
*/
|
*/
|
||||||
void FileManager::initCensorship() {
|
void FileManager::initCensorship() {
|
||||||
_vm->_globals->_censorshipFl = false;
|
_vm->_globals->_censorshipFl = ConfMan.getBool("enable_gore");
|
||||||
|
|
||||||
// If file doesn't exist, fallback to uncensored
|
|
||||||
if (fileExists("BLOOD.DAT")) {
|
|
||||||
char *data = (char *)loadFile("BLOOD.DAT");
|
|
||||||
|
|
||||||
if ((data[6] == 'u' && data[7] == 'k') || (data[6] == 'U' && data[7] == 'K'))
|
|
||||||
_vm->_globals->_censorshipFl = true;
|
|
||||||
|
|
||||||
_vm->_globals->freeMemory((byte *)data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue