From 7ea321de323ffc17c1887d40412891fd5df99f87 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Fri, 27 Jun 2025 10:22:42 -0400 Subject: [PATCH] Drift feel improvements Should make it feel closer to v1 --- src/g_game.c | 7 +++++++ src/k_kart.c | 13 ++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index 4c1ff172e..0e9076a0c 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1152,6 +1152,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) if (joystickvector.xaxis != 0) { cmd->turning -= (tspeed * KART_FULLTURN) / JOYAXISRANGE; + cmd->angle -= (tspeed * KART_FULLTURN) / JOYAXISRANGE; side += (joystickvector.xaxis * 4) / JOYAXISRANGE; } @@ -1160,6 +1161,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) { INT32 mousex = gamekeydown[0][KEY_MOUSEMOVE+3] - gamekeydown[0][KEY_MOUSEMOVE+2]; cmd->turning -= (mousex * 8) * (encoremode ? -1 : 1); + cmd->angle -= (mousex * 8) * (encoremode ? -1 : 1); } if (spectating || objectplacing) // SRB2Kart: spectators need special controls @@ -1316,6 +1318,11 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) else if (cmd->turning < -KART_FULLTURN) cmd->turning = -KART_FULLTURN; + if (cmd->angle > KART_FULLTURN) + cmd->angle = KART_FULLTURN; + else if (cmd->angle < -KART_FULLTURN) + cmd->angle = -KART_FULLTURN; + if (cmd->throwdir > KART_FULLTURN) cmd->throwdir = KART_FULLTURN; else if (cmd->throwdir < -KART_FULLTURN) diff --git a/src/k_kart.c b/src/k_kart.c index bcf7a42bf..27dcb174d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9152,25 +9152,24 @@ boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y) // turndir is the direction the controls are telling us to turn, -1 if turning right and 1 if turning left static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer) { - INT16 basedrift, driftadjust; + INT16 basedrift, driftangle; fixed_t driftweight = player->kartweight*14; // 12 if (player->drift == 0 || !P_IsObjectOnGround(player->mo)) { - // If they aren't drifting or on the ground, this doesn't apply + // If they aren't drifting or on the ground this doesn't apply return 0; } if (player->pflags & PF_DRIFTEND) { - // Drift has ended and we are tweaking their angle back a bit - return -266*player->drift; + return -266*player->drift; // Drift has ended and we are tweaking their angle back a bit } - basedrift = (83 * player->drift) - (((driftweight - 14) * player->drift) / 5); // 415 - 303 - driftadjust = abs((252 - driftweight) * player->drift / 5); + basedrift = 83*player->drift - (driftweight - 14)*player->drift/5; // 415 - 303 + driftangle = abs((252 - driftweight)*player->drift/5); - return basedrift + (FixedMul(driftadjust * FRACUNIT, countersteer) / FRACUNIT); + return basedrift + FixedMul(driftangle, countersteer); } INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)