- added geometry option which allows SuperTux to run at any resolution
[supertux.git] / lib / audio / sound_manager.cpp
index 344035b..2144bba 100644 (file)
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+#include <config.h>
+
 #include <cmath>
 #include <cassert>
 
-#include "../audio/sound_manager.h"
-#include "../audio/musicref.h"
-#include "../app/globals.h"
-#include "../app/setup.h"
-#include "../special/moving_object.h"
+#include "audio/sound_manager.h"
+#include "audio/musicref.h"
+#include "app/globals.h"
+#include "app/setup.h"
+#include "special/moving_object.h"
 
 using namespace SuperTux;
 
 SoundManager* SoundManager::instance_ = 0;
 
 SoundManager::SoundManager()
-  : current_music(0), m_music_enabled(true) , m_sound_enabled(true) , audio_device(true)
+  : current_music(0), m_music_enabled(true) , m_sound_enabled(true),
+    audio_device(true)
 {
 }
 
@@ -40,8 +43,7 @@ SoundManager::~SoundManager()
   if(audio_device)
     Mix_HaltMusic();
 
-sounds.clear();
-destroy_instance();
+  sounds.clear();
 }
 
 void
@@ -70,7 +72,7 @@ SoundManager::play_sound(Mix_Chunk* sound, const Vector& pos, const Vector& pos2
   // TODO make sure this formula is good
   float distance 
     = pos2.x- pos.x;
-  int loud = int(255.0/float(screen->w*2) * fabsf(distance));
+  int loud = int(255.0/float(SCREEN_WIDTH*2) * fabsf(distance));
   if(loud > 255)
     return;
 
@@ -182,7 +184,8 @@ SoundManager::enable_music(bool enable)
   if(m_music_enabled == false) {
     Mix_HaltMusic();
   } else {
-    Mix_PlayMusic(current_music->music, -1);
+    if(current_music)
+      Mix_PlayMusic(current_music->music, -1);
   }
 }