aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.cpp')
-rw-r--r--src/world.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/world.cpp b/src/world.cpp
index ff4c461..5f8d44c 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -65,6 +65,7 @@ void World::load(FILE *s){
World::World(void){
bgm = NULL;
+ bgmObj = NULL;
/*
* Nullify pointers to other worlds.
@@ -286,24 +287,29 @@ void World::update(Player *p,unsigned int delta){
void World::setBGM(const char *path){
if(!bgm) delete[] bgm;
- if(!path){
+ //if(!path){
bgm = new char[strlen(path) + 1];
strcpy(bgm,path);
bgmObj = Mix_LoadMUS(bgm);
- if(!bgmObj){
- std::cout<<"Failed to load song file "<<path<<": "<<Mix_GetError()<<std::endl;
- }
- }
+ //}else std::cout<<path;
}
+static Mix_Music *bgmC;
+
void World::bgmPlay(void){
- Mix_VolumeMusic(15);
- Mix_PlayMusic(bgmObj,-1); // Loop infinitely
+ if(bgmObj && bgmC != bgmObj){
+ Mix_VolumeMusic(15);
+ Mix_PlayMusic(bgmObj,-1); // Loop infinitely
+ bgmC = bgmObj;
+ }
}
void World::bgmStop(void){
- Mix_FreeMusic(bgmObj);
- bgmObj = NULL;
+ if(bgmObj){
+ if(bgmC != bgmObj){
+ Mix_FreeMusic(bgmObj);
+ }
+ }
}
int worldShade = 0;