Stronger tilt on sliptiding + turn to face the camera

Oni's Sick Nasty
This commit is contained in:
James R 2021-04-06 20:45:47 -07:00
parent 9dcce02e5e
commit 5660cac3ad
4 changed files with 44 additions and 2 deletions

View file

@ -529,6 +529,8 @@ typedef struct player_s
tic_t airtime; // Keep track of how long you've been in the air
boolean driftInput; // Whenever or not try drifting.
boolean airFailsafe; // Whenever or not try the air boost
INT32 aizDriftTilt;
INT32 aizDriftTurn;
UINT8 trickpanel; // Trick panel state
boolean trickdelay; // Prevent tricks until control stick is neutral

View file

@ -1920,6 +1920,15 @@ void K_KartMoveAnimation(player_t *player)
turndir = 1;
}
// Use drift frames when sliptiding
if (player->aizDriftTurn)
{
drift = (player->kartstuff[k_aizdriftstrat]);
if (drift)
turndir = 0;
}
if (lookback == true && drift == 0)
{
// Prioritize looking back frames over turning
@ -7351,8 +7360,35 @@ static void K_KartDrift(player_t *player, boolean onground)
player->kartstuff[k_aizdriftstrat] = ((player->kartstuff[k_drift] > 0) ? 1 : -1);
}
else if (player->kartstuff[k_aizdriftstrat] && !player->kartstuff[k_drift])
{
K_SpawnAIZDust(player);
if (abs(player->aizDriftTilt) < ANGLE_22h)
{
player->aizDriftTilt =
(abs(player->aizDriftTilt) + ANGLE_11hh / 4) *
player->kartstuff[k_aizdriftstrat];
}
if (abs(player->aizDriftTurn) < ANGLE_135)
{
player->aizDriftTurn =
(abs(player->aizDriftTurn) + ANGLE_11hh) *
player->kartstuff[k_aizdriftstrat];
}
}
if (!player->kartstuff[k_aizdriftstrat])
{
player->aizDriftTilt -= player->aizDriftTilt / 4;
player->aizDriftTurn -= player->aizDriftTurn / 4;
if (abs(player->aizDriftTilt) < ANGLE_11hh / 4)
player->aizDriftTilt = 0;
if (abs(player->aizDriftTurn) < ANGLE_11hh)
player->aizDriftTurn = 0;
}
if (player->kartstuff[k_drift]
&& ((buttons & BT_BRAKE)
|| !(buttons & BT_ACCELERATE))

View file

@ -2223,7 +2223,11 @@ void P_MovePlayer(player_t *player)
{
player->drawangle = player->mo->angle;
if (player->kartstuff[k_drift] != 0)
if (player->aizDriftTurn)
{
player->drawangle += player->aizDriftTurn;
}
else if (player->kartstuff[k_drift] != 0)
{
INT32 a = (ANGLE_45 / 5) * player->kartstuff[k_drift];
player->drawangle += a;

View file

@ -38,7 +38,7 @@ angle_t R_SpriteRotationAngle(mobj_t *mobj)
angle_t angleDelta = (viewingAngle - mobj->angle);
angle_t sliptideLift = mobj->player
? K_Sliptiding(mobj->player) * ANGLE_11hh : 0;
? mobj->player->aizDriftTilt : 0;
angle_t rollOrPitch = R_GetPitchRollAngle(mobj);
angle_t rollAngle = (rollOrPitch + mobj->rollangle);