Fix gamepad rumble freezing when it should stop

This commit is contained in:
AJ Martinez 2024-01-19 19:03:33 -07:00
parent 8f320b6ac2
commit 5f1b8bb3b8

View file

@ -732,24 +732,21 @@ static inline void P_DeviceRumbleTick(void)
UINT16 low = 0; UINT16 low = 0;
UINT16 high = 0; UINT16 high = 0;
if (player->mo == NULL) if (player->mo != NULL && !player->exiting)
continue;
if (player->exiting)
continue;
if ((player->mo->eflags & MFE_DAMAGEHITLAG) && player->mo->hitlag)
{ {
low = high = 65536 / 2; if ((player->mo->eflags & MFE_DAMAGEHITLAG) && player->mo->hitlag)
} {
else if (player->sneakertimer > (sneakertime-(TICRATE/2))) low = high = 65536 / 2;
{ }
low = high = 65536 / (3+player->numsneakers); else if (player->sneakertimer > (sneakertime-(TICRATE/2)))
} {
else if (((player->boostpower < FRACUNIT) || (player->stairjank > 8)) low = high = 65536 / (3+player->numsneakers);
&& P_IsObjectOnGround(player->mo) && player->speed != 0) }
{ else if (((player->boostpower < FRACUNIT) || (player->stairjank > 8))
low = high = 65536 / 32; && P_IsObjectOnGround(player->mo) && player->speed != 0)
{
low = high = 65536 / 32;
}
} }
G_PlayerDeviceRumble(i, low, high); G_PlayerDeviceRumble(i, low, high);