1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-18 10:38:31 +02:00

Improve quit-to-menu menu handling

This stabilizes the code that handles the menu that you land on if you
press Esc and quit to the menu.

Instead of using Game::returnmenu(), we now use the new function
Game::returntomenu() to clearly express intent that we want to return to
a specific menu. So I've added another kludge variable
Game::wasinintermission for the was-in-intermission case.

Also, I made it so that if you didn't have a main game telesave or
quicksave, you just get brought back to the main menu. Because you
shouldn't be able to go to the play menu without a quicksave or
telesave.
This commit is contained in:
Misa 2020-04-25 19:21:23 -07:00 committed by Ethan Lee
parent 536184f394
commit 9fca3e111f
4 changed files with 22 additions and 6 deletions

View File

@ -1345,11 +1345,28 @@ void Game::updatestate()
//or "who do you want to play the level with?"
//or "do you want cutscenes?"
//or the confirm-load-quicksave menu
if ((!wasintimetrial && !wasincustommode) || currentmenuname == Menu::quickloadlevel)
if (wasintimetrial)
{
returnmenu();
returntomenu(Menu::timetrials);
}
else if (wasinintermission)
{
returntomenu(Menu::intermissionmenu);
}
else if (wasincustommode)
{
returntomenu(Menu::levellist);
}
else if (game.telesummary != "" || game.quicksummary != "")
{
returntomenu(Menu::play);
}
else
{
createmenu(Menu::mainmenu);
}
wasintimetrial = false;
wasinintermission = false;
wasincustommode = false;
state = 0;
break;

View File

@ -236,6 +236,7 @@ public:
//Menu kludge...
bool wasintimetrial;
bool wasinintermission;
bool wasincustommode;

View File

@ -1961,6 +1961,7 @@ void mapinput()
FillRect(graphics.tempBuffer, 0x000000);
if (game.intimetrial || game.insecretlab || game.nodeathmode) game.menukludge = true;
game.wasintimetrial = game.intimetrial;
game.wasinintermission = game.inintermission;
game.wasincustommode = map.custommode;
script.hardreset();
if(graphics.setflipmode) graphics.flipmode = true;

View File

@ -3471,10 +3471,7 @@ void editorlogic()
map.nexttowercolour();
ed.settingsmod=false;
graphics.backgrounddrawn=false;
//Do returnmenu twice because we have two menus:
//the main editor menu and the confirm save&quit menu
game.returnmenu();
game.returnmenu();
game.returntomenu(Menu::playerworlds);
}
}