Merge branch 'handling-fix' into 'master'

Handling code clean-up

See merge request KartKrew/Kart!249
This commit is contained in:
Sal 2020-05-03 23:01:22 -04:00
commit aa948b1de3

View file

@ -6722,54 +6722,65 @@ 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, driftangle;
INT16 basedrift, driftadjust;
fixed_t driftweight = player->kartweight*14; // 12
// If they aren't drifting or on the ground this doesn't apply
if (player->kartstuff[k_drift] == 0 || !P_IsObjectOnGround(player->mo))
{
// If they aren't drifting or on the ground, this doesn't apply
return 0;
}
if (player->kartstuff[k_driftend] != 0)
return -266*player->kartstuff[k_drift]; // Drift has ended and we are tweaking their angle back a bit
{
// Drift has ended and we are tweaking their angle back a bit
return -266*player->kartstuff[k_drift];
}
//basedrift = 90*player->kartstuff[k_drift]; // 450
//basedrift = 93*player->kartstuff[k_drift] - driftweight*3*player->kartstuff[k_drift]/10; // 447 - 303
basedrift = 83*player->kartstuff[k_drift] - (driftweight - 14)*player->kartstuff[k_drift]/5; // 415 - 303
driftangle = abs((252 - driftweight)*player->kartstuff[k_drift]/5);
basedrift = (83 * player->kartstuff[k_drift]) - (((driftweight - 14) * player->kartstuff[k_drift]) / 5); // 415 - 303
driftadjust = abs((252 - driftweight) * player->kartstuff[k_drift] / 5);
if (player->kartstuff[k_tiregrease] > 0) // Buff drift-steering while in greasemode
{
basedrift += (basedrift / greasetics) * player->kartstuff[k_tiregrease];
}
return basedrift + FixedMul(driftangle, countersteer);
return basedrift + (FixedMul(driftadjust * FRACUNIT, countersteer) / FRACUNIT);
}
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
{
fixed_t p_maxspeed = FixedMul(K_GetKartSpeed(player, false), 3*FRACUNIT);
fixed_t adjustangle = FixedDiv((p_maxspeed>>16) - (player->speed>>16), (p_maxspeed>>16) + player->kartweight);
fixed_t p_maxspeed = K_GetKartSpeed(player, false);
fixed_t p_speed = min(player->speed, (p_maxspeed * 2));
fixed_t weightadjust = FixedDiv((p_maxspeed * 3) - p_speed, (p_maxspeed * 3) + (player->kartweight * FRACUNIT));
if (player->spectator)
{
return turnvalue;
}
if (player->kartstuff[k_drift] != 0 && P_IsObjectOnGround(player->mo))
{
fixed_t countersteer = FixedDiv(turnvalue*FRACUNIT, KART_FULLTURN*FRACUNIT);
// If we're drifting we have a completely different turning value
if (player->kartstuff[k_driftend] == 0)
if (player->kartstuff[k_driftend] != 0)
{
// 800 is the max set in g_game.c with angleturn
fixed_t countersteer = FixedDiv(turnvalue*FRACUNIT, 800*FRACUNIT);
turnvalue = K_GetKartDriftValue(player, countersteer);
countersteer = FRACUNIT;
}
else
turnvalue = (INT16)(turnvalue + K_GetKartDriftValue(player, FRACUNIT));
turnvalue = K_GetKartDriftValue(player, countersteer);
return turnvalue;
}
turnvalue = FixedMul(turnvalue, adjustangle); // Weight has a small effect on turning
if (EITHERSNEAKER(player) || player->kartstuff[k_invincibilitytimer] || player->kartstuff[k_growshrinktimer] > 0)
turnvalue = FixedMul(turnvalue, (5*FRACUNIT)/4);
{
turnvalue = 5*turnvalue/4;
}
turnvalue = FixedMul(turnvalue * FRACUNIT, weightadjust) / FRACUNIT; // Weight has a small effect on turning
return turnvalue;
}