diff options
Diffstat (limited to 'simon/sound.cpp')
-rw-r--r-- | simon/sound.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/simon/sound.cpp b/simon/sound.cpp index cc9fd268c0..5c02510700 100644 --- a/simon/sound.cpp +++ b/simon/sound.cpp @@ -241,6 +241,7 @@ Sound::Sound(const byte game, const GameSpecificSettings *gss, SoundMixer *mixer _last_voice_file = 0; _offsets = 0; + _effects_file = false; _voice_file = false; _ambient_playing = 0; @@ -317,6 +318,7 @@ Sound::Sound(const byte game, const GameSpecificSettings *gss, SoundMixer *mixer if (!_effects && gss->mp3_effects_filename && gss->mp3_effects_filename[0]) { file->open(gss->mp3_effects_filename); if (file->isOpen()) { + _effects_file = true; _effects = new MP3Sound(_mixer, file); } } @@ -325,6 +327,7 @@ Sound::Sound(const byte game, const GameSpecificSettings *gss, SoundMixer *mixer if (!_effects && gss->vorbis_effects_filename && gss->vorbis_effects_filename[0]) { file->open(gss->vorbis_effects_filename); if (file->isOpen()) { + _effects_file = true; _effects = new VorbisSound(_mixer, file); } } @@ -333,6 +336,7 @@ Sound::Sound(const byte game, const GameSpecificSettings *gss, SoundMixer *mixer if (!_effects && gss->flac_effects_filename && gss->flac_effects_filename[0]) { file->open(gss->flac_effects_filename); if (file->isOpen()) { + _effects_file = true; _effects = new FlacSound(_mixer, file); } } @@ -340,6 +344,7 @@ Sound::Sound(const byte game, const GameSpecificSettings *gss, SoundMixer *mixer if (!_effects && gss->voc_effects_filename && gss->voc_effects_filename[0]) { file->open(gss->voc_effects_filename); if (file->isOpen()) { + _effects_file = true; _effects = new VocSound(_mixer, file); } } @@ -355,6 +360,9 @@ Sound::~Sound() { } void Sound::readSfxFile(const char *filename) { + if (_effects_file) + return; + stopAll(); File *file = new File(); |