From 85f851bc1729a1bcd78aeb8e98f73dab0e8ecdfc Mon Sep 17 00:00:00 2001 From: Misa Date: Sun, 26 Apr 2020 13:09:56 -0700 Subject: [PATCH] Make "start game" goto play menu if any unlocks, even if saves deleted This commit fixes a slightly frustrating thing where if you start a new game, and then exit before saving, "start game" will always take you to a new game, even though you have unlocked things like the Secret Lab or Time Trials. Now, if you select "new game" (only possible if you have something unlocked), then quit before saving, "start game" will still take you to the play menu, but "continue" is replaced with "start" and "new game" is gone. --- desktop_version/src/Game.cpp | 16 +++++++++++++--- desktop_version/src/Input.cpp | 20 ++++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index f2189baf..5a516976 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -1357,7 +1357,7 @@ void Game::updatestate() { returntomenu(Menu::levellist); } - else if (game.telesummary != "" || game.quicksummary != "") + else if (game.telesummary != "" || game.quicksummary != "" || anything_unlocked()) { returntomenu(Menu::play); } @@ -7025,14 +7025,24 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) } else { - option("continue"); + if (telesummary != "" || quicksummary != "") + { + option("continue"); + } + else + { + option("start"); + } //ok, secret lab! no notification, but test: if (unlock[8]) { option("secret lab", !map.invincibility && game.slowdown == 30); } option("play modes"); - option("new game"); + if (telesummary != "" || quicksummary != "") + { + option("new game"); + } option("return"); if (unlock[8]) { diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index 7b79c583..b003ceb4 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -134,7 +134,7 @@ void menuactionpress() #if !defined(MAKEANDPLAY) case 0: //Play - if (game.telesummary == "" && game.quicksummary == "") + if (game.telesummary == "" && game.quicksummary == "" && !game.anything_unlocked()) { //No saves exist, just start a new game game.mainmenu = 0; @@ -948,12 +948,20 @@ void menuactionpress() case Menu::play: { //Do we have the Secret Lab option? - int offset = game.unlock[8] ? 0 : -1; + int sloffset = game.unlock[8] ? 0 : -1; + //Do we have a telesave or quicksave? + int ngoffset = game.telesummary != "" || game.quicksummary != "" ? 0 : -1; if (game.currentmenuoption == 0) { //continue //right, this depends on what saves you've got - if (game.telesummary == "") + if (game.telesummary == "" && game.quicksummary == "") + { + //You have no saves but have something unlocked, or you couldn't have gotten here + game.mainmenu = 0; + graphics.fademode = 2; + } + else if (game.telesummary == "") { //You at least have a quicksave, or you couldn't have gotten here game.mainmenu = 2; @@ -983,21 +991,21 @@ void menuactionpress() music.playef(2); } } - else if (game.currentmenuoption == offset+2) + else if (game.currentmenuoption == sloffset+2) { //play modes music.playef(11); game.createmenu(Menu::playmodes); map.nexttowercolour(); } - else if (game.currentmenuoption == offset+3) + else if (game.currentmenuoption == sloffset+3 && (game.telesummary != "" || game.quicksummary != "")) { //newgame music.playef(11); game.createmenu(Menu::newgamewarning); map.nexttowercolour(); } - else if (game.currentmenuoption == offset+4) + else if (game.currentmenuoption == sloffset+ngoffset+4) { //back music.playef(11);