diff options
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/world.cpp b/src/world.cpp index 2012d32..25b7d35 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -329,10 +329,7 @@ void World::update(Player *p,unsigned int delta){ p->loc.y += p->vel.y * delta; p->loc.x +=(p->vel.x * p->speed) * delta; - /*if(p->inv->usingi){ - p->inv->useItem(); - }*/ - + /* * Update coordinates of all entities except for structures. */ @@ -374,20 +371,20 @@ void World::update(Player *p,unsigned int delta){ } } -void World::setBGM(const char *path){ - if(!bgm) delete[] bgm; - if(path != NULL){ - bgm = new char[strlen(path) + 1]; - strcpy(bgm,path); - bgmObj = Mix_LoadMUS(bgm); - }else{ - bgm = new char[1]; - bgm[0] = '\0'; - } +void World::setBGM(std::string path){ + bgm = new char[path.size()]; + strcpy(bgm,path.c_str()); + bgmObj = Mix_LoadMUS(bgm); } void World::bgmPlay(World *prev){ - if(prev && strcmp(bgm,prev->bgm)){ + if(prev){ + if(bgm != prev->bgm){ + Mix_FadeOutMusic(800); + Mix_VolumeMusic(50); + Mix_PlayMusic(bgmObj,-1); // Loop infinitely + } + }else{ Mix_FadeOutMusic(800); Mix_VolumeMusic(50); Mix_PlayMusic(bgmObj,-1); // Loop infinitely @@ -1477,6 +1474,15 @@ char *currentXML = NULL; extern World *currentWorld; World *loadWorldFromXML(const char *path){ + if(currentXML){ + currentWorld->save(); + delete[] currentXML; + } + + return loadWorldFromXMLNoSave(path); +} + +World *loadWorldFromXMLNoSave(const char *path){ XMLDocument xml; XMLElement *wxml; @@ -1488,11 +1494,6 @@ World *loadWorldFromXML(const char *path){ unsigned int size = 5 + strlen(path); - if(currentXML){ - currentWorld->save(); - delete[] currentXML; - } - memset((currentXML = new char[size]),0,size); strcpy(currentXML,"xml/"); strcat(currentXML,path); |