mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Reverse gravity fixes pt 1: basic driving
- Turning dust is spawned in the correct position - Turning dust sprites are flipped - Shadows display on the ceiling for flipped objects - Drift sparks display in the correct position for flipped players Will continue with item fixes tomorrow
This commit is contained in:
parent
bff6c6234c
commit
9d2afe7403
2 changed files with 23 additions and 8 deletions
|
|
@ -2264,6 +2264,10 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange)<<FRACBITS;
|
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange)<<FRACBITS;
|
||||||
INT32 speedrange = 2;
|
INT32 speedrange = 2;
|
||||||
mobj_t *dust = P_SpawnMobj(spawner->x + spawnx, spawner->y + spawny, spawner->z, MT_DRIFTDUST);
|
mobj_t *dust = P_SpawnMobj(spawner->x + spawnx, spawner->y + spawny, spawner->z, MT_DRIFTDUST);
|
||||||
|
if (spawner->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
|
dust->z += spawner->height - dust->height;
|
||||||
|
}
|
||||||
dust->momx = FixedMul(spawner->momx + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*FRACUNIT/4);
|
dust->momx = FixedMul(spawner->momx + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*FRACUNIT/4);
|
||||||
dust->momy = FixedMul(spawner->momy + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*FRACUNIT/4);
|
dust->momy = FixedMul(spawner->momy + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*FRACUNIT/4);
|
||||||
dust->momz = P_MobjFlip(spawner) * P_RandomRange(1, 4)<<FRACBITS;
|
dust->momz = P_MobjFlip(spawner) * P_RandomRange(1, 4)<<FRACBITS;
|
||||||
|
|
@ -2279,6 +2283,11 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
else
|
else
|
||||||
dust->flags2 &= ~MF2_DONTDRAW;
|
dust->flags2 &= ~MF2_DONTDRAW;
|
||||||
|
|
||||||
|
if (spawner->eflags & MFE_VERTICALFLIP)
|
||||||
|
dust->eflags |= MFE_VERTICALFLIP;
|
||||||
|
else
|
||||||
|
dust->eflags &= ~MFE_VERTICALFLIP;
|
||||||
|
|
||||||
if (spawner->eflags & MFE_DRAWONLYFORP1)
|
if (spawner->eflags & MFE_DRAWONLYFORP1)
|
||||||
dust->eflags |= MFE_DRAWONLYFORP1;
|
dust->eflags |= MFE_DRAWONLYFORP1;
|
||||||
else
|
else
|
||||||
|
|
|
||||||
22
src/p_mobj.c
22
src/p_mobj.c
|
|
@ -6291,6 +6291,11 @@ void P_RunShadows(void)
|
||||||
else
|
else
|
||||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||||
|
|
||||||
|
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
||||||
|
mobj->eflags |= MFE_VERTICALFLIP;
|
||||||
|
else
|
||||||
|
mobj->eflags &= ~MFE_VERTICALFLIP;
|
||||||
|
|
||||||
if (mobj->target->eflags & MFE_DRAWONLYFORP1) // groooooaann...
|
if (mobj->target->eflags & MFE_DRAWONLYFORP1) // groooooaann...
|
||||||
mobj->eflags |= MFE_DRAWONLYFORP1;
|
mobj->eflags |= MFE_DRAWONLYFORP1;
|
||||||
else
|
else
|
||||||
|
|
@ -6316,12 +6321,13 @@ void P_RunShadows(void)
|
||||||
|
|
||||||
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z);
|
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z);
|
||||||
|
|
||||||
if (mobj->floorz < mobj->z)
|
if (((mobj->eflags & MFE_VERTICALFLIP) && (mobj->ceilingz > mobj->z+mobj->height))
|
||||||
|
|| (!(mobj->eflags & MFE_VERTICALFLIP) && (mobj->floorz < mobj->z)))
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
fixed_t prevz;
|
fixed_t prevz;
|
||||||
|
|
||||||
mobj->z = mobj->floorz;
|
mobj->z = (mobj->eflags & MFE_VERTICALFLIP ? mobj->ceilingz : mobj->floorz);
|
||||||
|
|
||||||
for (i = 0; i < MAXFFLOORS; i++)
|
for (i = 0; i < MAXFFLOORS; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -6333,7 +6339,7 @@ void P_RunShadows(void)
|
||||||
// Check new position to see if you should still be on that ledge
|
// Check new position to see if you should still be on that ledge
|
||||||
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->z);
|
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->z);
|
||||||
|
|
||||||
mobj->z = mobj->floorz;
|
mobj->z = (mobj->eflags & MFE_VERTICALFLIP ? mobj->ceilingz : mobj->floorz);
|
||||||
|
|
||||||
if (mobj->z == prevz)
|
if (mobj->z == prevz)
|
||||||
break;
|
break;
|
||||||
|
|
@ -6609,7 +6615,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
{
|
{
|
||||||
if (mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
if (mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
||||||
{
|
{
|
||||||
INT32 HEIGHT;
|
fixed_t HEIGHT;
|
||||||
fixed_t radius;
|
fixed_t radius;
|
||||||
|
|
||||||
fixed_t dsone = K_GetKartDriftSparkValue(mobj->target->player);
|
fixed_t dsone = K_GetKartDriftSparkValue(mobj->target->player);
|
||||||
|
|
@ -6679,15 +6685,15 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
mobj->angle = ANGLE_180 + mobj->target->player->frameangle;
|
mobj->angle = ANGLE_180 + mobj->target->player->frameangle;
|
||||||
|
|
||||||
// If the player is on the ceiling, then flip
|
// If the player is on the ceiling, then flip
|
||||||
if (mobj->target->player && mobj->target->eflags & MFE_VERTICALFLIP)
|
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
||||||
{
|
{
|
||||||
mobj->eflags |= MFE_VERTICALFLIP;
|
mobj->eflags |= MFE_VERTICALFLIP;
|
||||||
HEIGHT = mobj->target->height;
|
HEIGHT = (16<<FRACBITS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mobj->eflags &= ~MFE_VERTICALFLIP;
|
mobj->eflags &= ~MFE_VERTICALFLIP;
|
||||||
HEIGHT = mobj->target->height-mobj->target->height;
|
HEIGHT = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shrink if the player shrunk too.
|
// Shrink if the player shrunk too.
|
||||||
|
|
@ -6698,7 +6704,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
const angle_t fa = mobj->angle>>ANGLETOFINESHIFT;
|
const angle_t fa = mobj->angle>>ANGLETOFINESHIFT;
|
||||||
mobj->x = mobj->target->x + FixedMul(finecosine[fa],radius);
|
mobj->x = mobj->target->x + FixedMul(finecosine[fa],radius);
|
||||||
mobj->y = mobj->target->y + FixedMul(finesine[fa],radius);
|
mobj->y = mobj->target->y + FixedMul(finesine[fa],radius);
|
||||||
mobj->z = mobj->target->z + HEIGHT;
|
mobj->z = mobj->target->z - HEIGHT;
|
||||||
P_SetThingPosition(mobj);
|
P_SetThingPosition(mobj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue