mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'lag-compensate-roulette' into 'master'
Roulette reel lag compensation See merge request KartKrew/Kart!976
This commit is contained in:
commit
8d13c1563d
1 changed files with 20 additions and 0 deletions
|
|
@ -1469,6 +1469,26 @@ void K_KartItemRoulette(player_t *const player, ticcmd_t *const cmd)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// D2 fudge factor. Roulette was originally designed and tested with this delay.
|
||||||
|
UINT8 fudgedDelay = (player->cmd.latency <= 2) ? 0 : player->cmd.latency - 2;
|
||||||
|
while (fudgedDelay > 0)
|
||||||
|
{
|
||||||
|
UINT8 gap = (roulette->speed - roulette->tics); // How long has the roulette been on this entry?
|
||||||
|
if (fudgedDelay > gap) // Did the roulette tick over in-flight?
|
||||||
|
{
|
||||||
|
fudgedDelay = fudgedDelay - gap; // We're compensating for this gap's worth of delay, so cut it down.
|
||||||
|
roulette->index = roulette->index == 0 ? roulette->itemListLen - 1 : roulette->index - 1; // Roll the roulette index back...
|
||||||
|
roulette->tics = 0; // And just in case our delay is SO high that a fast roulette needs to roll back again...
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// And one more nudge for the remaining delay.
|
||||||
|
roulette->tics = (roulette->tics + fudgedDelay) % roulette->speed;
|
||||||
|
|
||||||
kartitems_t finalItem = roulette->itemList[ roulette->index ];
|
kartitems_t finalItem = roulette->itemList[ roulette->index ];
|
||||||
|
|
||||||
K_KartGetItemResult(player, finalItem);
|
K_KartGetItemResult(player, finalItem);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue