aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.cpp')
-rw-r--r--src/world.cpp41
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);