my workflow is beyond your understanding

This commit is contained in:
AJ Martinez 2022-01-20 03:39:00 -06:00
parent 1e4bc482d0
commit 24b05451f6
4 changed files with 23 additions and 11 deletions

View file

@ -510,6 +510,8 @@ static CV_PossibleValue_t perfstats_cons_t[] = {
{0, "Off"}, {1, "Rendering"}, {2, "Logic"}, {3, "ThinkFrame"}, {0, NULL}};
consvar_t cv_perfstats = CVAR_INIT ("perfstats", "Off", 0, perfstats_cons_t, NULL);
consvar_t cv_director = CVAR_INIT ("director", "Off", 0, CV_OnOff, NULL);
char timedemo_name[256];
boolean timedemo_csv;
char timedemo_csv_id[256];
@ -742,6 +744,8 @@ void D_RegisterServerCommands(void)
CV_RegisterVar(&cv_showping);
CV_RegisterVar(&cv_showviewpointtext);
CV_RegisterVar(&cv_director);
CV_RegisterVar(&cv_dummyconsvar);
#ifdef USE_STUN

View file

@ -113,6 +113,8 @@ extern consvar_t cv_sleep;
extern consvar_t cv_perfstats;
extern consvar_t cv_director;
extern char timedemo_name[256];
extern boolean timedemo_csv;
extern char timedemo_csv_id[256];

View file

@ -12,13 +12,12 @@
#include "d_netcmd.h"
#include "p_local.h"
#define SWITCHTIME TICRATE*5
#define DEBOUNCETIME TICRATE/6
#define BOREDOMTIME 3*TICRATE/2
#define TRANSFERTIME TICRATE
#define BREAKAWAYDIST 4000
#define WALKBACKDIST 600
#define PINCHDIST 30000
#define SWITCHTIME TICRATE*5 // cooldown between unforced switches
#define BOREDOMTIME 3*TICRATE/2 // how long until players considered far apart?
#define TRANSFERTIME TICRATE // how long to delay reaction shots?
#define BREAKAWAYDIST 4000 // how *far* until players considered far apart?
#define WALKBACKDIST 600 // how close should a trailing player be before we switch?
#define PINCHDIST 30000 // how close should the leader be to be considered "end of race"?
void K_UpdateDirectorPositions(void);
boolean K_CanSwitchDirector(void);
@ -31,7 +30,7 @@ void K_DirectorForceSwitch(INT32 player, INT32 time);
INT32 cooldown = 0; // how long has it been since we last switched?
INT32 freeze = 0; // when nonzero, fixed switch pending, freeze logic!
INT32 attacker = 0; // who to switch to when freeze delay elapses
INT32 maxdist = 0;
INT32 maxdist = 0; // how far is the closest player from finishing?
INT32 sortedplayers[MAXPLAYERS] = {0}; // position-1 goes in, player index comes out.
INT32 gap[MAXPLAYERS] = {0}; // gap between a given position and their closest pursuer
@ -74,7 +73,7 @@ boolean K_CanSwitchDirector(void) {
INT32 *displayplayerp = &displayplayers[0];
if (players[*displayplayerp].trickpanel > 0)
return false;
if (cooldown < SWITCHTIME);
if (cooldown < SWITCHTIME)
return false;
return true;
}
@ -111,20 +110,24 @@ void K_DrawDirectorDebugger(void) {
INT32 leader;
INT32 follower;
INT32 ytxt;
if (!cv_kartdebugdirector.value)
return;
V_DrawThinString(10, 0, V_70TRANS, va("PLACE"));
V_DrawThinString(40, 0, V_70TRANS, va("CONF?"));
V_DrawThinString(80, 0, V_70TRANS, va("GAP"));
V_DrawThinString(120, 0, V_70TRANS, va("BORED"));
V_DrawThinString(150, 0, V_70TRANS, va("COOLDOWN: %d", cooldown));
V_DrawThinString(230, 0, V_70TRANS, va("MAXDIST: %d", maxdist));
for (playernum = 0; playernum < MAXPLAYERS-1; ++playernum) {
ytxt = 10*playernum+10;
leader = sortedplayers[playernum];
follower = sortedplayers[playernum+1];
if (leader == -1 || follower == -1)
break;
V_DrawThinString(10, ytxt, V_70TRANS, va("%d", playernum));
V_DrawThinString(20, ytxt, V_70TRANS, va("%d", playernum+1));
if (players[leader].positiondelay)
@ -143,6 +146,9 @@ void K_UpdateDirector(void) {
INT32 *displayplayerp = &displayplayers[0];
INT32 targetposition;
if (!cv_director.value)
return;
K_UpdateDirectorPositions();
cooldown++;
@ -180,7 +186,6 @@ void K_UpdateDirector(void) {
}
}
target = sortedplayers[targetposition+1];
// if we're certain the back half of the pair is actually in this position, try to switch

View file

@ -3276,10 +3276,11 @@ static void K_RemoveGrowShrink(player_t *player)
void K_TumblePlayer(player_t *player, mobj_t *inflictor, mobj_t *source)
{
K_DirectorFollowAttack(player, inflictor, source);
fixed_t gravityadjust;
(void)source;
K_DirectorFollowAttack(player, inflictor, source);
player->tumbleBounces = 1;
if (player->tripWireState == TRIP_PASSED)