diff options
author | Bastien Bouclet | 2017-07-21 12:56:20 +0200 |
---|---|---|
committer | Bastien Bouclet | 2017-07-22 20:38:56 +0200 |
commit | 75040819c6642c304962d02ba646e04242cd4755 (patch) | |
tree | 26cc83e127cb0907259a24324e41517a2ff31b5f /engines/mohawk/myst_sound.h | |
parent | a2fc282e1c872a725f58b5d87d783191f1fe3987 (diff) | |
download | scummvm-rg350-75040819c6642c304962d02ba646e04242cd4755.tar.gz scummvm-rg350-75040819c6642c304962d02ba646e04242cd4755.tar.bz2 scummvm-rg350-75040819c6642c304962d02ba646e04242cd4755.zip |
MOHAWK: Myst: Rewrite the sound code
It now more closely matches the original. Effect sounds are now stopped
when resuming background sounds.
Fixes #9574, Fixes #9920.
Diffstat (limited to 'engines/mohawk/myst_sound.h')
-rw-r--r-- | engines/mohawk/myst_sound.h | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/engines/mohawk/myst_sound.h b/engines/mohawk/myst_sound.h index d5cd5413d1..71df23df39 100644 --- a/engines/mohawk/myst_sound.h +++ b/engines/mohawk/myst_sound.h @@ -28,14 +28,13 @@ #include "audio/mixer.h" -#include "mohawk/sound.h" - namespace Audio { class RewindableAudioStream; } namespace Mohawk { +struct CueList; class MohawkEngine_Myst; class MystSound { @@ -43,32 +42,38 @@ public: MystSound(MohawkEngine_Myst *vm); ~MystSound(); - // Generic sound functions - Audio::SoundHandle *playSound(uint16 id, byte volume = Audio::Mixer::kMaxChannelVolume, bool loop = false, CueList *cueList = NULL); - void stopSound(); - void stopSound(uint16 id); - bool isPlaying(uint16 id); - bool isPlaying(); - uint getNumSamplesPlayed(uint16 id); - - // Myst-specific sound functions - Audio::SoundHandle *replaceSoundMyst(uint16 id, byte volume = Audio::Mixer::kMaxChannelVolume, bool loop = false); - void replaceBackgroundMyst(uint16 id, uint16 volume = 0xFFFF); - void pauseBackgroundMyst(); - void resumeBackgroundMyst(); - void stopBackgroundMyst(); - void changeBackgroundVolumeMyst(uint16 vol); + // Effect channel + void playEffect(uint16 id, bool loop = false); + void stopEffect(); + bool isEffectPlaying(); + + // Background channel + void playBackground(uint16 id, uint16 volume = 0xFFFF); + void pauseBackground(); + void resumeBackground(); + void stopBackground(); + void changeBackgroundVolume(uint16 volume); + + // Speech channel + void playSpeech(uint16 id, CueList *cueList = nullptr); + bool isSpeechPlaying(); + uint getSpeechNumSamplesPlayed(); + void stopSpeech(); private: MohawkEngine_Myst *_vm; - Common::Array<SndHandle> _handles; - SndHandle *getHandle(); - Audio::RewindableAudioStream *makeAudioStream(uint16 id, CueList *cueList = NULL); + Audio::RewindableAudioStream *makeAudioStream(uint16 id, CueList *cueList = nullptr); uint16 convertMystID(uint16 id); - // Myst-specific - SndHandle _mystBackgroundSound; + Audio::SoundHandle _effectHandle; + int _speechSamplesPerSecond; + uint16 _effectId; + + Audio::SoundHandle _backgroundHandle; + uint16 _backgroundId; + + Audio::SoundHandle _speechHandle; }; } // End of namespace Mohawk |