/** * Play sound once. * @param name sound name * @param distance mag2 distance */ void SDLSound::playAmbientSound(const char* name, long distance) { SoundData *sdata = findChunk(name); if (sdata) { if ( sdata->last_played.isTimeOut() ) { int oldVolume = Mix_VolumeChunk(sdata->getData(), getSoundVolume(distance)); if (Mix_PlayChannel(-1, sdata->getData(), 0) == -1) { //LOG (("Couldn't play sound '%s': %s", name, Mix_GetError())); } Mix_VolumeChunk(sdata->getData(), oldVolume); sdata->last_played.reset(); } else { // LOGGER.debug("Skipped ambient sound '%s' due to timeout", name); } } }
/** * Play sound repeatedly. * @param name sound name * @return the channel the sample is played on. On any errors, -1 is returned. */ int SDLSound::playSoundRepeatedly(const char* name) { int channel = -1; SoundData *sdata = findChunk(name); if (sdata) { if ((channel = Mix_PlayChannel(-1, sdata->getData(), -1)) == -1) { LOG (("Couldn't play sound '%s': %s", name, Mix_GetError())); } } return channel; }
/** * Play sound once. * @param name sound name */ void SDLSound::playSound(const char* name) { SoundData *sdata = findChunk(name); if (sdata) { if ( sdata->last_played.isTimeOut() ) { if (Mix_PlayChannel(-1, sdata->getData(), 0) == -1) { //LOG (("Couldn't play sound '%s': %s", name, Mix_GetError())); } sdata->last_played.reset(); } else { // LOGGER.debug("Skipped sound '%s' due to timeout", name); } } }