mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Lift the wheels of your jart a little when sliptiding
This commit is contained in:
parent
c74e02d9dc
commit
696e405038
5 changed files with 30 additions and 6 deletions
|
|
@ -7539,6 +7539,12 @@ boolean K_PlayerEBrake(player_t *player)
|
||||||
&& player->powers[pw_nocontrol] == 0;
|
&& player->powers[pw_nocontrol] == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SINT8 K_Sliptiding(player_t *player)
|
||||||
|
{
|
||||||
|
const INT32 *p = player->kartstuff;
|
||||||
|
return p[k_drift] ? 0 : p[k_aizdriftstrat];
|
||||||
|
}
|
||||||
|
|
||||||
static void K_KartSpindashDust(mobj_t *parent)
|
static void K_KartSpindashDust(mobj_t *parent)
|
||||||
{
|
{
|
||||||
fixed_t rad = FixedDiv(FixedHypot(parent->radius, parent->radius), parent->scale);
|
fixed_t rad = FixedDiv(FixedHypot(parent->radius, parent->radius), parent->scale);
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ UINT16 K_GetKartButtons(player_t *player);
|
||||||
SINT8 K_GetForwardMove(player_t *player);
|
SINT8 K_GetForwardMove(player_t *player);
|
||||||
fixed_t K_3dKartMovement(player_t *player);
|
fixed_t K_3dKartMovement(player_t *player);
|
||||||
boolean K_PlayerEBrake(player_t *player);
|
boolean K_PlayerEBrake(player_t *player);
|
||||||
|
SINT8 K_Sliptiding(player_t *player);
|
||||||
void K_AdjustPlayerFriction(player_t *player);
|
void K_AdjustPlayerFriction(player_t *player);
|
||||||
void K_MoveKartPlayer(player_t *player, boolean onground);
|
void K_MoveKartPlayer(player_t *player, boolean onground);
|
||||||
void K_CheckSpectateStatus(void);
|
void K_CheckSpectateStatus(void);
|
||||||
|
|
|
||||||
|
|
@ -4252,10 +4252,6 @@ Quaketilt (player_t *player)
|
||||||
fixed_t speed;
|
fixed_t speed;
|
||||||
|
|
||||||
boolean sliptiding = K_Sliptiding(player);
|
boolean sliptiding = K_Sliptiding(player);
|
||||||
(
|
|
||||||
player->kartstuff[k_aizdriftstrat] != 0 &&
|
|
||||||
player->kartstuff[k_drift] == 0
|
|
||||||
);
|
|
||||||
|
|
||||||
if (delta == (INT32)ANGLE_180)/* FUCK YOU HAVE A HACK */
|
if (delta == (INT32)ANGLE_180)/* FUCK YOU HAVE A HACK */
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
#include "z_zone.h"
|
#include "z_zone.h"
|
||||||
#include "w_wad.h"
|
#include "w_wad.h"
|
||||||
#include "r_main.h" // R_PointToAngle
|
#include "r_main.h" // R_PointToAngle
|
||||||
|
#include "k_kart.h" // K_Sliptiding
|
||||||
|
|
||||||
#ifdef ROTSPRITE
|
#ifdef ROTSPRITE
|
||||||
fixed_t rollcosang[ROTANGLES];
|
fixed_t rollcosang[ROTANGLES];
|
||||||
|
|
@ -22,13 +23,27 @@ fixed_t rollsinang[ROTANGLES];
|
||||||
angle_t R_SpriteRotationAngle(mobj_t *mobj)
|
angle_t R_SpriteRotationAngle(mobj_t *mobj)
|
||||||
{
|
{
|
||||||
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
|
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
|
||||||
|
angle_t angleDelta = (viewingAngle - mobj->angle);
|
||||||
|
|
||||||
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
|
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||||
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
|
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||||
|
|
||||||
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
|
angle_t sliptideLift = mobj->player
|
||||||
|
? K_Sliptiding(mobj->player) * ANGLE_11hh : 0;
|
||||||
|
|
||||||
return (rollOrPitch + mobj->rollangle);
|
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
|
||||||
|
angle_t rollAngle = (rollOrPitch + mobj->rollangle);
|
||||||
|
|
||||||
|
if (sliptideLift)
|
||||||
|
{
|
||||||
|
/* (from side) tilt downward if turning
|
||||||
|
toward camera, upward if away. */
|
||||||
|
rollAngle +=
|
||||||
|
FixedMul(sliptideLift, FINESINE(AbsAngle(angleDelta) >> ANGLETOFINESHIFT)) +
|
||||||
|
FixedMul(sliptideLift, FINECOSINE(angleDelta >> ANGLETOFINESHIFT));
|
||||||
|
}
|
||||||
|
|
||||||
|
return rollAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
INT32 R_GetRollAngle(angle_t rollangle)
|
INT32 R_GetRollAngle(angle_t rollangle)
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,12 @@ FUNCMATH FUNCINLINE static ATTRINLINE angle_t InvAngle(angle_t a)
|
||||||
{
|
{
|
||||||
return (ANGLE_MAX-a)+1;
|
return (ANGLE_MAX-a)+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 315 = 45
|
||||||
|
FUNCMATH FUNCINLINE static ATTRINLINE angle_t AbsAngle(angle_t a)
|
||||||
|
{
|
||||||
|
return a & ANGLE_180 ? InvAngle(a) : a;
|
||||||
|
}
|
||||||
// angle_t to fixed_t f(ANGLE_45) = 45*FRACUNIT
|
// angle_t to fixed_t f(ANGLE_45) = 45*FRACUNIT
|
||||||
FUNCMATH fixed_t AngleFixed(angle_t af);
|
FUNCMATH fixed_t AngleFixed(angle_t af);
|
||||||
// fixed_t to angle_t f(45*FRACUNIT) = ANGLE_45
|
// fixed_t to angle_t f(45*FRACUNIT) = ANGLE_45
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue