From 1e4bc482d044b4ea16947389553f19b60fb3104b Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 20 Jan 2022 02:07:48 -0600 Subject: [PATCH] very small tiny fixes --- src/d_netcmd.c | 1 + src/d_netcmd.h | 2 +- src/k_director.c | 15 ++++++++++++--- src/k_kart.c | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 7fa504e90..ed2d47ede 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -433,6 +433,7 @@ consvar_t cv_kartdebugbotpredict = CVAR_INIT ("kartdebugbotpredict", "Off", CV_N consvar_t cv_kartdebugcheckpoint = CVAR_INIT ("kartdebugcheckpoint", "Off", CV_NOSHOWHELP, CV_OnOff, NULL); consvar_t cv_kartdebugnodes = CVAR_INIT ("kartdebugnodes", "Off", CV_NOSHOWHELP, CV_OnOff, NULL); consvar_t cv_kartdebugcolorize = CVAR_INIT ("kartdebugcolorize", "Off", CV_NOSHOWHELP, CV_OnOff, NULL); +consvar_t cv_kartdebugdirector = CVAR_INIT ("kartdebugdirector", "Off", CV_NOSHOWHELP, CV_OnOff, NULL); static CV_PossibleValue_t votetime_cons_t[] = {{10, "MIN"}, {3600, "MAX"}, {0, NULL}}; consvar_t cv_votetime = CVAR_INIT ("votetime", "20", CV_NETVAR, votetime_cons_t, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 0e8ef25e2..4813dd07e 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -87,7 +87,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; -extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize; +extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector; extern consvar_t cv_kartdebugwaypoints, cv_kartdebugbotpredict; extern consvar_t cv_itemfinder; diff --git a/src/k_director.c b/src/k_director.c index 26358680f..3461a6327 100644 --- a/src/k_director.c +++ b/src/k_director.c @@ -37,7 +37,6 @@ INT32 sortedplayers[MAXPLAYERS] = {0}; // position-1 goes in, player index comes INT32 gap[MAXPLAYERS] = {0}; // gap between a given position and their closest pursuer INT32 boredom[MAXPLAYERS] = {0}; // how long has a given position had no credible attackers? - fixed_t K_GetFinishGap(INT32 leader, INT32 follower) { fixed_t dista = players[follower].distancetofinish; fixed_t distb = players[leader].distancetofinish; @@ -75,12 +74,16 @@ boolean K_CanSwitchDirector(void) { INT32 *displayplayerp = &displayplayers[0]; if (players[*displayplayerp].trickpanel > 0) return false; - return cooldown >= SWITCHTIME; + if (cooldown < SWITCHTIME); + return false; + return true; } void K_DirectorSwitch(INT32 player, boolean force) { if (P_IsDisplayPlayer(&players[player])) return; + if (players[player].exiting) + return; if (!force && !K_CanSwitchDirector()) return; G_ResetView(1, player, true); @@ -88,6 +91,8 @@ void K_DirectorSwitch(INT32 player, boolean force) { } void K_DirectorForceSwitch(INT32 player, INT32 time) { + if (players[player].exiting) + return; attacker = player; freeze = time; } @@ -106,6 +111,8 @@ 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")); @@ -148,7 +155,7 @@ void K_UpdateDirector(void) { } // aaight, time to walk through the standings to find the first interesting pair - for(targetposition = 0; targetposition < MAXPLAYERS; targetposition++) { + for(targetposition = 0; targetposition < MAXPLAYERS-1; targetposition++) { INT32 target; // you are out of players, try again @@ -163,9 +170,11 @@ void K_UpdateDirector(void) { if (players[sortedplayers[targetposition+1]].exiting) continue; + // don't risk switching away from forward pairs at race end, might miss something! if (maxdist > PINCHDIST) { // if the "next" player is close enough, they should be able to see everyone fine! // walk back through the standings to find a vantage that gets everyone in frame. + // (also creates a pretty cool effect w/ overtakes at speed) while (targetposition < MAXPLAYERS && gap[targetposition+1] < WALKBACKDIST) { targetposition++; } diff --git a/src/k_kart.c b/src/k_kart.c index 6c61ab6b1..d1b654411 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -261,6 +261,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartdebugcheckpoint); CV_RegisterVar(&cv_kartdebugnodes); CV_RegisterVar(&cv_kartdebugcolorize); + CV_RegisterVar(&cv_kartdebugdirector); } //}