Ticket #12601: space-ship-puzzle-fuzzy-logic-ver4.diff

File space-ship-puzzle-fuzzy-logic-ver4.diff, 6.2 KB (added by AspireONE-zz, 3 years ago)

same as before, formating.

  • engines/mohawk/dialogs.cpp

    diff --git a/engines/mohawk/dialogs.cpp b/engines/mohawk/dialogs.cpp
    index a70ea6728181..663ffd786045 100644
    a b MystOptionsWidget::MystOptionsWidget(GuiObject *boss, const Common::String &name  
    9999                _zipModeCheckbox(nullptr),
    100100                _transitionsCheckbox(nullptr),
    101101                _mystFlyByCheckbox(nullptr),
     102                _spaceshipFuzzyLogicCheckbox(nullptr),
    102103                _languagePopUp(nullptr),
    103104                _dropPageButton(nullptr),
    104105                _showMapButton(nullptr),
    MystOptionsWidget::MystOptionsWidget(GuiObject *boss, const Common::String &name  
    119120                                                             _("The Myst fly by movie was not played by the original engine."));
    120121        }
    121122
     123        if (!isDemo) {
     124                /**
     125                 * I18N:
     126                 * This Option is for hard-of-hearing.
     127                 * It makes it easier to solve the spaceship puzzle.
     128                 * Normally game uses strict binary logic here.
     129                 * We change it to use fuzzy logic.
     130                 * By default the option is off.
     131                 */
     132                _spaceshipFuzzyLogicCheckbox = new GUI::CheckboxWidget(widgetsBoss(), "MystGameOptionsDialog.FuzzyMode", _("~F~uzzy Logic in SpaceShip Active"));
     133        }
     134
    122135        if (isInGame()) {
    123136                MohawkEngine_Myst *vm = static_cast<MohawkEngine_Myst *>(g_engine);
    124137                assert(vm);
    void MystOptionsWidget::defineLayout(GUI::ThemeEval &layouts, const Common::Stri  
    161174                        .addWidget("ZipMode", "Checkbox")
    162175                        .addWidget("Transistions", "Checkbox")
    163176                        .addWidget("PlayMystFlyBy", "Checkbox")
     177                        .addWidget("FuzzyMode", "Checkbox")
    164178                        .addLayout(GUI::ThemeLayout::kLayoutHorizontal)
    165179                            .addPadding(0, 0, 0, 0)
    166180                            .addWidget("LanguageDesc", "OptionsLabel")
    void MystOptionsWidget::load() {  
    193207                _mystFlyByCheckbox->setState(ConfMan.getBool("playmystflyby", _domain));
    194208        }
    195209
     210        if (_spaceshipFuzzyLogicCheckbox) {
     211                _spaceshipFuzzyLogicCheckbox->setState(ConfMan.getBool("fuzzy_logic", _domain));
     212        }
     213
    196214        if (_languagePopUp) {
    197215                Common::Language language = Common::parseLanguage(ConfMan.get("language", _domain));
    198216                const MystLanguage *languageDesc = MohawkEngine_Myst::getLanguageDesc(language);
    bool MystOptionsWidget::save() {  
    229247                ConfMan.setBool("playmystflyby", _mystFlyByCheckbox->getState(), _domain);
    230248        }
    231249
     250        if (_spaceshipFuzzyLogicCheckbox) {
     251                ConfMan.setBool("fuzzy_logic", _spaceshipFuzzyLogicCheckbox->getState(), _domain);
     252        }
     253
    232254        if (_languagePopUp) {
    233255                MohawkEngine_Myst *vm = static_cast<MohawkEngine_Myst *>(g_engine);
    234256                assert(vm);
  • engines/mohawk/dialogs.h

    diff --git a/engines/mohawk/dialogs.h b/engines/mohawk/dialogs.h
    index 776172b5371b..d479dddf94ed 100644
    a b class MystOptionsWidget : public GUI::OptionsContainerWidget {  
    100100        GUI::CheckboxWidget *_zipModeCheckbox;
    101101        GUI::CheckboxWidget *_transitionsCheckbox;
    102102        GUI::CheckboxWidget *_mystFlyByCheckbox;
     103        GUI::CheckboxWidget *_spaceshipFuzzyLogicCheckbox;
     104
    103105        GUI::PopUpWidget *_languagePopUp;
    104106
    105107        GUI::ButtonWidget *_dropPageButton;
  • engines/mohawk/myst_metaengine.cpp

    diff --git a/engines/mohawk/myst_metaengine.cpp b/engines/mohawk/myst_metaengine.cpp
    index 7f400bb308e3..a77b3e857343 100644
    a b void Mohawk::MohawkMetaEngine_Myst::registerDefaultSettings() {  
    2626        ConfMan.registerDefault("playmystflyby", false);
    2727        ConfMan.registerDefault("zip_mode", false);
    2828        ConfMan.registerDefault("transition_mode", false);
     29        ConfMan.registerDefault("fuzzy_logic", false);
    2930}
    3031
    3132const Mohawk::MystLanguage *Mohawk::MohawkMetaEngine_Myst::listLanguages() {
  • engines/mohawk/myst_stacks/myst.cpp

    diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
    index de9a375d0c3f..165b84a50d3c 100644
    a b  
    3030#include "mohawk/video.h"
    3131#include "mohawk/myst_stacks/myst.h"
    3232
     33#include "common/config-manager.h"
    3334#include "common/events.h"
    3435#include "common/math.h"
    3536#include "common/system.h"
    uint16 Myst::rocketSliderGetSound(uint16 pos) {  
    22922293        return (uint16)(9530 + (pos - 216) * 35.0 / 61.0);
    22932294}
    22942295
     2296uint16 Myst::rocketCheckIfSoundMatches(uint16 sound1, uint16 sound2) {
     2297        debugN("rocketCheckIfSoundMatches: %i %i (diff:% 3i) ", sound1, sound2, sound1 - sound2);
     2298        if (!ConfMan.getBool("fuzzy_logic")) {
     2299                debugN("strict\n");
     2300                return sound1 == sound2;
     2301        } else {
     2302                debugN("fuzzy\n");
     2303                return abs(sound1 - sound2) < 5;
     2304        }
     2305}
     2306
    22952307void Myst::rocketCheckSolution() {
    22962308        _vm->_cursor->hideCursor();
    22972309
    void Myst::rocketCheckSolution() {  
    23022314        _vm->_sound->playEffect(soundId);
    23032315        _rocketSlider1->drawConditionalDataToScreen(2);
    23042316        _vm->wait(250);
    2305         if (soundId != 9558)
     2317        if (!rocketCheckIfSoundMatches(soundId, 9558))
    23062318                solved = false;
    23072319
    23082320        soundId = rocketSliderGetSound(_rocketSlider2->_pos.y);
    23092321        _vm->_sound->playEffect(soundId);
    23102322        _rocketSlider2->drawConditionalDataToScreen(2);
    23112323        _vm->wait(250);
    2312         if (soundId != 9546)
     2324        if (!rocketCheckIfSoundMatches(soundId, 9546))
    23132325                solved = false;
    23142326
    23152327        soundId = rocketSliderGetSound(_rocketSlider3->_pos.y);
    23162328        _vm->_sound->playEffect(soundId);
    23172329        _rocketSlider3->drawConditionalDataToScreen(2);
    23182330        _vm->wait(250);
    2319         if (soundId != 9543)
     2331        if (!rocketCheckIfSoundMatches(soundId, 9543))
    23202332                solved = false;
    23212333
    23222334        soundId = rocketSliderGetSound(_rocketSlider4->_pos.y);
    23232335        _vm->_sound->playEffect(soundId);
    23242336        _rocketSlider4->drawConditionalDataToScreen(2);
    23252337        _vm->wait(250);
    2326         if (soundId != 9553)
     2338        if (!rocketCheckIfSoundMatches(soundId, 9553))
    23272339                solved = false;
    23282340
    23292341        soundId = rocketSliderGetSound(_rocketSlider5->_pos.y);
    23302342        _vm->_sound->playEffect(soundId);
    23312343        _rocketSlider5->drawConditionalDataToScreen(2);
    23322344        _vm->wait(250);
    2333         if (soundId != 9560)
     2345        if (!rocketCheckIfSoundMatches(soundId, 9560))
    23342346                solved = false;
    23352347
    23362348        _vm->_sound->stopEffect();
  • engines/mohawk/myst_stacks/myst.h

    diff --git a/engines/mohawk/myst_stacks/myst.h b/engines/mohawk/myst_stacks/myst.h
    index 373963037940..8bb89917a275 100644
    a b class Myst : public MystScriptParser {  
    312312
    313313        void rocketSliderMove();
    314314        uint16 rocketSliderGetSound(uint16 pos);
     315        uint16 rocketCheckIfSoundMatches(uint16 sound1, uint16 sound2);
    315316        void rocketCheckSolution();
    316317
    317318        void libraryBookPageTurnLeft();