PingusSoundReal::~PingusSoundReal()
{
  real_stop_music();
  SoundResMgr::free_sound_map();

  Mix_CloseAudio();
}
Exemple #2
0
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));
  }
}