mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-23 10:09:43 +01: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:
parent
536184f394
commit
9fca3e111f
4 changed files with 22 additions and 6 deletions
|
@ -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;
|
||||
|
|
|
@ -236,6 +236,7 @@ public:
|
|||
|
||||
//Menu kludge...
|
||||
bool wasintimetrial;
|
||||
bool wasinintermission;
|
||||
bool wasincustommode;
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue