Uncap console opening/closing animation

This commit is contained in:
Zwip-Zwap Zapony 2022-11-20 11:50:01 +01:00
parent e6780f2bee
commit 256d9b5fdb

View file

@ -643,33 +643,39 @@ static void CON_ChangeHeight(void)
// //
static void CON_MoveConsole(void) static void CON_MoveConsole(void)
{ {
fixed_t conspeed; static fixed_t fracmovement = 0;
Lock_state(); Lock_state();
conspeed = FixedDiv(cons_speed.value*vid.fdupy, FRACUNIT);
// instant // instant
if (!cons_speed.value) if (!cons_speed.value)
{ {
con_curlines = con_destlines; con_curlines = con_destlines;
Unlock_state();
return; return;
} }
// up/down move to dest // Not instant - Increment fracmovement fractionally
if (con_curlines < con_destlines) fracmovement += FixedMul(cons_speed.value*vid.fdupy, renderdeltatics);
if (con_curlines < con_destlines) // Move the console downwards
{ {
con_curlines += FixedInt(conspeed); con_curlines += FixedInt(fracmovement); // Move by fracmovement's integer value
if (con_curlines > con_destlines) if (con_curlines > con_destlines) // If we surpassed the destination...
con_curlines = con_destlines; con_curlines = con_destlines; // ...clamp to it!
} }
else if (con_curlines > con_destlines) else // Move the console upwards
{ {
con_curlines -= FixedInt(conspeed); con_curlines -= FixedInt(fracmovement);
if (con_curlines < con_destlines) if (con_curlines < con_destlines)
con_curlines = con_destlines; con_curlines = con_destlines;
if (con_destlines == 0) // If the console is being closed, not just moved up...
con_tick = 0; // ...don't show the blinking cursor
} }
fracmovement %= FRACUNIT; // Reset fracmovement's integer value, but keep the fraction
Unlock_state(); Unlock_state();
} }
@ -752,10 +758,6 @@ void CON_Ticker(void)
CON_ChangeHeight(); CON_ChangeHeight();
} }
// console movement
if (con_destlines != con_curlines)
CON_MoveConsole();
// clip the view, so that the part under the console is not drawn // clip the view, so that the part under the console is not drawn
con_clipviewtop = -1; con_clipviewtop = -1;
if (cons_backpic.value) // clip only when using an opaque background if (cons_backpic.value) // clip only when using an opaque background
@ -1866,6 +1868,10 @@ void CON_Drawer(void)
CON_ClearHUD(); CON_ClearHUD();
} }
// console movement
if (con_curlines != con_destlines)
CON_MoveConsole();
if (con_curlines > 0) if (con_curlines > 0)
CON_DrawConsole(); CON_DrawConsole();
else if (gamestate == GS_LEVEL else if (gamestate == GS_LEVEL