From ba7df965e73e121820f20e3a0e57631d078c11db Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 12 Feb 2016 08:47:15 -0500 Subject: more saving/loading --- src/world.cpp | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'src/world.cpp') diff --git a/src/world.cpp b/src/world.cpp index 6118851..2189007 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -284,10 +284,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. */ @@ -329,20 +326,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 @@ -1431,6 +1428,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; @@ -1442,11 +1448,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); -- cgit v1.2.3 From 0d77d11b708e57546d8267e957230c30bc5d048c Mon Sep 17 00:00:00 2001 From: drumsetmonkey Date: Fri, 19 Feb 2016 00:12:50 -0500 Subject: Everything changes based off of master volume, volume updates in menu --- include/ui.h | 2 -- main.cpp | 2 -- src/config.cpp | 19 ++++++++----------- src/ui.cpp | 15 ++------------- src/world.cpp | 4 ++-- 5 files changed, 12 insertions(+), 30 deletions(-) (limited to 'src/world.cpp') diff --git a/include/ui.h b/include/ui.h index 38a4932..ccc16af 100644 --- a/include/ui.h +++ b/include/ui.h @@ -158,8 +158,6 @@ namespace ui { * Draw various menu items */ void quitGame(); - void quitMenu(); - void optionsMenuF(); void drawMenu(Menu* menu); diff --git a/main.cpp b/main.cpp index 19fe8d4..805fa00 100644 --- a/main.cpp +++ b/main.cpp @@ -377,8 +377,6 @@ int main(/*int argc, char *argv[]*/){ delete[] shaderSource; glEnable(GL_MULTISAMPLE); - - Mix_Volume(0,VOLUME_MASTER); /* * Create all the worlds, entities, mobs, and the player. This function is defined in diff --git a/src/config.cpp b/src/config.cpp index efa2523..72a071d 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -49,25 +49,22 @@ void readConfig(){ if(vol->FirstChildElement("sfx")->QueryFloatAttribute("volume",&fval) == XML_NO_ERROR) VOLUME_SFX = fval; else VOLUME_SFX = 50; - - Mix_Volume(0,VOLUME_MASTER); - Mix_Volume(1,VOLUME_SFX); - Mix_VolumeMusic(VOLUME_MUSIC); - + ui::initFonts(); ui::setFontFace(xml.FirstChildElement("font")->Attribute("path")); + updateConfig(); } void updateConfig(){ - vol->FirstChildElement("master")->SetAttribute("volume",VOLUME_MASTER); - vol->FirstChildElement("music")->SetAttribute("volume",VOLUME_MUSIC); - vol->FirstChildElement("sfx")->SetAttribute("volume", VOLUME_SFX); - Mix_Volume(0,VOLUME_MASTER); - Mix_Volume(1,VOLUME_SFX); - Mix_VolumeMusic(VOLUME_MUSIC); + Mix_Volume(1,VOLUME_SFX * (VOLUME_MASTER/100.0f)); + Mix_VolumeMusic(VOLUME_MUSIC * (VOLUME_MASTER/100.0f)); } void saveConfig(){ + vol->FirstChildElement("master")->SetAttribute("volume",VOLUME_MASTER); + vol->FirstChildElement("music")->SetAttribute("volume",VOLUME_MUSIC); + vol->FirstChildElement("sfx")->SetAttribute("volume", VOLUME_SFX); + xml.SaveFile("config/settings.xml", false); } diff --git a/src/ui.cpp b/src/ui.cpp index 3d635ab..2d00453 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -648,11 +648,7 @@ namespace ui { updateConfig(); saveConfig(); } - - void quitMenu(){ - currentMenu = NULL; - } - + menuItem createButton(vec2 l, dim2 d, Color c, const char* t, menuFunc f){ menuItem temp; temp.member = 0; @@ -717,20 +713,13 @@ namespace ui { return temp; } - char* stradd(const char* a, const char* b){ - size_t len = strlen(a) + strlen(b); - char *ret = (char*)malloc(len * sizeof(char) + 1); - *ret = '\0'; - - return strcat(strcat(ret,a),b); - } - /* * Draws the menu */ void drawMenu(Menu *menu){ setFontSize(24); + updateConfig(); SDL_Event e; mouse.x=premouse.x+offset.x-(SCREEN_WIDTH/2); diff --git a/src/world.cpp b/src/world.cpp index 25b7d35..51efaf2 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -381,12 +381,12 @@ void World::bgmPlay(World *prev){ if(prev){ if(bgm != prev->bgm){ Mix_FadeOutMusic(800); - Mix_VolumeMusic(50); + //Mix_VolumeMusic(50); Mix_PlayMusic(bgmObj,-1); // Loop infinitely } }else{ Mix_FadeOutMusic(800); - Mix_VolumeMusic(50); + //Mix_VolumeMusic(50); Mix_PlayMusic(bgmObj,-1); // Loop infinitely } } -- cgit v1.2.3