make this change operation order instead of use snapshots
This commit is contained in:
parent
c6b875b336
commit
2327f02529
6 changed files with 27 additions and 22 deletions
|
|
@ -674,7 +674,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_kartdebugshrink = CVAR_INIT ("kartdebugshrink", "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_kartdrift_operationorder = CVAR_INIT ("kartdriftoperationorder", "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_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);
|
consvar_t cv_kartdebughuddrop = CVAR_INIT ("kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL);
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ extern consvar_t cv_votetime;
|
||||||
|
|
||||||
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution, cv_kartdebughuddrop;
|
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution, cv_kartdebughuddrop;
|
||||||
extern consvar_t cv_kartdebugshrink;
|
extern consvar_t cv_kartdebugshrink;
|
||||||
extern consvar_t cv_kartdrift_snapshot;
|
extern consvar_t cv_kartdrift_operationorder;
|
||||||
extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector;
|
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_kartdebugwaypoints, cv_kartdebuglap, cv_kartdebugbot, cv_kartdebugcluster, cv_kartdebugrings;
|
||||||
extern consvar_t cv_gptest;
|
extern consvar_t cv_gptest;
|
||||||
|
|
|
||||||
|
|
@ -567,7 +567,6 @@ struct player_t
|
||||||
boolean noclip; // Fix Grow breaking the "noclip" cheat. Also applies noclip as a bonus.
|
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
|
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.
|
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
|
fixed_t driftcharge; // Charge your drift so you can release a burst of speed
|
||||||
UINT8 driftboost; // (0 to 125) - Boost you get from drifting
|
UINT8 driftboost; // (0 to 125) - Boost you get from drifting
|
||||||
|
|
|
||||||
30
src/k_kart.c
30
src/k_kart.c
|
|
@ -453,7 +453,7 @@ void K_RegisterKartStuff(void)
|
||||||
CV_RegisterVar(&cv_karteggmine_slotlock);
|
CV_RegisterVar(&cv_karteggmine_slotlock);
|
||||||
CV_RegisterVar(&cv_karteggmine_slotbrick);
|
CV_RegisterVar(&cv_karteggmine_slotbrick);
|
||||||
|
|
||||||
CV_RegisterVar(&cv_kartdrift_snapshot);
|
CV_RegisterVar(&cv_kartdrift_operationorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
@ -7572,17 +7572,16 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
player->flamecamtime -= 1;
|
player->flamecamtime -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd->buttons & BT_DRIFT)
|
if (!cv_kartdrift_operationorder.value)
|
||||||
{
|
{
|
||||||
player->pflags |= PF_DRIFTINPUT;
|
if (cmd->buttons & BT_DRIFT)
|
||||||
|
{
|
||||||
player->driftturnsnapshot = player->cmd.turning;
|
player->pflags |= PF_DRIFTINPUT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player->pflags &= ~PF_DRIFTINPUT;
|
player->pflags &= ~PF_DRIFTINPUT;
|
||||||
|
}
|
||||||
player->driftturnsnapshot = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Respawn Checker
|
// Respawn Checker
|
||||||
|
|
@ -9369,19 +9368,14 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->driftcharge = 0;
|
player->driftcharge = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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?
|
// Drifting: left or right?
|
||||||
if ((player->driftturnsnapshot > 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
|
if ((player->cmd.turning > 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
|
||||||
{
|
{
|
||||||
// Starting left drift
|
// Starting left drift
|
||||||
player->drift = 1;
|
player->drift = 1;
|
||||||
player->pflags &= ~PF_DRIFTEND;
|
player->pflags &= ~PF_DRIFTEND;
|
||||||
}
|
}
|
||||||
else if ((player->driftturnsnapshot < 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
|
else if ((player->cmd.turning < 0) && player->speed > minspeed && (player->pflags & PF_DRIFTINPUT) && (player->drift == 0 || (player->pflags & PF_DRIFTEND)))
|
||||||
{
|
{
|
||||||
// Starting right drift
|
// Starting right drift
|
||||||
player->drift = -1;
|
player->drift = -1;
|
||||||
|
|
|
||||||
|
|
@ -607,7 +607,6 @@ static void P_NetSyncPlayers(savebuffer_t *save)
|
||||||
SYNCBOOLEAN(players[i].noclip);
|
SYNCBOOLEAN(players[i].noclip);
|
||||||
|
|
||||||
SYNC(players[i].drift);
|
SYNC(players[i].drift);
|
||||||
SYNC(players[i].driftturnsnapshot);
|
|
||||||
SYNC(players[i].driftlock);
|
SYNC(players[i].driftlock);
|
||||||
SYNC(players[i].driftcharge);
|
SYNC(players[i].driftcharge);
|
||||||
SYNC(players[i].driftboost);
|
SYNC(players[i].driftboost);
|
||||||
|
|
|
||||||
13
src/p_user.c
13
src/p_user.c
|
|
@ -4299,6 +4299,19 @@ void P_PlayerThink(player_t *player)
|
||||||
|
|
||||||
player->pflags &= ~PF_HITFINISHLINE;
|
player->pflags &= ~PF_HITFINISHLINE;
|
||||||
|
|
||||||
|
// experiment: process the drift input *before* player movement instead of after
|
||||||
|
if (cv_kartdrift_operationorder.value)
|
||||||
|
{
|
||||||
|
if (cmd->buttons & BT_DRIFT)
|
||||||
|
{
|
||||||
|
player->pflags |= PF_DRIFTINPUT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player->pflags &= ~PF_DRIFTINPUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check water content, set stuff in mobj
|
// check water content, set stuff in mobj
|
||||||
P_MobjCheckWater(player->mo);
|
P_MobjCheckWater(player->mo);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue