Don't stop the automap (just restart it instead.)

This commit is contained in:
Jaime Passos 2020-01-26 23:12:28 -03:00
parent dd8166ca5f
commit 8f3855d09f
3 changed files with 25 additions and 9 deletions

View file

@ -345,16 +345,22 @@ static void AM_initVariables(void)
old_m_h = m_h; old_m_h = m_h;
} }
//
// Called when the screen size changed.
//
static void AM_FrameBufferInit(void)
{
f_x = f_y = 0;
f_w = vid.width;
f_h = vid.height;
}
// //
// should be called at the start of every level // should be called at the start of every level
// right now, i figure it out myself // right now, i figure it out myself
// //
static void AM_LevelInit(void) static void AM_LevelInit(void)
{ {
f_x = f_y = 0;
f_w = vid.width;
f_h = vid.height;
AM_findMinMaxBoundaries(); AM_findMinMaxBoundaries();
scale_mtof = FixedDiv(min_scale_mtof*10, 7*FRACUNIT); scale_mtof = FixedDiv(min_scale_mtof*10, 7*FRACUNIT);
if (scale_mtof > max_scale_mtof) if (scale_mtof > max_scale_mtof)
@ -376,7 +382,7 @@ void AM_Stop(void)
* *
* \sa AM_Stop * \sa AM_Stop
*/ */
static inline void AM_Start(void) void AM_Start(void)
{ {
static INT32 lastlevel = -1; static INT32 lastlevel = -1;
@ -385,8 +391,12 @@ static inline void AM_Start(void)
am_stopped = false; am_stopped = false;
if (lastlevel != gamemap || am_recalc) // screen size changed if (lastlevel != gamemap || am_recalc) // screen size changed
{ {
AM_LevelInit(); AM_FrameBufferInit();
lastlevel = gamemap; if (lastlevel != gamemap)
{
AM_LevelInit();
lastlevel = gamemap;
}
am_recalc = false; am_recalc = false;
} }
AM_initVariables(); AM_initVariables();

View file

@ -38,6 +38,9 @@ void AM_Ticker(void);
// Called by main loop, instead of view drawer if automap is active. // Called by main loop, instead of view drawer if automap is active.
void AM_Drawer(void); void AM_Drawer(void);
// Enables the automap.
void AM_Start(void);
// Called to force the automap to quit if the level is completed while it is up. // Called to force the automap to quit if the level is completed while it is up.
void AM_Stop(void); void AM_Stop(void);

View file

@ -360,10 +360,13 @@ void SCR_Recalc(void)
vid.fsmalldupy = vid.smalldupy*FRACUNIT; vid.fsmalldupy = vid.smalldupy*FRACUNIT;
#endif #endif
// toggle off automap because some screensize-dependent values will // toggle off (then back on) the automap because some screensize-dependent values will
// be calculated next time the automap is activated. // be calculated next time the automap is activated.
if (automapactive) if (automapactive)
AM_Stop(); {
am_recalc = true;
AM_Start();
}
// set the screen[x] ptrs on the new vidbuffers // set the screen[x] ptrs on the new vidbuffers
V_Init(); V_Init();