bring back snapshot system

This commit is contained in:
minenice55 2026-01-26 13:12:13 -05:00
parent 2327f02529
commit ea408ff188
5 changed files with 14 additions and 3 deletions

View file

@ -675,6 +675,7 @@ consvar_t cv_kartairsquish = CVAR_INIT ("kartairsquish", "None", CV_NETVAR, kart
consvar_t cv_kartdebugshrink = CVAR_INIT ("kartdebugshrink", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartdrift_operationorder = CVAR_INIT ("kartdriftoperationorder", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartdrift_snapshot = CVAR_INIT ("kartdriftsnapshot", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartdebugdistribution = CVAR_INIT ("kartdebugdistribution", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
consvar_t cv_kartdebughuddrop = CVAR_INIT ("kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);

View file

@ -243,7 +243,7 @@ extern consvar_t cv_votetime;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution, cv_kartdebughuddrop;
extern consvar_t cv_kartdebugshrink;
extern consvar_t cv_kartdrift_operationorder;
extern consvar_t cv_kartdrift_operationorder, cv_kartdrift_snapshot;
extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector;
extern consvar_t cv_kartdebugwaypoints, cv_kartdebuglap, cv_kartdebugbot, cv_kartdebugcluster, cv_kartdebugrings;
extern consvar_t cv_gptest;

View file

@ -567,6 +567,7 @@ struct player_t
boolean noclip; // Fix Grow breaking the "noclip" cheat. Also applies noclip as a bonus.
SINT8 drift; // (-5 to 5) - Drifting Left or Right, plus a bigger counter = sharper turn
INT16 driftturnsnapshot;
SINT8 driftlock; // Prevents you from using drift angle for x tics. Used for zipper fix.
fixed_t driftcharge; // Charge your drift so you can release a burst of speed
UINT8 driftboost; // (0 to 125) - Boost you get from drifting

View file

@ -454,6 +454,7 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_karteggmine_slotbrick);
CV_RegisterVar(&cv_kartdrift_operationorder);
CV_RegisterVar(&cv_kartdrift_snapshot);
}
//}
@ -7577,10 +7578,12 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (cmd->buttons & BT_DRIFT)
{
player->pflags |= PF_DRIFTINPUT;
player->driftturnsnapshot = player->cmd.turning;
}
else
{
player->pflags &= ~PF_DRIFTINPUT;
player->driftturnsnapshot = player->cmd.turning;
}
}
@ -9368,14 +9371,19 @@ static void K_KartDrift(player_t *player, boolean onground)
player->driftcharge = 0;
}
// drift-turn snapshot experiment disabled, drop the snapshot and use the turning value from this tick
if (!cv_kartdrift_snapshot.value)
{
player->driftturnsnapshot = player->cmd.turning;
}
// Drifting: left or right?
if ((player->cmd.turning > 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
if ((player->driftturnsnapshot > 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
{
// Starting left drift
player->drift = 1;
player->pflags &= ~PF_DRIFTEND;
}
else if ((player->cmd.turning < 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
else if ((player->driftturnsnapshot < 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
{
// Starting right drift
player->drift = -1;

View file

@ -607,6 +607,7 @@ static void P_NetSyncPlayers(savebuffer_t *save)
SYNCBOOLEAN(players[i].noclip);
SYNC(players[i].drift);
SYNC(players[i].driftturnsnapshot);
SYNC(players[i].driftlock);
SYNC(players[i].driftcharge);
SYNC(players[i].driftboost);