Add TRICKSTATE_ constants

Replaces the magic numpers <-- typo I have left in for posterity
This commit is contained in:
toaster 2023-11-07 23:06:50 +00:00
parent 6f22c5261e
commit 239388a1fa
8 changed files with 51 additions and 37 deletions

View file

@ -261,6 +261,16 @@ typedef enum
TRIPWIRE_BLASTER, TRIPWIRE_BLASTER,
} tripwirepass_t; } tripwirepass_t;
typedef enum
{
TRICKSTATE_NONE = 0,
TRICKSTATE_READY,
TRICKSTATE_FORWARD,
TRICKSTATE_RIGHT,
TRICKSTATE_LEFT,
TRICKSTATE_BACK,
} trickstate_t;
typedef enum typedef enum
{ {
// Unsynced, HUD or clientsided effects // Unsynced, HUD or clientsided effects
@ -740,7 +750,7 @@ struct player_t
UINT8 confirmVictim; // Player ID that you dealt damage to UINT8 confirmVictim; // Player ID that you dealt damage to
UINT8 confirmVictimDelay; // Delay before playing the sound UINT8 confirmVictimDelay; // Delay before playing the sound
UINT8 trickpanel; // Trick panel state UINT8 trickpanel; // Trick panel state - see trickstate_t
UINT8 tricktime; // Increases while you're tricking. You can't input any trick until it's reached a certain threshold UINT8 tricktime; // Increases while you're tricking. You can't input any trick until it's reached a certain threshold
fixed_t trickboostpower; // Save the rough speed multiplier. Used for upwards tricks. fixed_t trickboostpower; // Save the rough speed multiplier. Used for upwards tricks.
UINT8 trickboostdecay; // used to know how long you've waited UINT8 trickboostdecay; // used to know how long you've waited

View file

@ -1109,7 +1109,7 @@ static void K_BotTrick(player_t *player, ticcmd_t *cmd, const botcontroller_t *b
return; return;
} }
if (player->trickpanel == 1) if (player->trickpanel == TRICKSTATE_READY)
{ {
switch (botController->trick) switch (botController->trick)
{ {
@ -1521,7 +1521,7 @@ static void K_BuildBotTiccmdNormal(player_t *player, ticcmd_t *cmd)
// Actual gameplay behaviors below this block! // Actual gameplay behaviors below this block!
const botcontroller_t *botController = K_GetBotController(player->mo); const botcontroller_t *botController = K_GetBotController(player->mo);
if (player->trickpanel != 0) if (player->trickpanel != TRICKSTATE_NONE)
{ {
K_BotTrick(player, cmd, botController); K_BotTrick(player, cmd, botController);

View file

@ -221,7 +221,7 @@ private:
bool can_change() const bool can_change() const
{ {
if (viewplayer()->trickpanel > 0) if (viewplayer()->trickpanel != TRICKSTATE_NONE)
{ {
return false; return false;
} }

View file

@ -4379,7 +4379,7 @@ void K_UpdateTrickIndicator(player_t *player)
player->mo->z + (player->mo->height / 2)); player->mo->z + (player->mo->height / 2));
mobj->angle = player->mo->angle + ANGLE_90; mobj->angle = player->mo->angle + ANGLE_90;
if (player->trickpanel == 0 if (player->trickpanel == TRICKSTATE_NONE
&& test != S_INVISIBLE) && test != S_INVISIBLE)
{ {
K_TrickCatholocismBlast(mobj, 1, ANGLE_22h); K_TrickCatholocismBlast(mobj, 1, ANGLE_22h);
@ -6366,7 +6366,7 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound)
{ {
if (!P_PlayerInPain(mo->player)) if (!P_PlayerInPain(mo->player))
{ {
mo->player->trickpanel = 1; mo->player->trickpanel = TRICKSTATE_READY;
mo->player->pflags |= PF_TRICKDELAY; mo->player->pflags |= PF_TRICKDELAY;
if (P_MobjWasRemoved(mo->player->trickIndicator) == false) if (P_MobjWasRemoved(mo->player->trickIndicator) == false)
@ -8674,11 +8674,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_FlameDashLeftoverSmoke(player->mo); K_FlameDashLeftoverSmoke(player->mo);
} }
if (P_IsObjectOnGround(player->mo) && player->trickpanel != 0) if (P_IsObjectOnGround(player->mo) && player->trickpanel != TRICKSTATE_NONE)
{ {
if (P_MobjFlip(player->mo) * player->mo->momz <= 0) if (P_MobjFlip(player->mo) * player->mo->momz <= 0)
{ {
player->trickpanel = 0; player->trickpanel = TRICKSTATE_NONE;
} }
} }
@ -9589,7 +9589,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
return 0; return 0;
} }
if (player->trickpanel == 1 || player->trickpanel == 5) if (player->trickpanel == TRICKSTATE_READY || player->trickpanel == TRICKSTATE_FORWARD)
{ {
// Forward trick or rising from trickpanel // Forward trick or rising from trickpanel
return 0; return 0;
@ -9688,7 +9688,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
turnfixed = FixedMul(turnfixed, weightadjust); turnfixed = FixedMul(turnfixed, weightadjust);
// Side trick // Side trick
if (player->trickpanel == 2 || player->trickpanel == 3) if (player->trickpanel == TRICKSTATE_LEFT || player->trickpanel == TRICKSTATE_RIGHT)
{ {
turnfixed /= 2; turnfixed /= 2;
} }
@ -11140,7 +11140,7 @@ static void K_trickPanelTimingVisual(player_t *player, fixed_t momz)
flame->sprite = SPR_TRCK; flame->sprite = SPR_TRCK;
flame->frame = i|FF_FULLBRIGHT; flame->frame = i|FF_FULLBRIGHT;
if (player->trickpanel <= 1 && !player->tumbleBounces) if (player->trickpanel <= TRICKSTATE_READY && !player->tumbleBounces)
{ {
flame->tics = 2; flame->tics = 2;
flame->momx = player->mo->momx; flame->momx = player->mo->momx;
@ -11151,7 +11151,7 @@ static void K_trickPanelTimingVisual(player_t *player, fixed_t momz)
{ {
flame->tics = TICRATE; flame->tics = TICRATE;
if (player->trickpanel > 1) // we tricked if (player->trickpanel > TRICKSTATE_READY) // we tricked
{ {
// Send the thing outwards via ghetto maths which involves redoing the whole 3d sphere again, witht the "vertical" angle shifted by 90 degrees. // Send the thing outwards via ghetto maths which involves redoing the whole 3d sphere again, witht the "vertical" angle shifted by 90 degrees.
// There's probably a simplier way to do this the way I want to but this works. // There's probably a simplier way to do this the way I want to but this works.
@ -12015,7 +12015,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
} }
break; break;
case KITEM_POGOSPRING: case KITEM_POGOSPRING:
if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO && player->trickpanel == 0) if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO && player->trickpanel == TRICKSTATE_NONE)
{ {
K_PlayBoostTaunt(player->mo); K_PlayBoostTaunt(player->mo);
//K_DoPogoSpring(player->mo, 32<<FRACBITS, 2); //K_DoPogoSpring(player->mo, 32<<FRACBITS, 2);
@ -12126,7 +12126,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->mo->renderflags &= ~RF_BLENDMASK; player->mo->renderflags &= ~RF_BLENDMASK;
} }
if (player->trickpanel == 1) if (player->trickpanel == TRICKSTATE_READY)
{ {
const angle_t lr = ANGLE_45; const angle_t lr = ANGLE_45;
fixed_t momz = FixedDiv(player->mo->momz, mapobjectscale); // bring momz back to scale... fixed_t momz = FixedDiv(player->mo->momz, mapobjectscale); // bring momz back to scale...
@ -12194,7 +12194,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->tumbleBounces = 1; player->tumbleBounces = 1;
player->pflags &= ~PF_TUMBLESOUND; player->pflags &= ~PF_TUMBLESOUND;
player->tumbleHeight = 30; // Base tumble bounce height player->tumbleHeight = 30; // Base tumble bounce height
player->trickpanel = 0; player->trickpanel = TRICKSTATE_NONE;
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT); P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
if (player->pflags & (PF_ITEMOUT|PF_EGGMANOUT)) if (player->pflags & (PF_ITEMOUT|PF_EGGMANOUT))
{ {
@ -12222,7 +12222,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
if (cmd->turning > 0) if (cmd->turning > 0)
{ {
P_InstaThrust(player->mo, player->mo->angle + lr, max(basespeed, speed*5/2)); P_InstaThrust(player->mo, player->mo->angle + lr, max(basespeed, speed*5/2));
player->trickpanel = 2; player->trickpanel = TRICKSTATE_RIGHT;
if (P_MobjWasRemoved(player->trickIndicator) == false) if (P_MobjWasRemoved(player->trickIndicator) == false)
{ {
@ -12235,7 +12235,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
else else
{ {
P_InstaThrust(player->mo, player->mo->angle - lr, max(basespeed, speed*5/2)); P_InstaThrust(player->mo, player->mo->angle - lr, max(basespeed, speed*5/2));
player->trickpanel = 3; player->trickpanel = TRICKSTATE_LEFT;
if (P_MobjWasRemoved(player->trickIndicator) == false) if (P_MobjWasRemoved(player->trickIndicator) == false)
{ {
@ -12261,7 +12261,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
} }
P_InstaThrust(player->mo, player->mo->angle, max(basespeed, speed*3)); P_InstaThrust(player->mo, player->mo->angle, max(basespeed, speed*3));
player->trickpanel = 5; player->trickpanel = TRICKSTATE_FORWARD;
if (P_MobjWasRemoved(player->trickIndicator) == false) if (P_MobjWasRemoved(player->trickIndicator) == false)
{ {
@ -12287,7 +12287,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
//CONS_Printf("decay: %d\n", player->trickboostdecay); //CONS_Printf("decay: %d\n", player->trickboostdecay);
player->mo->momz += P_MobjFlip(player->mo)*48*mapobjectscale; player->mo->momz += P_MobjFlip(player->mo)*48*mapobjectscale;
player->trickpanel = 4; player->trickpanel = TRICKSTATE_BACK;
if (P_MobjWasRemoved(player->trickIndicator) == false) if (P_MobjWasRemoved(player->trickIndicator) == false)
{ {
@ -12303,7 +12303,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
#undef TRICKTHRESHOLD #undef TRICKTHRESHOLD
// Finalise everything. // Finalise everything.
if (player->trickpanel != 1) // just changed from 1? if (player->trickpanel != TRICKSTATE_READY) // just changed from 1?
{ {
player->mo->hitlag = TRICKLAG; player->mo->hitlag = TRICKLAG;
player->mo->eflags &= ~MFE_DAMAGEHITLAG; player->mo->eflags &= ~MFE_DAMAGEHITLAG;
@ -12315,13 +12315,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
INT32 j; INT32 j;
if (player->trickpanel == 5) if (player->trickpanel == TRICKSTATE_FORWARD)
; // Not yet sprited ; // Not yet sprited
else for (j = 0; j < 8; j++, baseangle += angledelta) else for (j = 0; j < 8; j++, baseangle += angledelta)
{ {
mobj_t *swipe = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_SIDETRICK); mobj_t *swipe = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_SIDETRICK);
if (player->trickpanel == 4) if (player->trickpanel == TRICKSTATE_BACK)
P_SetMobjState(swipe, S_BACKTRICK); P_SetMobjState(swipe, S_BACKTRICK);
P_SetTarget(&swipe->target, player->mo); P_SetTarget(&swipe->target, player->mo);
@ -12364,7 +12364,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
K_trickPanelTimingVisual(player, momz); K_trickPanelTimingVisual(player, momz);
} }
else if (player->trickpanel && P_IsObjectOnGround(player->mo)) // Landed from trick else if ((player->trickpanel != TRICKSTATE_NONE) && P_IsObjectOnGround(player->mo)) // Landed from trick
{ {
if (player->fastfall) if (player->fastfall)
{ {
@ -12375,7 +12375,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->fastfall = 0; // intentionally skip bounce player->fastfall = 0; // intentionally skip bounce
} }
if (player->trickpanel == 4) // upward trick if (player->trickpanel == TRICKSTATE_BACK) // upward trick
{ {
S_StartSound(player->mo, sfx_s23c); S_StartSound(player->mo, sfx_s23c);
K_SpawnDashDustRelease(player); K_SpawnDashDustRelease(player);
@ -12385,7 +12385,8 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->sliptideZip += 300; player->sliptideZip += 300;
player->sliptideZipDelay = 0; player->sliptideZipDelay = 0;
player->trickpanel = player->trickboostdecay = 0; player->trickpanel = TRICKSTATE_NONE;
player->trickboostdecay = 0;
} }
// Wait until we let go off the control stick to remove the delay // Wait until we let go off the control stick to remove the delay

View file

@ -549,7 +549,7 @@ void K_ProcessTerrainEffect(mobj_t *mo)
P_InstaThrust(player->mo, thrustAngle, max(thrustSpeed, 2*playerSpeed)); P_InstaThrust(player->mo, thrustAngle, max(thrustSpeed, 2*playerSpeed));
player->dashpadcooldown = TICRATE/3; player->dashpadcooldown = TICRATE/3;
player->trickpanel = 0; player->trickpanel = TRICKSTATE_NONE;
player->floorboost = 2; player->floorboost = 2;
S_StartSound(player->mo, sfx_cdfm62); S_StartSound(player->mo, sfx_cdfm62);

View file

@ -1692,7 +1692,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
target->player->roundscore = 0; target->player->roundscore = 0;
} }
target->player->trickpanel = 0; target->player->trickpanel = TRICKSTATE_NONE;
ACS_RunPlayerDeathScript(target->player); ACS_RunPlayerDeathScript(target->player);
} }

View file

@ -1147,7 +1147,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
P_PlayerFlip(mo); P_PlayerFlip(mo);
} }
if (mo->player->trickpanel >= 2) if (mo->player->trickpanel > TRICKSTATE_READY)
{ {
gravityadd = (5*gravityadd)/2; gravityadd = (5*gravityadd)/2;
} }
@ -8454,7 +8454,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
if (!mobj->target if (!mobj->target
|| !mobj->target->health || !mobj->target->health
|| !mobj->target->player || !mobj->target->player
|| mobj->target->player->trickpanel <= 1) || mobj->target->player->trickpanel <= TRICKSTATE_FORWARD)
{ {
P_RemoveMobj(mobj); P_RemoveMobj(mobj);
return false; return false;
@ -8477,7 +8477,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
fixed_t scale = mobj->target->scale; fixed_t scale = mobj->target->scale;
// sweeping effect // sweeping effect
if (mobj->target->player->trickpanel == 4) if (mobj->target->player->trickpanel == TRICKSTATE_BACK)
{ {
const fixed_t saferange = (20*FRACUNIT)/21; const fixed_t saferange = (20*FRACUNIT)/21;
if (mobj->threshold < -saferange) if (mobj->threshold < -saferange)

View file

@ -478,7 +478,7 @@ void P_ResetPlayer(player_t *player)
player->onconveyor = 0; player->onconveyor = 0;
//player->drift = player->driftcharge = 0; //player->drift = player->driftcharge = 0;
player->trickpanel = 0; player->trickpanel = TRICKSTATE_NONE;
player->glanceDir = 0; player->glanceDir = 0;
player->fastfall = 0; player->fastfall = 0;
@ -2467,13 +2467,16 @@ void P_MovePlayer(player_t *player)
} }
else else
{ {
if (player->trickpanel == 2 || player->trickpanel == 5) // right/forward if (player->trickpanel > TRICKSTATE_READY)
{ {
player->drawangle += ANGLE_22h; if (player->trickpanel <= TRICKSTATE_RIGHT) // right/forward
} {
else if (player->trickpanel == 3 || player->trickpanel == 4) // left/back player->drawangle += ANGLE_22h;
{ }
player->drawangle -= ANGLE_22h; else //if (player->trickpanel >= TRICKSTATE_LEFT) // left/back
{
player->drawangle -= ANGLE_22h;
}
} }
else else
{ {