diff options
Diffstat (limited to 'engines/wintermute/base/sound')
-rw-r--r-- | engines/wintermute/base/sound/base_sound.cpp | 20 | ||||
-rw-r--r-- | engines/wintermute/base/sound/base_sound_buffer.cpp | 10 | ||||
-rw-r--r-- | engines/wintermute/base/sound/base_sound_buffer.h | 1 |
3 files changed, 18 insertions, 13 deletions
diff --git a/engines/wintermute/base/sound/base_sound.cpp b/engines/wintermute/base/sound/base_sound.cpp index c1923b3ca8..f9cd59e4fb 100644 --- a/engines/wintermute/base/sound/base_sound.cpp +++ b/engines/wintermute/base/sound/base_sound.cpp @@ -166,16 +166,16 @@ bool BaseSound::persist(BasePersistenceManager *persistMgr) { persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); - persistMgr->transfer(TMEMBER(_soundFilename)); - persistMgr->transfer(TMEMBER(_soundLooping)); - persistMgr->transfer(TMEMBER(_soundPaused)); - persistMgr->transfer(TMEMBER(_soundFreezePaused)); - persistMgr->transfer(TMEMBER(_soundPlaying)); - persistMgr->transfer(TMEMBER(_soundPosition)); - persistMgr->transfer(TMEMBER(_soundPrivateVolume)); - persistMgr->transfer(TMEMBER(_soundStreamed)); - persistMgr->transfer(TMEMBER_INT(_soundType)); - persistMgr->transfer(TMEMBER(_soundLoopStart)); + persistMgr->transferString(TMEMBER(_soundFilename)); + persistMgr->transferBool(TMEMBER(_soundLooping)); + persistMgr->transferBool(TMEMBER(_soundPaused)); + persistMgr->transferBool(TMEMBER(_soundFreezePaused)); + persistMgr->transferBool(TMEMBER(_soundPlaying)); + persistMgr->transferUint32(TMEMBER(_soundPosition)); + persistMgr->transferSint32(TMEMBER(_soundPrivateVolume)); + persistMgr->transferBool(TMEMBER(_soundStreamed)); + persistMgr->transferSint32(TMEMBER_INT(_soundType)); + persistMgr->transferUint32(TMEMBER(_soundLoopStart)); return STATUS_OK; } diff --git a/engines/wintermute/base/sound/base_sound_buffer.cpp b/engines/wintermute/base/sound/base_sound_buffer.cpp index 7666a441a3..85ba52e334 100644 --- a/engines/wintermute/base/sound/base_sound_buffer.cpp +++ b/engines/wintermute/base/sound/base_sound_buffer.cpp @@ -58,6 +58,7 @@ BaseSoundBuffer::BaseSoundBuffer(BaseGame *inGame) : BaseClass(inGame) { _file = nullptr; _privateVolume = 255; _volume = 255; + _pan = 0; _looping = false; _loopStart = 0; @@ -143,9 +144,9 @@ bool BaseSoundBuffer::play(bool looping, uint32 startSample) { _handle = new Audio::SoundHandle; if (_looping) { Audio::AudioStream *loopStream = new Audio::LoopingAudioStream(_stream, 0, DisposeAfterUse::NO); - g_system->getMixer()->playStream(_type, _handle, loopStream, -1, _volume, 0, DisposeAfterUse::YES); + g_system->getMixer()->playStream(_type, _handle, loopStream, -1, _volume, _pan, DisposeAfterUse::YES); } else { - g_system->getMixer()->playStream(_type, _handle, _stream, -1, _volume, 0, DisposeAfterUse::NO); + g_system->getMixer()->playStream(_type, _handle, _stream, -1, _volume, _pan, DisposeAfterUse::NO); } } @@ -268,8 +269,11 @@ bool BaseSoundBuffer::setLoopStart(uint32 pos) { ////////////////////////////////////////////////////////////////////////// bool BaseSoundBuffer::setPan(float pan) { + pan = MAX(pan, -1.0f); + pan = MIN(pan, 1.0f); + _pan = (int8)(pan * 127); if (_handle) { - g_system->getMixer()->setChannelBalance(*_handle, (int8)(pan * 127)); + g_system->getMixer()->setChannelBalance(*_handle, _pan); } return STATUS_OK; } diff --git a/engines/wintermute/base/sound/base_sound_buffer.h b/engines/wintermute/base/sound/base_sound_buffer.h index 53b86f64c6..c52b34fb23 100644 --- a/engines/wintermute/base/sound/base_sound_buffer.h +++ b/engines/wintermute/base/sound/base_sound_buffer.h @@ -93,6 +93,7 @@ private: bool _streamed; Common::SeekableReadStream *_file; int32 _volume; + int8 _pan; }; } // End of namespace Wintermute |