diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index ccf9c7f4..811c1852 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -1334,7 +1334,7 @@ void Game::updatestate() } } - savestats(); + savestatsandsettings(); graphics.fademode = 2; music.fadeout(); @@ -3133,7 +3133,7 @@ void Game::updatestate() } - savestats(); + savestatsandsettings(); if (nodeathmode) { unlockAchievement("vvvvvvmaster"); //bloody hell @@ -4447,7 +4447,7 @@ void Game::unlocknum( int t ) } unlock[t] = true; - savestats(); + savestatsandsettings(); #endif } @@ -4474,7 +4474,7 @@ void Game::loadstats(ScreenSettings* screen_settings) { // Save unlock.vvv only. Maybe we have a settings.vvv laying around too, // and we don't want to overwrite that! - savestats(true); + savestats(); printf("No Stats found. Assuming a new player\n"); } @@ -4736,7 +4736,7 @@ void Game::deserializesettings(tinyxml2::XMLElement* dataNode, ScreenSettings* s } } -bool Game::savestats(const bool stats_only /*= true*/) +bool Game::savestats() { tinyxml2::XMLDocument doc; bool already_exists = FILESYSTEM_loadTiXml2Document("saves/unlock.vvv", doc); @@ -4812,20 +4812,22 @@ bool Game::savestats(const bool stats_only /*= true*/) serializesettings(dataNode); - bool success = FILESYSTEM_saveTiXml2Document("saves/unlock.vvv", doc); - - if (!stats_only) - { - success &= savesettings(); - } - - return success; + return FILESYSTEM_saveTiXml2Document("saves/unlock.vvv", doc); } -void Game::savestats_menu() +bool Game::savestatsandsettings() { - // Call Game::savestats(), but upon failure, go to the save error screen - if (!savestats() && !silence_settings_error) + const bool stats_saved = savestats(); + + const bool settings_saved = savesettings(); + + return stats_saved && settings_saved; // Not the same as `savestats() && savesettings()`! +} + +void Game::savestatsandsettings_menu() +{ + // Call Game::savestatsandsettings(), but upon failure, go to the save error screen + if (!savestatsandsettings() && !silence_settings_error) { createmenu(Menu::errorsavingsettings); map.nexttowercolour(); diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index da6c0c45..3e14549e 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -133,8 +133,7 @@ public: void loadstats(ScreenSettings* screen_settings); - bool savestats(const bool stats_only = false); - void savestats_menu(); + bool savestats(); void deletestats(); @@ -146,6 +145,10 @@ public: bool savesettings(); + bool savestatsandsettings(); + + void savestatsandsettings_menu(); + void deletesettings(); void deletequick(); diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index ba2ee1f5..afaeeb7b 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -390,12 +390,12 @@ void menuactionpress() game.createmenu(game.currentmenuname, true); game.currentmenuoption = 0; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 1: music.playef(11); graphics.screenbuffer->toggleStretchMode(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 2: // resize to nearest multiple @@ -403,7 +403,7 @@ void menuactionpress() { music.playef(11); graphics.screenbuffer->ResizeToNearestMultiple(); - game.savestats_menu(); + game.savestatsandsettings_menu(); } else { @@ -413,19 +413,19 @@ void menuactionpress() case 3: music.playef(11); graphics.screenbuffer->toggleLinearFilter(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 4: //change smoothing music.playef(11); graphics.screenbuffer->badSignalEffect= !graphics.screenbuffer->badSignalEffect; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 5: //toggle 30+ fps music.playef(11); game.over30mode = !game.over30mode; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 6: //toggle vsync @@ -433,7 +433,7 @@ void menuactionpress() #ifndef __HAIKU__ // FIXME: Remove after SDL VSync bug is fixed! -flibit graphics.screenbuffer->vsync = !graphics.screenbuffer->vsync; graphics.screenbuffer->resetRendererWorkaround(); - game.savestats_menu(); + game.savestatsandsettings_menu(); #endif break; default: @@ -480,7 +480,7 @@ void menuactionpress() music.playef(11); game.returnmenu(); map.nexttowercolour(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; } break; @@ -494,7 +494,7 @@ void menuactionpress() game.returnmenu(); game.currentmenuoption = 4; map.nexttowercolour(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 1: game.slowdown = 24; @@ -502,7 +502,7 @@ void menuactionpress() game.returnmenu(); game.currentmenuoption = 4; map.nexttowercolour(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 2: game.slowdown = 18; @@ -510,7 +510,7 @@ void menuactionpress() game.returnmenu(); game.currentmenuoption = 4; map.nexttowercolour(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 3: game.slowdown = 12; @@ -518,7 +518,7 @@ void menuactionpress() game.returnmenu(); game.currentmenuoption = 4; map.nexttowercolour(); - game.savestats_menu(); + game.savestatsandsettings_menu(); break; } break; @@ -536,31 +536,31 @@ void menuactionpress() SDL_ShowCursor(SDL_ENABLE); graphics.showmousecursor = true; } - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 1: // toggle unfocus pause game.disablepause = !game.disablepause; - game.savestats_menu(); + game.savestatsandsettings_menu(); music.playef(11); break; case 2: // toggle fake load screen game.skipfakeload = !game.skipfakeload; - game.savestats_menu(); + game.savestatsandsettings_menu(); music.playef(11); break; case 3: // toggle translucent roomname BG graphics.translucentroomname = !graphics.translucentroomname; - game.savestats_menu(); + game.savestatsandsettings_menu(); music.playef(11); break; case 4: // Glitchrunner mode music.playef(11); game.glitchrunnermode = !game.glitchrunnermode; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 5: //back @@ -576,7 +576,7 @@ void menuactionpress() case 0: //disable animated backgrounds game.colourblindmode = !game.colourblindmode; - game.savestats_menu(); + game.savestatsandsettings_menu(); graphics.towerbg.tdrawback = true; graphics.titlebg.tdrawback = true; music.playef(11); @@ -584,7 +584,7 @@ void menuactionpress() case 1: //disable screeneffects game.noflashingmode = !game.noflashingmode; - game.savestats_menu(); + game.savestatsandsettings_menu(); if (!game.noflashingmode) { music.playef(18); @@ -597,7 +597,7 @@ void menuactionpress() case 2: //disable text outline graphics.notextoutline = !graphics.notextoutline; - game.savestats_menu(); + game.savestatsandsettings_menu(); music.playef(11); break; case 3: @@ -612,7 +612,7 @@ void menuactionpress() else { map.invincibility = !map.invincibility; - game.savestats_menu(); + game.savestatsandsettings_menu(); } music.playef(11); } @@ -754,7 +754,7 @@ void menuactionpress() music.usingmmmmmm = !music.usingmmmmmm; music.playef(11); music.play(music.currentsong); - game.savestats(); + game.savestatsandsettings(); } offset += mmmmmm_offset; @@ -784,7 +784,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 0; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 1: //unlock 2 game.unlock[10] = true; @@ -792,7 +792,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 1; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 2: //unlock 3 game.unlock[11] = true; @@ -800,7 +800,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 2; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 3: //unlock 4 game.unlock[12] = true; @@ -808,7 +808,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 3; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 4: //unlock 5 game.unlock[13] = true; @@ -816,7 +816,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 4; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 5: //unlock 6 game.unlock[14] = true; @@ -824,7 +824,7 @@ void menuactionpress() music.playef(11); game.createmenu(Menu::unlockmenutrials, true); game.currentmenuoption = 5; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 6: //back //back @@ -852,7 +852,7 @@ void menuactionpress() game.unlock[7] = true; game.createmenu(Menu::unlockmenu, true); game.currentmenuoption = 1; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 2: //unlock no death mode @@ -861,7 +861,7 @@ void menuactionpress() game.unlocknotify[17] = true; game.createmenu(Menu::unlockmenu, true); game.currentmenuoption = 2; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 3: //unlock flip mode @@ -870,7 +870,7 @@ void menuactionpress() game.unlocknotify[18] = true; game.createmenu(Menu::unlockmenu, true); game.currentmenuoption = 3; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 4: //unlock jukebox @@ -878,7 +878,7 @@ void menuactionpress() game.stat_trinkets = 20; game.createmenu(Menu::unlockmenu, true); game.currentmenuoption = 4; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 5: //unlock secret lab @@ -887,7 +887,7 @@ void menuactionpress() game.unlocknotify[8] = true; game.createmenu(Menu::unlockmenu, true); game.currentmenuoption = 5; - game.savestats_menu(); + game.savestatsandsettings_menu(); break; default: //back @@ -1251,7 +1251,7 @@ void menuactionpress() { key.sensitivity = 0; } - game.savestats_menu(); + game.savestatsandsettings_menu(); break; case 5: diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index 6e14838f..a6661b93 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -432,7 +432,7 @@ void gamelogic() if (game.swnmessage == 0) { music.playef(25); - game.savestats(); + game.savestatsandsettings(); } game.swnmessage = 1; } diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index 8fe056c9..17c59726 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -3431,7 +3431,7 @@ void scriptclass::startgamemode( int t ) } #endif case 100: - game.savestats(); + game.savestatsandsettings(); SDL_Quit(); exit(0); diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index 664d9abe..a707d684 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -402,7 +402,7 @@ int main(int argc, char *argv[]) deltaloop(); } - game.savestats(); + game.savestatsandsettings(); NETWORK_shutdown(); SDL_Quit(); FILESYSTEM_deinit(); @@ -641,7 +641,7 @@ void inline fixedloop() if (game.savemystats) { game.savemystats = false; - game.savestats(); + game.savestatsandsettings(); } //Mute button