1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-23 01:59:43 +01:00

Fix cycling title BG more than once per frame

This can happen if you select an option in a menu that (A) returns to
the previous menu and (B) saves settings. If the settings save fails,
this will create another menu on the same frame that cycles the tower BG
after it's already been cycled for that frame. Examples are the slowdown
and glitchrunner menus.

I could fix this by creating a new function that copy-pastes all of
Game::savestatsandsettings_menu() except for the map.nexttowercolour()
at the end. But that's copy-pasting code.

Instead what I've done is added a variable to signal if the color has
already been cycled this frame, so we don't cycle it again. This also
covers cases of possible double-cycling in the future as well.
This commit is contained in:
Misa 2021-08-05 16:38:06 -07:00 committed by Ethan Lee
parent b9202dee8b
commit 45dd7c39b7
3 changed files with 11 additions and 1 deletions

View file

@ -82,6 +82,8 @@ mapclass::mapclass(void)
cameraseek = 0; cameraseek = 0;
minitowermode = false; minitowermode = false;
roomtexton = false; roomtexton = false;
nexttowercolour_set = false;
} }
//Areamap starts at 100,100 and extends 20x20 //Areamap starts at 100,100 and extends 20x20
@ -631,6 +633,13 @@ void mapclass::updatetowerglow(TowerBG& bg_obj)
void mapclass::nexttowercolour(void) void mapclass::nexttowercolour(void)
{ {
/* Prevent cycling title BG more than once per frame. */
if (nexttowercolour_set)
{
return;
}
nexttowercolour_set = true;
graphics.titlebg.colstate+=5; graphics.titlebg.colstate+=5;
if (graphics.titlebg.colstate >= 30) graphics.titlebg.colstate = 0; if (graphics.titlebg.colstate >= 30) graphics.titlebg.colstate = 0;

View file

@ -55,6 +55,7 @@ public:
void updatetowerglow(TowerBG& bg_obj); void updatetowerglow(TowerBG& bg_obj);
void nexttowercolour(void); void nexttowercolour(void);
bool nexttowercolour_set;
void settowercolour(int t); void settowercolour(int t);

View file

@ -724,7 +724,7 @@ static void unfocused_run(void)
static void focused_begin(void) static void focused_begin(void)
{ {
/* no-op. */ map.nexttowercolour_set = false;
} }
static void focused_end(void) static void focused_end(void)