diff options
author | Peter Kohaut | 2018-01-14 12:12:06 +0100 |
---|---|---|
committer | Peter Kohaut | 2018-01-28 10:57:16 +0100 |
commit | 1e5f9d3078f236f306b5d868bcd52f4e47f7b512 (patch) | |
tree | 0d402af27d75064d60e4674ab3bd4c9ad08759f1 /engines/bladerunner/ambient_sounds.cpp | |
parent | 3a937f19c0a5e347c801c62d345475be082f9e41 (diff) | |
download | scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.tar.gz scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.tar.bz2 scummvm-rg350-1e5f9d3078f236f306b5d868bcd52f4e47f7b512.zip |
BLADERUNNER: Added basic KIA interface
Settings works
Help works
Clue database works
Fixed code for inserting objects into scene
Reorganization of few files
Unification & code formatting of few older files
Diffstat (limited to 'engines/bladerunner/ambient_sounds.cpp')
-rw-r--r-- | engines/bladerunner/ambient_sounds.cpp | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/engines/bladerunner/ambient_sounds.cpp b/engines/bladerunner/ambient_sounds.cpp index a8a42537d1..31683f01c1 100644 --- a/engines/bladerunner/ambient_sounds.cpp +++ b/engines/bladerunner/ambient_sounds.cpp @@ -24,27 +24,25 @@ #include "bladerunner/audio_player.h" #include "bladerunner/bladerunner.h" -#include "bladerunner/gameinfo.h" +#include "bladerunner/game_info.h" #include "common/debug.h" #include "common/system.h" namespace BladeRunner { -#define NON_LOOPING_SOUNDS 25 -#define LOOPING_SOUNDS 3 - -AmbientSounds::AmbientSounds(BladeRunnerEngine *vm) : _vm(vm) { - _nonLoopingSounds = new NonLoopingSound[NON_LOOPING_SOUNDS]; - _loopingSounds = new LoopingSound[LOOPING_SOUNDS]; +AmbientSounds::AmbientSounds(BladeRunnerEngine *vm) { + _vm = vm; + _nonLoopingSounds = new NonLoopingSound[kNonLoopingSounds]; + _loopingSounds = new LoopingSound[kLoopingSounds]; _ambientVolume = 65; - for (int i = 0; i != NON_LOOPING_SOUNDS; ++i) { + for (int i = 0; i != kNonLoopingSounds; ++i) { NonLoopingSound &track = _nonLoopingSounds[i]; track.isActive = false; } - for (int i = 0; i != LOOPING_SOUNDS; ++i) { + for (int i = 0; i != kLoopingSounds; ++i) { LoopingSound &track = _loopingSounds[i]; track.isActive = false; } @@ -96,7 +94,7 @@ void AmbientSounds::removeNonLoopingSound(int sfxId, bool stopPlaying) { } void AmbientSounds::removeAllNonLoopingSounds(bool stopPlaying) { - for (int i = 0; i < NON_LOOPING_SOUNDS; i++) { + for (int i = 0; i < kNonLoopingSounds; i++) { removeNonLoopingSoundByIndex(i, stopPlaying); } } @@ -188,7 +186,7 @@ void AmbientSounds::removeLoopingSound(int sfxId, int delay) { } void AmbientSounds::removeAllLoopingSounds(int delay) { - for (int i = 0; i < LOOPING_SOUNDS; i++) { + for (int i = 0; i < kLoopingSounds; i++) { removeLoopingSoundByIndex(i, delay); } } @@ -196,7 +194,7 @@ void AmbientSounds::removeAllLoopingSounds(int delay) { void AmbientSounds::tick() { uint32 now = g_system->getMillis(); - for (int i = 0; i != NON_LOOPING_SOUNDS; ++i) { + for (int i = 0; i != kNonLoopingSounds; ++i) { NonLoopingSound &track = _nonLoopingSounds[i]; if (!track.isActive || track.nextPlayTime > now) { @@ -226,8 +224,37 @@ void AmbientSounds::tick() { } } -int AmbientSounds::findAvailableNonLoopingTrack() { - for (int i = 0; i != NON_LOOPING_SOUNDS; ++i) { +void AmbientSounds::setVolume(int volume) { + if (_loopingSounds) { + for (int i = 0; i < kLoopingSounds; i++) { + if (_loopingSounds[i].isActive && _loopingSounds[i].audioPlayerTrack != -1) { + int newVolume = _loopingSounds[i].volume * volume / 100; + if (_vm->_audioPlayer->isActive(_loopingSounds[i].audioPlayerTrack)) { + _vm->_audioPlayer->adjustVolume(_loopingSounds[i].audioPlayerTrack, newVolume, 1, false); + } else { + _loopingSounds[i].audioPlayerTrack = _vm->_audioPlayer->playAud(_loopingSounds[i].name, 1, _loopingSounds[i].pan, _loopingSounds[i].pan, 99, AudioPlayer::LOOP | AudioPlayer::OVERRIDE_VOLUME); + if (_loopingSounds[i].audioPlayerTrack == -1) { + removeLoopingSound(i, 0); + } else { + _vm->_audioPlayer->adjustVolume(_loopingSounds[i].audioPlayerTrack, newVolume, 1, false); + } + } + } + } + } + _ambientVolume = volume; +} + +int AmbientSounds::getVolume() const { + return _ambientVolume; +} + +void AmbientSounds::playSample() { + playSound(66, 100, 0, 0, 0); +} + +int AmbientSounds::findAvailableNonLoopingTrack() const { + for (int i = 0; i != kNonLoopingSounds; ++i) { if (!_nonLoopingSounds[i].isActive) { return i; } @@ -236,8 +263,8 @@ int AmbientSounds::findAvailableNonLoopingTrack() { return -1; } -int AmbientSounds::findNonLoopingTrackByHash(int32 hash) { - for (int i = 0; i != NON_LOOPING_SOUNDS; ++i) { +int AmbientSounds::findNonLoopingTrackByHash(int32 hash) const { + for (int i = 0; i != kNonLoopingSounds; ++i) { NonLoopingSound &track = _nonLoopingSounds[i]; if (track.isActive && track.hash == hash) { @@ -248,8 +275,8 @@ int AmbientSounds::findNonLoopingTrackByHash(int32 hash) { return -1; } -int AmbientSounds::findAvailableLoopingTrack() { - for (int i = 0; i != LOOPING_SOUNDS; ++i) { +int AmbientSounds::findAvailableLoopingTrack() const { + for (int i = 0; i != kLoopingSounds; ++i) { if (!_loopingSounds[i].isActive) { return i; } @@ -258,8 +285,8 @@ int AmbientSounds::findAvailableLoopingTrack() { return -1; } -int AmbientSounds::findLoopingTrackByHash(int32 hash) { - for (int i = 0; i != LOOPING_SOUNDS; ++i) { +int AmbientSounds::findLoopingTrackByHash(int32 hash) const { + for (int i = 0; i != kLoopingSounds; ++i) { LoopingSound &track = _loopingSounds[i]; if (track.isActive && track.hash == hash) { |