diff options
author | Paul Gilbert | 2016-04-23 19:03:55 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-10 16:11:52 -0400 |
commit | f6f68e547d39957fc4678859a95cbec839cc41e4 (patch) | |
tree | 12a9c5c9af3fa758119959c56fcb17ef48305c19 /engines/titanic/pet_control/pet_sound.cpp | |
parent | a8d4e827d23110e978319a2a6d7f036d16c7f66a (diff) | |
download | scummvm-rg350-f6f68e547d39957fc4678859a95cbec839cc41e4.tar.gz scummvm-rg350-f6f68e547d39957fc4678859a95cbec839cc41e4.tar.bz2 scummvm-rg350-f6f68e547d39957fc4678859a95cbec839cc41e4.zip |
TITANIC: Implement changing sound slider percentages
Diffstat (limited to 'engines/titanic/pet_control/pet_sound.cpp')
-rw-r--r-- | engines/titanic/pet_control/pet_sound.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/engines/titanic/pet_control/pet_sound.cpp b/engines/titanic/pet_control/pet_sound.cpp index d4c6fb376c..2305f42a8f 100644 --- a/engines/titanic/pet_control/pet_sound.cpp +++ b/engines/titanic/pet_control/pet_sound.cpp @@ -22,6 +22,7 @@ #include "titanic/pet_control/pet_sound.h" #include "titanic/pet_control/pet_control.h" +#include "titanic/game_manager.h" namespace Titanic { @@ -121,4 +122,80 @@ void CPetSound::draw2(CScreenManager *screenManager) { _textSpeechVolume.draw(screenManager); } +bool CPetSound::checkHighlight(const Point &pt) { + if (_musicVolume.checkThumb(pt) || _masterVolume.checkThumb(pt) || + _speechVolume.checkThumb(pt)) + return true; + + if (_parrotVolume.checkThumb(pt)) { + CPetControl *pet = getPetControl(); + if (pet) + pet->playSound(2); + + return true; + } + + Rect rectLeft(0, 0, 10, 11); + Rect rectRight(0, 0, 10, 11); + rectLeft.translate(415, 379); + rectRight.translate(567, 378); + + CPetSlider *sliders[4] = { &_masterVolume, &_musicVolume, &_parrotVolume, &_speechVolume }; + for (int idx = 0; idx < 4; ++idx) { + CPetSlider *slider = sliders[idx]; + bool isLeft = rectLeft.contains(pt); + bool isRight = rectRight.contains(pt); + int offset; + + if (isLeft) { + slider->stepPosition(-1); + offset = slider->getOffsetPixels(); + } else if (isRight) { + slider->stepPosition(1); + offset = slider->getOffsetPixels(); + } + + if (isLeft || isRight) { + sliderChanged(offset, idx); + return true; + } + + // Move to next slider row + rectLeft.translate(0, 20); + rectRight.translate(0, 20); + } + + return false; +} + +void CPetSound::sliderChanged(double offset, int sliderNum) { + CPetControl *pet = getPetControl(); + if (!pet) + return; + + CGameManager *gameManager = pet->getGameManager(); + if (!gameManager) + return; + + QSoundManager &soundManager = gameManager->_sound._soundManager; + double percent = offset * 100.0; + + switch (sliderNum) { + case 0: + soundManager.setMasterPercent(percent); + break; + case 1: + soundManager.setMusicPercent(percent); + break; + case 2: + soundManager.setParrotPercent(percent); + break; + case 3: + soundManager.setSpeechPercent(percent); + break; + default: + break; + } +} + } // End of namespace Titanic |