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 // 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) static INT16 K_GetKartDriftValue(player_t *player, fixed_t countersteer)
{ {
INT16 basedrift, driftangle; INT16 basedrift, driftadjust;
fixed_t driftweight = player->kartweight*14; // 12 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 (player->kartstuff[k_drift] == 0 || !P_IsObjectOnGround(player->mo))
{
// If they aren't drifting or on the ground, this doesn't apply
return 0; return 0;
}
if (player->kartstuff[k_driftend] != 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 = (83 * player->kartstuff[k_drift]) - (((driftweight - 14) * player->kartstuff[k_drift]) / 5); // 415 - 303
//basedrift = 93*player->kartstuff[k_drift] - driftweight*3*player->kartstuff[k_drift]/10; // 447 - 303 driftadjust = abs((252 - driftweight) * player->kartstuff[k_drift] / 5);
basedrift = 83*player->kartstuff[k_drift] - (driftweight - 14)*player->kartstuff[k_drift]/5; // 415 - 303
driftangle = abs((252 - driftweight)*player->kartstuff[k_drift]/5);
if (player->kartstuff[k_tiregrease] > 0) // Buff drift-steering while in greasemode if (player->kartstuff[k_tiregrease] > 0) // Buff drift-steering while in greasemode
{
basedrift += (basedrift / greasetics) * player->kartstuff[k_tiregrease]; 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) INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
{ {
fixed_t p_maxspeed = FixedMul(K_GetKartSpeed(player, false), 3*FRACUNIT); fixed_t p_maxspeed = K_GetKartSpeed(player, false);
fixed_t adjustangle = FixedDiv((p_maxspeed>>16) - (player->speed>>16), (p_maxspeed>>16) + player->kartweight); 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) if (player->spectator)
{
return turnvalue; return turnvalue;
}
if (player->kartstuff[k_drift] != 0 && P_IsObjectOnGround(player->mo)) 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 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 countersteer = FRACUNIT;
fixed_t countersteer = FixedDiv(turnvalue*FRACUNIT, 800*FRACUNIT);
turnvalue = K_GetKartDriftValue(player, countersteer);
} }
else
turnvalue = (INT16)(turnvalue + K_GetKartDriftValue(player, FRACUNIT)); turnvalue = K_GetKartDriftValue(player, countersteer);
return turnvalue; 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) 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; return turnvalue;
} }