Ticket #8604: sky-control2.patch

File sky-control2.patch, 5.3 KB (added by salty-horse, 17 years ago)

new version

  • engines/sky/control.h

     
    203203        uint16 handleClick(ConResource *pButton);
    204204        uint16 doMusicSlide(void);
    205205        uint16 doSpeedSlide(void);
    206         uint16 toggleFx(ConResource *pButton);
     206        void toggleFx(ConResource *pButton);
    207207        uint16 toggleText(void);
    208         void toggleMusic(void);
     208        void toggleMusic(ConResource *pButton);
    209209        uint16 shiftDown(uint8 speed);
    210210        uint16 shiftUp(uint8 speed);
    211211        void drawTextCross(uint32 flags);
  • engines/sky/sky.cpp

     
    357357        if (ConfMan.getBool("sfx_mute")) {
    358358                SkyEngine::_systemVars.systemFlags |= SF_FX_OFF;
    359359        }
     360        if (ConfMan.getBool("music_mute")) {
     361                SkyEngine::_systemVars.systemFlags |= SF_MUS_OFF;
     362        }
    360363         _mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
    361364         _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
    362365        _floppyIntro = ConfMan.getBool("alt_intro");
  • engines/sky/control.cpp

     
    284284        _savePanButton    = createResource(      _sprites.button, 3, 0, 58,  39, 48, SAVE_GAME_PANEL, MAINPANEL);
    285285        _dosPanButton     = createResource(      _sprites.button, 3, 0, 58,  59, 93,     QUIT_TO_DOS, MAINPANEL);
    286286        _restartPanButton = createResource(      _sprites.button, 3, 0, 58,  79, 94,         RESTART, MAINPANEL);
    287         if (SkyEngine::_systemVars.systemFlags & SF_FX_OFF)
    288                 _fxPanButton  = createResource(      _sprites.button, 3, 0, 58,  99, 87,       TOGGLE_FX, MAINPANEL);
    289         else
    290                 _fxPanButton  = createResource(      _sprites.button, 3, 2, 58,  99, 86,       TOGGLE_FX, MAINPANEL);
     287        _fxPanButton      = createResource(      _sprites.button, 3, 0, 58,  99, 90,       TOGGLE_FX, MAINPANEL);
    291288
    292289        if (SkyEngine::isCDVersion()) { // CD Version: Toggle text/speech
    293                 _musicPanButton = createResource(      _sprites.button, 3, 0, 58, 119, 52,     TOGGLE_TEXT, MAINPANEL);
     290                _musicPanButton = createResource(    _sprites.button, 3, 0, 58, 119, 52,     TOGGLE_TEXT, MAINPANEL);
    294291        } else {                       // disk version: toggle music on/off
    295                 _musicPanButton = createResource(      _sprites.button, 3, 0, 58, 119, 91,       TOGGLE_MS, MAINPANEL);
     292                _musicPanButton = createResource(    _sprites.button, 3, 0, 58, 119, 91,       TOGGLE_MS, MAINPANEL);
    296293        }
    297294        _bodge            = createResource(  _sprites.musicBodge, 2, 1, 98, 115,  0,      DO_NOTHING, MAINPANEL);
    298295        _yesNo            = createResource(       _sprites.yesNo, 1, 0, -2,  40,  0,      DO_NOTHING, MAINPANEL);
     
    474471        else
    475472                _skyScreen->setPalette(60510);
    476473
     474        // Set initial button lights
     475        _fxPanButton->_curSprite =
     476                (SkyEngine::_systemVars.systemFlags & SF_FX_OFF ? 0 : 2);
     477
     478        // music button only available in floppy version
     479        if (!SkyEngine::isCDVersion())
     480                _musicPanButton->_curSprite =
     481                        (SkyEngine::_systemVars.systemFlags & SF_MUS_OFF ? 0 : 2);
     482
    477483        drawMainPanel();
    478484
    479485        _savedMouse = _skyMouse->giveCurrentMouseType();
     
    573579                _mouseClicked = true;
    574580                return doMusicSlide();
    575581        case TOGGLE_FX:
    576                 return toggleFx(pButton);
     582                toggleFx(pButton);
     583                return TOGGLED;
    577584        case TOGGLE_MS:
    578                 animClick(pButton);
    579                 toggleMusic();
     585                toggleMusic(pButton);
    580586                return TOGGLED;
    581587        case TOGGLE_TEXT:
    582588                animClick(pButton);
     
    647653                        wantMouse = MOUSE_NORMAL;
    648654        }
    649655        _mouseClicked = false;
     656        _skyMouse->spriteMouse(MOUSE_NORMAL, 0, 0);
    650657        if (dlgTextDat)
    651658                free(dlgTextDat);
    652659        delete dlgText;
     
    708715        return SPEED_CHANGED;
    709716}
    710717
    711 uint16 Control::toggleFx(ConResource *pButton) {
     718void Control::toggleFx(ConResource *pButton) {
    712719
    713720        SkyEngine::_systemVars.systemFlags ^= SF_FX_OFF;
    714721        if (SkyEngine::_systemVars.systemFlags & SF_FX_OFF) {
    715722                pButton->_curSprite = 0;
    716                 pButton->_text = 0x7000 + 87;
    717723                _statusBar->setToText(0x7000 + 87);
    718724        } else {
    719725                pButton->_curSprite = 2;
    720                 pButton->_text = 0x7000 + 86;
    721726                _statusBar->setToText(0x7000 + 86);
    722727        }
    723728
    724729        ConfMan.setBool("sfx_mute", (SkyEngine::_systemVars.systemFlags & SF_FX_OFF) != 0);
    725730
    726731        pButton->drawToScreen(WITH_MASK);
    727         buttonControl(pButton);
    728732        _system->updateScreen();
    729         return TOGGLED;
    730733}
    731734
    732735uint16 Control::toggleText(void) {
     
    756759        return TOGGLED;
    757760}
    758761
    759 void Control::toggleMusic(void) {
     762void Control::toggleMusic(ConResource *pButton) {
    760763
     764        SkyEngine::_systemVars.systemFlags ^= SF_MUS_OFF;
    761765        if (SkyEngine::_systemVars.systemFlags & SF_MUS_OFF) {
    762                 SkyEngine::_systemVars.systemFlags &= ~SF_MUS_OFF;
     766                _skyMusic->startMusic(0);
     767                pButton->_curSprite = 0;
     768                _statusBar->setToText(0x7000 + 89);
     769        } else {
    763770                _skyMusic->startMusic(SkyEngine::_systemVars.currentMusic);
     771                pButton->_curSprite = 2;
    764772                _statusBar->setToText(0x7000 + 88);
    765         } else {
    766                 SkyEngine::_systemVars.systemFlags |= SF_MUS_OFF;
    767                 _skyMusic->startMusic(0);
    768                 _statusBar->setToText(0x7000 + 89);
    769773        }
     774
     775        ConfMan.setBool("music_mute", (SkyEngine::_systemVars.systemFlags & SF_MUS_OFF) != 0);
     776
     777        pButton->drawToScreen(WITH_MASK);
     778        _system->updateScreen();
    770779}
    771780
    772781uint16 Control::shiftDown(uint8 speed) {