diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-09-05 19:18:46 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-09-05 19:18:46 +0300 |
commit | af4727577f39720564b4339de267aa0aae7af4a5 (patch) | |
tree | de1d0cb7328c1d72405600870742c295c352fcaa | |
parent | 0c0ba36a78c155a120ed4b4ad7791341d93d5dd8 (diff) | |
download | manaplus-af4727577f39720564b4339de267aa0aae7af4a5.tar.gz manaplus-af4727577f39720564b4339de267aa0aae7af4a5.tar.bz2 manaplus-af4727577f39720564b4339de267aa0aae7af4a5.tar.xz manaplus-af4727577f39720564b4339de267aa0aae7af4a5.zip |
Fix multiply new message sounds at same time.
-rw-r--r-- | src/resources/soundeffect.cpp | 2 | ||||
-rw-r--r-- | src/resources/soundeffect.h | 3 | ||||
-rw-r--r-- | src/sound.cpp | 9 | ||||
-rw-r--r-- | src/sound.h | 1 |
4 files changed, 10 insertions, 5 deletions
diff --git a/src/resources/soundeffect.cpp b/src/resources/soundeffect.cpp index 49e7adc31..de11a8786 100644 --- a/src/resources/soundeffect.cpp +++ b/src/resources/soundeffect.cpp @@ -53,7 +53,7 @@ Resource *SoundEffect::load(void *buffer, unsigned bufferSize) } } -bool SoundEffect::play(int loops, int volume) +bool SoundEffect::play(int loops, int volume, int channel) { Mix_VolumeChunk(mChunk, volume); diff --git a/src/resources/soundeffect.h b/src/resources/soundeffect.h index 80f826646..fdd4bd275 100644 --- a/src/resources/soundeffect.h +++ b/src/resources/soundeffect.h @@ -54,11 +54,12 @@ class SoundEffect : public Resource * * @param loops Number of times to repeat the playback. * @param volume Sample playback volume. + * @param channel Sample playback channel. * * @return <code>true</code> if the playback started properly * <code>false</code> otherwise. */ - virtual bool play(int loops, int volume); + virtual bool play(int loops, int volume, int channel = -1); protected: /** diff --git a/src/sound.cpp b/src/sound.cpp index 0a3c75d11..40c929824 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -54,7 +54,8 @@ Sound::Sound(): mMusic(0), mPlayBattle(false), mPlayGui(false), - mPlayMusic(false) + mPlayMusic(false), + mGuiChannel(-1) { // This set up our callback function used to // handle fade outs endings. @@ -353,8 +354,10 @@ void Sound::playGuiSfx(const std::string &path) paths.getStringValue("sfx") + path); if (sample) { - logger->log("Sound::playSfx() Playing: %s", path.c_str()); - sample->play(0, 120); + logger->log("Sound::playGuiSfx() Playing: %s", path.c_str()); + int ret = sample->play(0, 120, mGuiChannel); + if (ret != -1) + mGuiChannel = ret; } } diff --git a/src/sound.h b/src/sound.h index 625dd0ea8..16fff161b 100644 --- a/src/sound.h +++ b/src/sound.h @@ -145,6 +145,7 @@ class Sound : public ConfigListener bool mPlayBattle; bool mPlayGui; bool mPlayMusic; + int mGuiChannel; }; extern Sound sound; |