client-determined drift mode?
This commit is contained in:
parent
ea408ff188
commit
905ebe528a
7 changed files with 35 additions and 7 deletions
|
|
@ -674,9 +674,6 @@ 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);
|
||||
static CV_PossibleValue_t kartdebugwaypoint_cons_t[] = {{0, "Off"}, {1, "Forwards"}, {2, "Backwards"}, {0, NULL}};
|
||||
|
|
@ -2373,11 +2370,12 @@ void WeaponPref_Send(UINT8 ssplayer)
|
|||
if (player->randomrestat)
|
||||
prefs |= WP_RANDOMRESTAT;
|
||||
|
||||
UINT8 buf[4];
|
||||
UINT8 buf[5];
|
||||
buf[0] = prefs;
|
||||
buf[1] = cv_mindelay.value;
|
||||
buf[2] = player->kartspeedrestat;
|
||||
buf[3] = player->kartweightrestat;
|
||||
buf[4] = cv_driftmode[ssplayer].value;
|
||||
|
||||
SendNetXCmdForPlayer(ssplayer, XD_WEAPONPREF, buf, sizeof buf);
|
||||
}
|
||||
|
|
@ -2465,6 +2463,16 @@ static void Got_WeaponPref(UINT8 **cp,INT32 playernum)
|
|||
player->kartspeedrestat = kartspeedrestat;
|
||||
player->kartweightrestat = kartweightrestat;
|
||||
|
||||
UINT8 driftmode = READUINT8(*cp);
|
||||
if (driftmode >= NUMDRIFTMODES)
|
||||
{
|
||||
CONS_Alert(CONS_WARNING, M_GetText("Illegal drift mode received from %s\n"), player_names[playernum]);
|
||||
if (server)
|
||||
SendKick(playernum, KICK_MSG_CON_FAIL);
|
||||
return;
|
||||
}
|
||||
player->driftmode = driftmode;
|
||||
|
||||
// SEE ALSO g_demo.c
|
||||
demo_extradata[playernum] |= DXD_WEAPONPREF;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -243,7 +243,6 @@ 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, 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;
|
||||
|
|
|
|||
|
|
@ -435,6 +435,15 @@ struct saltyhop_t
|
|||
fixed_t momz, zoffset; // erm... the mechanism....
|
||||
};
|
||||
|
||||
// this WILL conflict with a future commit I just need this to proto
|
||||
typedef enum
|
||||
{
|
||||
DRIFTMODE_CLASSIC = 0,
|
||||
DRIFTMODE_SNAPSHOT,
|
||||
DRIFTMODE_INSTANT,
|
||||
NUMDRIFTMODES
|
||||
} driftmode_e;
|
||||
|
||||
// enum for saved lap times
|
||||
typedef enum
|
||||
{
|
||||
|
|
@ -566,6 +575,7 @@ struct player_t
|
|||
UINT8 justbumped; // Prevent players from endlessly bumping into each other
|
||||
boolean noclip; // Fix Grow breaking the "noclip" cheat. Also applies noclip as a bonus.
|
||||
|
||||
driftmode_e driftmode;
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -464,6 +464,15 @@ consvar_t cv_jitterlegacy[MAXSPLITSCREENPLAYERS] = {
|
|||
CVAR_INIT ("driftjitter4", "Ring Racers", CV_SAVE|CV_CALL|CV_NOINIT, driftjitter_cons_t, weaponPrefChange)
|
||||
};
|
||||
|
||||
|
||||
static CV_PossibleValue_t driftmode_cons_t[] = {{DRIFTMODE_CLASSIC, "Classic"}, {DRIFTMODE_SNAPSHOT, "Snapshot"}, {DRIFTMODE_INSTANT, "Instant"}, {0, NULL}};
|
||||
consvar_t cv_driftmode[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("driftmode", "Classic", CV_SAVE|CV_CALL|CV_NOINIT, driftjitter_cons_t, weaponPrefChange),
|
||||
CVAR_INIT ("driftmode2", "Classic", CV_SAVE|CV_CALL|CV_NOINIT, driftjitter_cons_t, weaponPrefChange),
|
||||
CVAR_INIT ("driftmode3", "Classic", CV_SAVE|CV_CALL|CV_NOINIT, driftjitter_cons_t, weaponPrefChange),
|
||||
CVAR_INIT ("driftmode4", "Classic", CV_SAVE|CV_CALL|CV_NOINIT, driftjitter_cons_t, weaponPrefChange)
|
||||
};
|
||||
|
||||
static CV_PossibleValue_t zerotoone_cons_t[] = {{0, "MIN"}, {FRACUNIT, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_deadzonex[MAXSPLITSCREENPLAYERS] = {
|
||||
CVAR_INIT ("xdeadzone", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL),
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ extern consvar_t cv_invertmouse;
|
|||
extern consvar_t cv_kickstartaccel[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_shrinkme[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_jitterlegacy[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_driftmode[MAXSPLITSCREENPLAYERS];
|
||||
|
||||
extern consvar_t cv_deadzonex[MAXSPLITSCREENPLAYERS];
|
||||
extern consvar_t cv_deadzoney[MAXSPLITSCREENPLAYERS];
|
||||
|
|
|
|||
|
|
@ -7573,7 +7573,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
player->flamecamtime -= 1;
|
||||
}
|
||||
|
||||
if (!cv_kartdrift_operationorder.value)
|
||||
if (player->driftmode != DRIFTMODE_INSTANT)
|
||||
{
|
||||
if (cmd->buttons & BT_DRIFT)
|
||||
{
|
||||
|
|
@ -9372,7 +9372,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
}
|
||||
|
||||
// drift-turn snapshot experiment disabled, drop the snapshot and use the turning value from this tick
|
||||
if (!cv_kartdrift_snapshot.value)
|
||||
if (player->driftmode != DRIFTMODE_SNAPSHOT)
|
||||
{
|
||||
player->driftturnsnapshot = player->cmd.turning;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -606,6 +606,7 @@ static void P_NetSyncPlayers(savebuffer_t *save)
|
|||
SYNC(players[i].justbumped);
|
||||
SYNCBOOLEAN(players[i].noclip);
|
||||
|
||||
SYNC(players[i].driftmode);
|
||||
SYNC(players[i].drift);
|
||||
SYNC(players[i].driftturnsnapshot);
|
||||
SYNC(players[i].driftlock);
|
||||
|
|
|
|||
Loading…
Reference in a new issue