Ticket #8604: sky-control.patch

File sky-control.patch, 4.5 KB (added by salty-horse, 17 years ago)
  • 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(void);
    207207        uint16 toggleText(void);
    208208        void toggleMusic(void);
    209209        uint16 shiftDown(uint8 speed);
  • 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);
     
    573570                _mouseClicked = true;
    574571                return doMusicSlide();
    575572        case TOGGLE_FX:
    576                 return toggleFx(pButton);
     573                animClick(pButton);
     574                toggleFx();
     575                return TOGGLED;
    577576        case TOGGLE_MS:
    578577                animClick(pButton);
    579578                toggleMusic();
     
    647646                        wantMouse = MOUSE_NORMAL;
    648647        }
    649648        _mouseClicked = false;
     649        _skyMouse->spriteMouse(MOUSE_NORMAL, 0, 0);
    650650        if (dlgTextDat)
    651651                free(dlgTextDat);
    652652        delete dlgText;
     
    708708        return SPEED_CHANGED;
    709709}
    710710
    711 uint16 Control::toggleFx(ConResource *pButton) {
     711void Control::toggleFx(void) {
    712712
    713713        SkyEngine::_systemVars.systemFlags ^= SF_FX_OFF;
    714714        if (SkyEngine::_systemVars.systemFlags & SF_FX_OFF) {
    715                 pButton->_curSprite = 0;
    716                 pButton->_text = 0x7000 + 87;
    717715                _statusBar->setToText(0x7000 + 87);
    718716        } else {
    719                 pButton->_curSprite = 2;
    720                 pButton->_text = 0x7000 + 86;
    721717                _statusBar->setToText(0x7000 + 86);
    722718        }
    723719
    724720        ConfMan.setBool("sfx_mute", (SkyEngine::_systemVars.systemFlags & SF_FX_OFF) != 0);
    725 
    726         pButton->drawToScreen(WITH_MASK);
    727         buttonControl(pButton);
    728         _system->updateScreen();
    729         return TOGGLED;
    730721}
    731722
    732723uint16 Control::toggleText(void) {
     
    758749
    759750void Control::toggleMusic(void) {
    760751
     752        SkyEngine::_systemVars.systemFlags ^= SF_MUS_OFF;
    761753        if (SkyEngine::_systemVars.systemFlags & SF_MUS_OFF) {
    762                 SkyEngine::_systemVars.systemFlags &= ~SF_MUS_OFF;
    763                 _skyMusic->startMusic(SkyEngine::_systemVars.currentMusic);
    764                 _statusBar->setToText(0x7000 + 88);
    765         } else {
    766                 SkyEngine::_systemVars.systemFlags |= SF_MUS_OFF;
    767754                _skyMusic->startMusic(0);
    768755                _statusBar->setToText(0x7000 + 89);
     756        } else {
     757                _skyMusic->startMusic(SkyEngine::_systemVars.currentMusic);
     758                _statusBar->setToText(0x7000 + 88);
    769759        }
     760
     761        ConfMan.setBool("music_mute", (SkyEngine::_systemVars.systemFlags & SF_MUS_OFF) != 0);
    770762}
    771763
    772764uint16 Control::shiftDown(uint8 speed) {