Ensure oldfadeamount is updated when fadeamount is

Like cutscene bars, I've added Graphics::setfade(), to ensure that no
deltaframe rendering glitches happen due to oldfadeamount not being
updated properly.

And indeed, this fixes a deltaframe rendering glitch that happens if you
return to the editor from playtesting on a faded-out screen, then fade
out again (by either re-entering playtesting and then cause a fadeout to
happen again, or by quitting from the editor afterwards). The same
glitch also happens outside of in-editor playtesting if you exit to the
menu while the screen is faded out.
This commit is contained in:
Misa
2021-03-19 23:09:11 -07:00
committed by Ethan Lee
parent f22756dd99
commit f6ecf83190
3 changed files with 11 additions and 5 deletions

View File

@@ -95,8 +95,7 @@ void Graphics::init(void)
//Fading stuff
SDL_memset(fadebars, 0, sizeof(fadebars));
fadeamount = 0;
oldfadeamount = 0;
setfade(0);
fademode = 0;
// initialize everything else to zero
@@ -1354,7 +1353,7 @@ void Graphics::processfade(void)
{
fadebars[i] = -int(fRandom() * 12) * 8;
}
fadeamount = 0;
setfade(0);
fademode = 3;
}
else if (fademode == 3)
@@ -1372,7 +1371,7 @@ void Graphics::processfade(void)
{
fadebars[i] = 320 + int(fRandom() * 12) * 8;
}
fadeamount = 416;
setfade(416);
fademode = 5;
}
else if (fademode == 5)
@@ -1386,6 +1385,12 @@ void Graphics::processfade(void)
}
}
void Graphics::setfade(const int amount)
{
fadeamount = amount;
oldfadeamount = amount;
}
void Graphics::drawmenu( int cr, int cg, int cb, bool levelmenu /*= false*/ )
{
for (size_t i = 0; i < game.menuoptions.size(); i++)