aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/sound.cpp
diff options
context:
space:
mode:
authorEric Fry2018-06-17 00:07:36 +1000
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commit102dd462734f0baa67ae4f8439094f6aa50b42fa (patch)
tree86b153edc0fec565d0c3a198309d7254c494df7b /engines/illusions/sound.cpp
parent09281b85f507a8859de3b03ac512e871d849611e (diff)
downloadscummvm-rg350-102dd462734f0baa67ae4f8439094f6aa50b42fa.tar.gz
scummvm-rg350-102dd462734f0baa67ae4f8439094f6aa50b42fa.tar.bz2
scummvm-rg350-102dd462734f0baa67ae4f8439094f6aa50b42fa.zip
ILLUSIONS: Wire up audio sliders on option menu.
Set volumes based on scummvm config
Diffstat (limited to 'engines/illusions/sound.cpp')
-rw-r--r--engines/illusions/sound.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/engines/illusions/sound.cpp b/engines/illusions/sound.cpp
index cf6e4f8748..bbcf8ad75b 100644
--- a/engines/illusions/sound.cpp
+++ b/engines/illusions/sound.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "illusions/illusions.h"
#include "illusions/sound.h"
#include "audio/midiparser.h"
@@ -296,7 +297,7 @@ void SoundMan::stopCueingVoice() {
}
void SoundMan::startVoice(int16 volume, int16 pan) {
- _voicePlayer->start(volume, pan);
+ _voicePlayer->start(calcAdjustedVolume("speech_volume", (uint8)volume), pan);
}
void SoundMan::stopVoice() {
@@ -323,7 +324,7 @@ void SoundMan::loadSound(uint32 soundEffectId, uint32 soundGroupId, bool looping
void SoundMan::playSound(uint32 soundEffectId, int16 volume, int16 pan) {
Sound *sound = getSound(soundEffectId);
if (sound)
- sound->play(volume, pan);
+ sound->play(calcAdjustedVolume("sfx_volume", (uint8)volume), pan);
}
void SoundMan::stopSound(uint32 soundEffectId) {
@@ -364,4 +365,34 @@ void SoundMan::fadeMidiMusic(int16 finalVolume, int16 duration) {
_midiPlayer->fade(finalVolume, duration);
}
+void SoundMan::setMusicVolume(uint8 volume) {
+ ConfMan.setInt("music_volume", volume);
+ _midiPlayer->syncVolume();
+}
+
+void SoundMan::setSfxVolume(uint8 volume) {
+ ConfMan.setInt("sfx_volume", volume);
+}
+
+void SoundMan::setSpeechVolume(uint8 volume) {
+ ConfMan.setInt("speech_volume", volume);
+}
+
+uint8 SoundMan::calcAdjustedVolume(const Common::String &volumeConfigKey, uint8 volume) {
+ uint8 masterVolume = (uint8)ConfMan.getInt(volumeConfigKey);
+ return (uint8)(((float)masterVolume/255) * (float)volume);
+}
+
+uint8 SoundMan::getMusicVolume() {
+ return (uint8)ConfMan.getInt("music_volume");
+}
+
+uint8 SoundMan::getSfxVolume() {
+ return (uint8)ConfMan.getInt("sfx_volume");
+}
+
+uint8 SoundMan::getSpeechVolume() {
+ return (uint8)ConfMan.getInt("speech_volume");
+}
+
} // End of namespace Illusions