From 6f42d84b2afb1377eff6a059dec4dc90b096699d Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sun, 22 May 2022 19:49:33 -0400 Subject: [PATCH] Fix turn prediction in F12 --- src/p_user.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index de42228a7..2bd75f0c4 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2006,9 +2006,9 @@ static void P_UpdatePlayerAngle(player_t *player) UINT8 p = UINT8_MAX; UINT8 i; - for (i = 0; i <= r_splitscreen; i++) + for (i = 0; i <= splitscreen; i++) { - if (player == &players[displayplayers[i]]) + if (player == &players[g_localplayers[i]]) { p = i; break; @@ -2018,14 +2018,20 @@ static void P_UpdatePlayerAngle(player_t *player) player->steering = K_UpdateSteeringValue(player->steering, player->cmd.turning); angleChange = K_GetKartTurnValue(player, player->steering) << TICCMD_REDUCE; - player->angleturn += angleChange; - player->mo->angle = player->angleturn; - - if (p != UINT8_MAX) + if (p == UINT8_MAX) + { + // When F12ing players, set local angle directly. + P_SetPlayerAngle(player, player->angleturn + angleChange); + player->mo->angle = player->angleturn; + } + else { UINT8 lateTic = ((leveltime - player->cmd.latency) & TICCMD_LATENCYMASK); UINT8 clearTic = ((localtic + 1) & TICCMD_LATENCYMASK); + player->angleturn += angleChange; + player->mo->angle = player->angleturn; + // Undo the ticcmd's old emulated angle, // now that we added the actual game logic angle.