PingusSoundReal::~PingusSoundReal() { real_stop_music(); SoundResMgr::free_sound_map(); Mix_CloseAudio(); }
void PingusSoundReal::real_play_music (const std::string & arg_filename, float volume, bool loop) { std::string filename; filename = arg_filename; if (!globals::music_enabled) return; pout(PINGUS_DEBUG_SOUND) << "PingusSoundReal: Playing music: " << filename << std::endl; real_stop_music(); music_sample = Mix_LoadMUS(filename.c_str()); if (!music_sample) { perr(PINGUS_DEBUG_SOUND) << "Can't load music: " << filename << "' -- skipping\n" << " Mix_Error: " << Mix_GetError() << std::endl; return; } Mix_VolumeMusic(static_cast<int>(volume * 0.5f * MIX_MAX_VOLUME)); // FIXME: music_volume Mix_PlayMusic(music_sample, loop ? -1 : 0); }
void PingusSoundReal::real_play_music(const std::string& filename, float volume, bool loop) { if (globals::music_enabled && m_master_volume > 0 && m_music_volume > 0) { log_info("PingusSoundReal: Playing music: " << filename); real_stop_music(); music_sample = Mix_LoadMUS(filename.c_str()); if (!music_sample) { log_error("Can't load music: " << filename << "' -- skipping\n" << " Mix_Error: " << Mix_GetError()); return; } Mix_PlayMusic(music_sample, loop ? -1 : 0); Mix_VolumeMusic(static_cast<int>(MIX_MAX_VOLUME * volume * m_music_volume * m_master_volume)); } }