// // SetVolume // // Sets the current redbook audio volume // void SetVolume(F32 volume) { if (initialized && driver) { AIL_redbook_set_volume ( driver, Clamp<S32>(MIN_VOLUME, S32((volume * F32(MAX_VOLUME)) + 0.5F), MAX_VOLUME) ); } }
void SoundManager::SetVolume(const SOUNDTYPE &type, const uint32 &volume) { CivSound *sound; Assert(volume >= 0); Assert(volume <= 10); if (m_noSound) return; switch (type) { case SOUNDTYPE_SFX: m_sfxVolume = volume; m_soundWalker->SetList(m_sfxSounds); while (m_soundWalker->IsValid()) { sound = m_soundWalker->GetObj(); sound->SetVolume(volume); m_soundWalker->Next(); } break; case SOUNDTYPE_VOICE: m_voiceVolume = volume; m_soundWalker->SetList(m_voiceSounds); while (m_soundWalker->IsValid()) { sound = m_soundWalker->GetObj(); sound->SetVolume(volume); m_soundWalker->Next(); } break; case SOUNDTYPE_MUSIC: m_musicVolume = volume; #if !defined(USE_SDL) if (m_redbook) AIL_redbook_set_volume(m_redbook, (sint32)((double)volume * 12.7)); #else if (m_cdrom) { // TODO: found nothing in reference } #endif break; } }