Judder on incomplete fill for rank-based progression to Sealed Star

- Cleaner handling of player arrow position through addition rather than overwrite
- Cleaner inputs to FixedDiv
This commit is contained in:
toaster 2023-05-09 17:11:41 +01:00
parent 9fca550ab6
commit 5a20a4756f

View file

@ -83,7 +83,7 @@ typedef struct
boolean showrank; // show rank-restricted queue entry at the end, if it exists
boolean encore; // encore mode
tic_t linemeter; // For GP only
INT32 linemeter; // For GP only
} y_data;
static y_data data;
@ -814,6 +814,12 @@ skiptallydrawer:
}
}
if (roundqueue.position == i+1)
{
playerx = x;
playery = y;
}
if (choose_line != NULL)
{
// Draw the line to the right of the dot
@ -856,20 +862,30 @@ skiptallydrawer:
else if (roundqueue.position == roundqueue.size-1
&& timer <= 2*TICRATE)
{
const INT32 through = ((2*TICRATE) - (timer - 1));
const fixed_t percent = FixedDiv(
min(
data.linemeter,
((2*TICRATE) - (timer - 1))
) * FRACUNIT,
min( data.linemeter, through ) * FRACUNIT,
(2*TICRATE) * FRACUNIT
);
playerx = x +
playerx +=
FixedMul(
(x2 - x) * FRACUNIT,
percent
) / FRACUNIT;
playery = y;
if (timer > 2)
{
// Small judder
if (through == (data.linemeter + 1))
{
playerx++;
}
else if (through == (data.linemeter + 2))
{
playerx--;
}
}
}
// Special background bump
@ -935,12 +951,6 @@ skiptallydrawer:
);
}
if (roundqueue.position == i+1 && playery == 0)
{
playerx = x;
playery = y;
}
x += 24;
}