BLADERUNNER: Fix max volume in VQAs with audio stream

Closes #10987
This commit is contained in:
Thanasis Antoniou 2019-06-21 14:55:26 +03:00
parent 80f163b0fc
commit 12b5dde457
3 changed files with 22 additions and 21 deletions

View File

@ -48,7 +48,7 @@ AudioPlayer::AudioPlayer(BladeRunnerEngine *vm) {
_tracks[i].stream = nullptr;
}
_sfxVolume =BLADERUNNER_ORIGINAL_SETTINGS ? 65 : 100;
_sfxVolume = BLADERUNNER_ORIGINAL_SETTINGS ? 65 : 100;
}
AudioPlayer::~AudioPlayer() {

View File

@ -465,20 +465,6 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
_gameFlags = new GameFlags();
_gameFlags->setFlagCount(_gameInfo->getFlagCount());
// Assign default values to the ScummVM configuration manager, in case settings are missing
ConfMan.registerDefault("subtitles", "true");
ConfMan.registerDefault("sfx_volume", 192);
ConfMan.registerDefault("music_volume", 192);
ConfMan.registerDefault("speech_volume", 192);
ConfMan.registerDefault("mute", "false");
ConfMan.registerDefault("speech_mute", "false");
// get value from the ScummVM configuration manager
syncSoundSettings();
_sitcomMode = ConfMan.getBool("sitcom");
_shortyMode = ConfMan.getBool("shorty");
_items = new Items(this);
_audioCache = new AudioCache();
@ -493,6 +479,19 @@ bool BladeRunnerEngine::startup(bool hasSavegames) {
_ambientSounds = new AmbientSounds(this);
// Assign default values to the ScummVM configuration manager, in case settings are missing
ConfMan.registerDefault("subtitles", "true");
ConfMan.registerDefault("sfx_volume", 192);
ConfMan.registerDefault("music_volume", 192);
ConfMan.registerDefault("speech_volume", 192);
ConfMan.registerDefault("mute", "false");
ConfMan.registerDefault("speech_mute", "false");
// get value from the ScummVM configuration manager
syncSoundSettings();
_sitcomMode = ConfMan.getBool("sitcom");
_shortyMode = ConfMan.getBool("shorty");
// BLADE.INI was read here, but it was replaced by ScummVM configuration
_chapters = new Chapters(this);
@ -1844,16 +1843,17 @@ void BladeRunnerEngine::syncSoundSettings() {
_mixer->setVolumeForSoundType(_mixer->kMusicSoundType, ConfMan.getInt("music_volume"));
_mixer->setVolumeForSoundType(_mixer->kSFXSoundType, ConfMan.getInt("sfx_volume"));
_mixer->setVolumeForSoundType(_mixer->kSpeechSoundType, ConfMan.getInt("speech_volume"));
// debug("syncSoundSettings: Volumes synced as Music: %d, Sfx: %d, Speech: %d", ConfMan.getInt("music_volume"), ConfMan.getInt("sfx_volume"), ConfMan.getInt("speech_volume"));
bool allSoundIsMuted = false;
if (ConfMan.hasKey("mute")) {
_mixer->muteSoundType(_mixer->kMusicSoundType, ConfMan.getBool("mute"));
_mixer->muteSoundType(_mixer->kSFXSoundType, ConfMan.getBool("mute"));
_mixer->muteSoundType(_mixer->kSpeechSoundType, ConfMan.getBool("mute"));
allSoundIsMuted = ConfMan.getBool("mute");
_mixer->muteSoundType(_mixer->kMusicSoundType, allSoundIsMuted);
_mixer->muteSoundType(_mixer->kSFXSoundType, allSoundIsMuted);
_mixer->muteSoundType(_mixer->kSpeechSoundType, allSoundIsMuted);
}
if (ConfMan.hasKey("speech_mute")) {
if (ConfMan.hasKey("speech_mute") && !allSoundIsMuted) {
// if true it means show only subtitles
// "subtitles" key will already be set appropriately by Engine::syncSoundSettings();
// but we need to mute the speech

View File

@ -24,6 +24,7 @@
#include "bladerunner/bladerunner.h"
#include "bladerunner/time.h"
#include "bladerunner/audio_player.h"
#include "audio/decoders/raw.h"
@ -134,7 +135,7 @@ int VQAPlayer::update(bool forceDraw, bool advanceFrame, bool useTime, Graphics:
queueAudioFrame(_decoder.decodeAudioFrame());
}
}
_vm->_mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, _audioStream);
_vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, _audioStream);
_audioStarted = true;
}
if (_frameNext + audioPreloadFrames < _frameEnd) {