From 3a2265ef0d091a7f920e7a2db1fec762c237f315 Mon Sep 17 00:00:00 2001 From: Misa Date: Wed, 11 Aug 2021 20:26:58 -0700 Subject: [PATCH] Add being able to delete a custom level quicksave Custom level quicksaves are NOT affected by the clear data menu, so the player should be able to delete quicksaves this way. The quicksave confirmation menu now has an extra option to delete the save (and that option also has its own confirmation menu before deleting). --- desktop_version/src/Game.cpp | 16 ++++++++++++++++ desktop_version/src/Game.h | 3 +++ desktop_version/src/Input.cpp | 22 ++++++++++++++++++++++ desktop_version/src/Render.cpp | 4 ++++ 4 files changed, 45 insertions(+) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index c9793ed8..76d7c9e4 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -6033,9 +6033,15 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) case Menu::quickloadlevel: option("continue from save"); option("start from beginning"); + option("delete save"); option("back to levels"); menuyoff = -30; break; + case Menu::deletequicklevel: + option("no! don't delete"); + option("yes, delete save"); + menuyoff = 64; + break; case Menu::youwannaquit: option("yes, quit"); option("no, return"); @@ -6537,6 +6543,16 @@ void Game::deletetele(void) telesummary = ""; } +void Game::customdeletequick(const std::string& file) +{ + const std::string path = "saves/" + file.substr(7) + ".vvv"; + + if (!FILESYSTEM_delete(path.c_str())) + { + printf("Error deleting %s\n", path.c_str()); + } +} + void Game::swnpenalty(void) { //set the SWN clock back to the closest 5 second interval diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index 07a0bd8b..310403b0 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -32,6 +32,7 @@ namespace Menu playerworlds, levellist, quickloadlevel, + deletequicklevel, youwannaquit, errornostart, errorsavingsettings, @@ -197,6 +198,8 @@ public: void customloadquick(std::string savfile); void loadquick(void); + void customdeletequick(const std::string& file); + void loadsummary(void); void readmaingamesave(tinyxml2::XMLDocument& doc); diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index 99feaa25..84c77b0a 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -473,6 +473,11 @@ static void menuactionpress(void) startmode(22); break; case 2: + music.playef(11); + game.createmenu(Menu::deletequicklevel); + map.nexttowercolour(); + break; + default: music.playef(11); game.returnmenu(); map.nexttowercolour(); @@ -480,6 +485,23 @@ static void menuactionpress(void) } break; #if !defined(NO_CUSTOM_LEVELS) + case Menu::deletequicklevel: + switch (game.currentmenuoption) + { + default: + music.playef(11); + game.returnmenu(); + break; + case 1: + game.customdeletequick(ed.ListOfMetaData[game.playcustomlevel].filename); + game.returntomenu(Menu::levellist); + game.flashlight = 5; + game.screenshake = 15; + music.playef(23); + break; + } + map.nexttowercolour(); + break; case Menu::playerworlds: #if defined(NO_EDITOR) #define OFFSET -1 diff --git a/desktop_version/src/Render.cpp b/desktop_version/src/Render.cpp index 08fa3f3e..75333a19 100644 --- a/desktop_version/src/Render.cpp +++ b/desktop_version/src/Render.cpp @@ -546,6 +546,10 @@ static void menurender(void) graphics.Print( -1, 100, "Are you sure you want to", tr, tg, tb, true); graphics.Print( -1, 110, "delete all your saved data?", tr, tg, tb, true); break; + case Menu::deletequicklevel: + graphics.Print(-1, 100, "Are you sure you want to", tr, tg, tb, true); + graphics.Print(-1, 110, "delete your quicksave?", tr, tg, tb, true); + break; case Menu::startnodeathmode: graphics.Print( -1, 45, "Good luck!", tr, tg, tb, true); graphics.Print( -1, 80, "You cannot save in this mode.", tr, tg, tb, true);