1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-25 05:58:30 +02:00

Prevent user-initiated map menu changes during menu animations

This makes it so it's not even possible to stay on the TELEPORTERMODE
screen by opening the map while it's being brought down. It also makes
it so the map animation is able to be canceled when being brought up
just by opening the map and closing it.

Fixes #833.
This commit is contained in:
Misa 2021-09-02 12:21:46 -07:00
parent e9ec34e1f5
commit 5b10164659
4 changed files with 14 additions and 7 deletions

View File

@ -6857,8 +6857,15 @@ void Game::unlockAchievement(const char *name) {
#endif
}
void Game::mapmenuchange(const int newgamestate)
void Game::mapmenuchange(const int newgamestate, const bool user_initiated)
{
if (user_initiated
&& graphics.menuoffset > 0
&& graphics.menuoffset < (map.extrarow ? 230 : 240))
{
return;
}
prevgamestate = gamestate;
gamestate = newgamestate;
graphics.resumegamemode = false;

View File

@ -245,7 +245,7 @@ public:
int tapleft, tapright;
//Menu interaction stuff
void mapmenuchange(const int newgamestate);
void mapmenuchange(const int newgamestate, const bool user_initiated);
bool mapheld;
int menupage;
int lastsaved;

View File

@ -2128,7 +2128,7 @@ void gameinput(void)
else if (game.companion == 0)
{
//Alright, normal teleporting
game.mapmenuchange(TELEPORTERMODE);
game.mapmenuchange(TELEPORTERMODE, true);
game.useteleporter = true;
game.initteleportermode();
@ -2315,7 +2315,7 @@ void gameinput(void)
//quitting the super gravitron
game.mapheld = true;
//Quit menu, same conditions as in game menu
game.mapmenuchange(MAPMODE);
game.mapmenuchange(MAPMODE, true);
game.gamesaved = false;
game.gamesavefailed = false;
game.menupage = 20; // The Map Page
@ -2335,7 +2335,7 @@ void gameinput(void)
else
{
//Normal map screen, do transition later
game.mapmenuchange(MAPMODE);
game.mapmenuchange(MAPMODE, true);
map.cursordelay = 0;
map.cursorstate = 0;
game.gamesaved = false;
@ -2356,7 +2356,7 @@ void gameinput(void)
{
game.mapheld = true;
//Quit menu, same conditions as in game menu
game.mapmenuchange(MAPMODE);
game.mapmenuchange(MAPMODE, true);
game.gamesaved = false;
game.gamesavefailed = false;
game.menupage = 30; // Pause screen

View File

@ -1115,7 +1115,7 @@ void scriptclass::run(void)
{
if (words[1] == "teleporter")
{
game.mapmenuchange(TELEPORTERMODE);
game.mapmenuchange(TELEPORTERMODE, false);
game.useteleporter = false; //good heavens don't actually use it
}