SCUMM: Add "Enable copy protection" engine checkbox

The exposes the --copy-protection command line option to the engine
settings dialog. This affects the following games:

* Maniac Mansion v1 (DOS) and v2, but not NES or the demos
* Zak McKracken v1 and v2
* Loom EGA (DOS)
* Monkey Island 1, VGA floppy and Macintosh
* Monkey Island 2, but not demos, FM Towns, or the Ultimate Talkie
* Fate of Atlantis, Amiga and other floppy versions

I don't have all of these versions myself, so I can't verify that it
works. And in some cases, the checkbox will appear for games that don't
have the copy protection in the scripts, e.g. the Mac CD Game Pack
version of Fate of Atlantis. (Anyone want to re-insert that script like
we do for that release of Monkey Island 2?)
This commit is contained in:
Torbjörn Andersson 2024-05-26 18:54:12 +02:00 committed by Eugene Sandulenko
parent 009c090277
commit ab991fa2f8
5 changed files with 54 additions and 13 deletions

View File

@ -35,6 +35,7 @@ namespace Scumm {
#define GUIO_ORIGINALGUI GUIO_GAMEOPTIONS4
#define GUIO_LOWLATENCYAUDIO GUIO_GAMEOPTIONS5
#define GUIO_NETWORK GUIO_GAMEOPTIONS6
#define GUIO_COPY_PROTECTION GUIO_GAMEOPTIONS7
/* Game enhancements */

View File

@ -156,14 +156,14 @@ static const GameSettings gameVariantsTable[] = {
{"maniac", "Apple II", 0, GID_MANIAC, 0, 0, MDT_APPLEIIGS, 0, Common::kPlatformApple2GS, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ORIGINALGUI)},
{"maniac", "C64", 0, GID_MANIAC, 0, 0, MDT_C64, 0, Common::kPlatformC64, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ORIGINALGUI) },
{"maniac", "C64 Demo", 0, GID_MANIAC, 0, 0, MDT_C64, GF_DEMO, Common::kPlatformC64, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ORIGINALGUI) },
{"maniac", "V1", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformDOS, GUIO9(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGABW, GUIO_RENDERCGACOMP, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"maniac", "V1", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformDOS, GUIO10(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGABW, GUIO_RENDERCGACOMP, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"maniac", "V1 Demo", "v1", GID_MANIAC, 1, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformDOS, GUIO8(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGABW, GUIO_RENDERCGACOMP, GUIO_RENDERCGA, GUIO_ORIGINALGUI)},
{"maniac", "NES", 0, GID_MANIAC, 1, 0, MDT_NONE, 0, Common::kPlatformNES, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_NOASPECT, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"maniac", "V2", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO8(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_RENDERAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"maniac", "V2", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO9(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_RENDERAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"maniac", "V2 Demo", "v2", GID_MANIAC, 2, 0, MDT_PCSPK | MDT_PCJR, GF_DEMO, Common::kPlatformDOS, GUIO7(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_RENDERAMIGA, GUIO_ORIGINALGUI)},
{"zak", "V1", "v1", GID_ZAK, 1, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO8(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGABW, GUIO_RENDERCGACOMP, GUIO_RENDERCGA, GUIO_ORIGINALGUI)},
{"zak", "V2", "v2", GID_ZAK, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO7(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_RENDERAMIGA, GUIO_ORIGINALGUI)},
{"zak", "V1", "v1", GID_ZAK, 1, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO9(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGABW, GUIO_RENDERCGACOMP, GUIO_RENDERCGA, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"zak", "V2", "v2", GID_ZAK, 2, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO8(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_RENDERAMIGA, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"zak", "FM-TOWNS", 0, GID_ZAK, 3, 0, MDT_TOWNS, GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"zakloom", "FM-TOWNS", 0, GID_ZAK, 3, 0, MDT_TOWNS, GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ORIGINALGUI)},
{"indyloom", "FM-TOWNS", 0, GID_ZAK, 3, 0, MDT_TOWNS, GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ORIGINALGUI)},
@ -176,7 +176,7 @@ static const GameSettings gameVariantsTable[] = {
{"indy3", "Steam", "steam", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, UNK, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"indy3", "FM-TOWNS", 0, GID_INDY3, 3, 0, MDT_TOWNS, GF_OLD256 | GF_FEW_LOCALS | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"loom", "EGA", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"loom", "EGA", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"loom", "Mac", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO6(GUIO_NOSPEECH, GUIO_RENDERMACINTOSHBW, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_NOASPECT)},
{"loom", "No AdLib", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"loom", "PC-Engine", 0, GID_LOOM, 3, 0, MDT_NONE, GF_AUDIOTRACKS | GF_OLD256 | GF_16BIT_COLOR, Common::kPlatformPCEngine, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS)},
@ -187,25 +187,25 @@ static const GameSettings gameVariantsTable[] = {
{"pass", 0, 0, GID_PASS, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR, Common::kPlatformDOS, GUIO4(GUIO_NOSPEECH, GUIO_RENDERCGA, GUIO_NOMIDI, GUIO_ORIGINALGUI)},
{"monkey", "VGA", "vga", GID_MONKEY_VGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "VGA", "vga", GID_MONKEY_VGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"monkey", "VGA Demo", "vga", GID_MONKEY_VGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_DEMO, UNK, GUIO3(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ORIGINALGUI)},
{"monkey", "EGA", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_16COLOR, Common::kPlatformDOS, GUIO6(GUIO_NOSPEECH, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "No AdLib", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR, GF_16COLOR, Common::kPlatformAtariST, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "Demo", "ega", GID_MONKEY_EGA, 4, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_16COLOR | GF_DEMO, Common::kPlatformDOS, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDERHERCGREEN, GUIO_RENDERHERCAMBER, GUIO_RENDERCGA, GUIO_ORIGINALGUI)},
{"monkey", "CD", 0, GID_MONKEY, 5, 0, MDT_ADLIB, GF_AUDIOTRACKS, UNK, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "Mac", 0, GID_MONKEY, 5, 0, MDT_MACINTOSH, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "Mac", 0, GID_MONKEY, 5, 0, MDT_MACINTOSH, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"monkey", "FM-TOWNS", 0, GID_MONKEY, 5, 0, MDT_TOWNS, GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO6(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "SEGA", 0, GID_MONKEY, 5, 0, MDT_NONE, GF_AUDIOTRACKS, Common::kPlatformSegaCD, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey", "SE Talkie", 0, GID_MONKEY, 5, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_AUDIOTRACKS | GF_ULTIMATE_TALKIE, UNK, GUIO2(GUIO_RENDEREGA, GUIO_ORIGINALGUI)},
{"monkey2", "", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey2", "", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"monkey2", "Demo", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_DEMO, UNK, GUIO2(GUIO_NOSPEECH, GUIO_ENHANCEMENTS)},
{"monkey2", "Amiga", 0, GID_MONKEY2, 5, 0, MDT_AMIGA, 0, Common::kPlatformAmiga, GUIO4(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey2", "Amiga", 0, GID_MONKEY2, 5, 0, MDT_AMIGA, 0, Common::kPlatformAmiga, GUIO5(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"monkey2", "FM-TOWNS", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_TOWNS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, Common::kPlatformFMTowns, GUIO7(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"monkey2", "SE Talkie",0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, GF_ULTIMATE_TALKIE, UNK, GUIO2(GUIO_RENDEREGA, GUIO_ORIGINALGUI)},
{"atlantis", "", 0, GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO3(GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"atlantis", "Steam", "steam", GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO3(GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"atlantis", "Floppy", 0, GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO4(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"atlantis", "Amiga", 0, GID_INDY4, 5, 0, MDT_AMIGA, 0, Common::kPlatformAmiga, GUIO4(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"atlantis", "Floppy", 0, GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO5(GUIO_NOSPEECH, GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"atlantis", "Amiga", 0, GID_INDY4, 5, 0, MDT_AMIGA, 0, Common::kPlatformAmiga, GUIO5(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI, GUIO_COPY_PROTECTION)},
{"atlantis", "FM-TOWNS", 0, GID_INDY4, 5, 0, MDT_TOWNS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, Common::kPlatformFMTowns, GUIO6(GUIO_MIDITOWNS, GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_TRIM_FMTOWNS_TO_200_PIXELS, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"tentacle", "", 0, GID_TENTACLE, 6, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_GM, GF_USE_KEY, UNK, GUIO3(GUIO_RENDEREGA, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},

View File

@ -1183,6 +1183,13 @@ GUI::CheckboxWidget *ScummOptionsContainerWidget::createOriginalGUICheckbox(GuiO
);
}
GUI::CheckboxWidget *ScummOptionsContainerWidget::createCopyProtectionCheckbox(GuiObject *boss, const Common::String &name) {
return new GUI::CheckboxWidget(boss, name,
_("Enable copy protection"),
_("Enable any copy protection that would otherwise be bypassed by default.")
);
}
void ScummOptionsContainerWidget::updateAdjustmentSlider(GUI::SliderWidget *slider, GUI::StaticTextWidget *value) {
int adjustment = slider->getValue();
const char *sign = "";
@ -1314,6 +1321,7 @@ LoomEgaGameOptionsWidget::LoomEgaGameOptionsWidget(GuiObject *boss, const Common
createEnhancementsWidget(widgetsBoss(), "LoomEgaGameOptionsDialog");
_enableOriginalGUICheckbox = createOriginalGUICheckbox(widgetsBoss(), "LoomEgaGameOptionsDialog.EnableOriginalGUI");
_enableCopyProtectionCheckbox = createCopyProtectionCheckbox(widgetsBoss(), "LoomEgaGameOptionsDialog.EnableCopyProtection");
}
void LoomEgaGameOptionsWidget::load() {
@ -1328,6 +1336,7 @@ void LoomEgaGameOptionsWidget::load() {
updateOvertureTicksValue();
_enableOriginalGUICheckbox->setState(ConfMan.getBool("original_gui", _domain));
_enableCopyProtectionCheckbox->setState(ConfMan.getBool("copy_protection", _domain));
}
bool LoomEgaGameOptionsWidget::save() {
@ -1335,6 +1344,7 @@ bool LoomEgaGameOptionsWidget::save() {
ConfMan.setInt("loom_overture_ticks", _overtureTicksSlider->getValue(), _domain);
ConfMan.setBool("original_gui", _enableOriginalGUICheckbox->getState(), _domain);
ConfMan.setBool("copy_protection", _enableCopyProtectionCheckbox->getState(), _domain);
return true;
}
@ -1344,7 +1354,8 @@ void LoomEgaGameOptionsWidget::defineLayout(GUI::ThemeEval &layouts, const Commo
.addPadding(0, 0, 0, 0)
.addLayout(GUI::ThemeLayout::kLayoutVertical, 4)
.addPadding(0, 0, 10, 0)
.addWidget("EnableOriginalGUI", "Checkbox");
.addWidget("EnableOriginalGUI", "Checkbox")
.addWidget("EnableCopyProtection", "Checkbox");
addEnhancementsLayout(layouts)
.closeLayout()
.addLayout(GUI::ThemeLayout::kLayoutHorizontal, 12)
@ -1376,7 +1387,7 @@ void LoomEgaGameOptionsWidget::updateOvertureTicksValue() {
// Mac Loom/MI1 options
LoomMonkeyMacGameOptionsWidget::LoomMonkeyMacGameOptionsWidget(GuiObject *boss, const Common::String &name, const Common::String &domain, int gameId) :
ScummOptionsContainerWidget(boss, name, "LoomMonkeyMacGameOptionsWidget", domain), _sndQualitySlider(nullptr), _sndQualityValue(nullptr), _enableOriginalGUICheckbox(nullptr), _quality(0) {
ScummOptionsContainerWidget(boss, name, "LoomMonkeyMacGameOptionsWidget", domain), _sndQualitySlider(nullptr), _sndQualityValue(nullptr), _enableOriginalGUICheckbox(nullptr), _enableCopyProtectionCheckbox(nullptr), _quality(0) {
GUI::StaticTextWidget *text = new GUI::StaticTextWidget(widgetsBoss(), "LoomMonkeyMacGameOptionsWidget.SndQualityLabel", _("Music Quality:"));
text->setAlign(Graphics::TextAlign::kTextAlignEnd);
@ -1391,6 +1402,9 @@ LoomMonkeyMacGameOptionsWidget::LoomMonkeyMacGameOptionsWidget(GuiObject *boss,
updateQualitySlider();
createEnhancementsWidget(widgetsBoss(), "LoomMonkeyMacGameOptionsWidget");
_enableOriginalGUICheckbox = createOriginalGUICheckbox(widgetsBoss(), "LoomMonkeyMacGameOptionsWidget.EnableOriginalGUI");
if (gameId == GID_MONKEY)
_enableCopyProtectionCheckbox = createCopyProtectionCheckbox(widgetsBoss(), "LoomMonkeyMacGameOptionsWidget.EnableCopyProtection");
}
void LoomMonkeyMacGameOptionsWidget::load() {
@ -1411,12 +1425,19 @@ void LoomMonkeyMacGameOptionsWidget::load() {
_sndQualitySlider->setValue(_quality);
updateQualitySlider();
_enableOriginalGUICheckbox->setState(ConfMan.getBool("original_gui", _domain));
if (_enableCopyProtectionCheckbox)
_enableCopyProtectionCheckbox->setState(ConfMan.getBool("copy_protection", _domain));
}
bool LoomMonkeyMacGameOptionsWidget::save() {
bool res = ScummOptionsContainerWidget::save();
ConfMan.setInt("mac_snd_quality", _quality, _domain);
ConfMan.setBool("original_gui", _enableOriginalGUICheckbox->getState(), _domain);
if (_enableCopyProtectionCheckbox)
ConfMan.setBool("copy_protection", _enableCopyProtectionCheckbox->getState(), _domain);
return res;
}
@ -1427,6 +1448,10 @@ void LoomMonkeyMacGameOptionsWidget::defineLayout(GUI::ThemeEval &layouts, const
.addLayout(GUI::ThemeLayout::kLayoutVertical, 4)
.addPadding(0, 0, 10, 0)
.addWidget("EnableOriginalGUI", "Checkbox");
if (_enableCopyProtectionCheckbox)
layouts.addWidget("EnableCopyProtection", "Checkbox");
addEnhancementsLayout(layouts)
.closeLayout()
.addLayout(GUI::ThemeLayout::kLayoutHorizontal, 12)

View File

@ -239,6 +239,7 @@ protected:
void createEnhancementsWidget(GuiObject *boss, const Common::String &name);
GUI::ThemeEval &addEnhancementsLayout(GUI::ThemeEval &layouts) const;
GUI::CheckboxWidget *createOriginalGUICheckbox(GuiObject *boss, const Common::String &name);
GUI::CheckboxWidget *createCopyProtectionCheckbox(GuiObject *boss, const Common::String &name);
void updateAdjustmentSlider(GUI::SliderWidget *slider, GUI::StaticTextWidget *value);
Common::Array<GUI::CheckboxWidget *> _enhancementsCheckboxes;
@ -291,6 +292,7 @@ private:
void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) override;
GUI::CheckboxWidget *_enableOriginalGUICheckbox;
GUI::CheckboxWidget *_enableCopyProtectionCheckbox;
GUI::SliderWidget *_overtureTicksSlider;
GUI::StaticTextWidget *_overtureTicksValue;
@ -317,6 +319,7 @@ private:
void updateQualitySlider();
GUI::CheckboxWidget *_enableOriginalGUICheckbox;
GUI::CheckboxWidget *_enableCopyProtectionCheckbox;
GUI::SliderWidget *_sndQualitySlider;
GUI::StaticTextWidget *_sndQualityValue;
int _quality;

View File

@ -741,6 +741,15 @@ static const ExtraGuiOption enableCOMISong = {
0
};
static const ExtraGuiOption enableCopyProtection = {
_s("Enable copy protection"),
_s("Enable any copy protection that would otherwise be bypassed by default."),
"copy_protection",
false,
0,
0
};
const ExtraGuiOptions ScummMetaEngine::getExtraGuiOptions(const Common::String &target) const {
ExtraGuiOptions options;
// Query the GUI options
@ -754,6 +763,9 @@ const ExtraGuiOptions ScummMetaEngine::getExtraGuiOptions(const Common::String &
if (target.empty() || guiOptions.contains(GUIO_ORIGINALGUI)) {
options.push_back(enableOriginalGUI);
}
if (target.empty() || guiOptions.contains(GUIO_COPY_PROTECTION)) {
options.push_back(enableCopyProtection);
}
if (target.empty() || guiOptions.contains(GUIO_ENHANCEMENTS)) {
options.push_back(enableEnhancements);
}