Implement Worst mode for lagless (for #129)
This commit is contained in:
parent
db315f72ac
commit
f60e499f91
5 changed files with 19 additions and 12 deletions
|
|
@ -117,7 +117,7 @@ UINT32 playerpacketlosstable[MAXPLAYERS];
|
|||
UINT32 playerdelaytable[MAXPLAYERS]; // mindelay values.
|
||||
|
||||
static tic_t lowest_lag;
|
||||
boolean server_lagless;
|
||||
SINT8 server_lagless;
|
||||
|
||||
SINT8 nodetoplayer[MAXNETNODES];
|
||||
SINT8 nodetoplayer2[MAXNETNODES]; // say the numplayer for this node if any (splitscreen)
|
||||
|
|
@ -5989,6 +5989,7 @@ static tic_t gametime = 0;
|
|||
static void UpdatePingTable(void)
|
||||
{
|
||||
tic_t fastest;
|
||||
tic_t slowest;
|
||||
tic_t lag;
|
||||
|
||||
INT32 i;
|
||||
|
|
@ -5999,6 +6000,7 @@ static void UpdatePingTable(void)
|
|||
PingUpdate();
|
||||
|
||||
fastest = 0;
|
||||
slowest = 0;
|
||||
|
||||
// update node latency values so we can take an average later.
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
|
|
@ -6013,14 +6015,19 @@ static void UpdatePingTable(void)
|
|||
lag = playerpingtable[i];
|
||||
if (! fastest || lag < fastest)
|
||||
fastest = lag;
|
||||
|
||||
if (! slowest || lag > slowest)
|
||||
slowest = lag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (server_lagless)
|
||||
if (server_lagless == 1)
|
||||
lowest_lag = 0;
|
||||
else
|
||||
else if (server_lagless == 0)
|
||||
lowest_lag = fastest;
|
||||
else if (server_lagless == -1)
|
||||
lowest_lag = slowest;
|
||||
|
||||
// Don't gentleman below your mindelay
|
||||
if (lowest_lag < (tic_t)cv_mindelay.value)
|
||||
|
|
|
|||
|
|
@ -489,7 +489,7 @@ extern UINT32 playerpacketlosstable[MAXPLAYERS];
|
|||
extern UINT32 playerdelaytable[MAXPLAYERS];
|
||||
extern tic_t servermaxping;
|
||||
|
||||
extern boolean server_lagless;
|
||||
extern SINT8 server_lagless;
|
||||
extern consvar_t cv_mindelay;
|
||||
|
||||
extern consvar_t cv_netticbuffer, cv_allownewplayer, cv_maxplayers, cv_joindelay;
|
||||
|
|
|
|||
|
|
@ -655,7 +655,8 @@ consvar_t cv_nettimeout = CVAR_INIT ("nettimeout", "210", CV_CALL|CV_SAVE, netti
|
|||
consvar_t cv_jointimeout = CVAR_INIT ("jointimeout", "210", CV_CALL|CV_SAVE, nettimeout_cons_t, JoinTimeout_OnChange);
|
||||
consvar_t cv_maxping = CVAR_INIT ("maxdelay", "20", CV_SAVE, CV_Unsigned, NULL);
|
||||
|
||||
consvar_t cv_lagless = CVAR_INIT ("lagless", "On", CV_SAVE|CV_NETVAR|CV_CALL, CV_OnOff, Lagless_OnChange);
|
||||
static CV_PossibleValue_t lagless_cons_t[] = {{-1, "Worst"}, {0, "Best"}, {1, "Lagless"}, {0, NULL}};
|
||||
consvar_t cv_lagless = CVAR_INIT ("lagless", "Lagless", CV_SAVE|CV_NETVAR|CV_CALL, lagless_cons_t, Lagless_OnChange);
|
||||
|
||||
static CV_PossibleValue_t pingtimeout_cons_t[] = {{8, "MIN"}, {120, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_pingtimeout = CVAR_INIT ("maxdelaytimeout", "10", CV_SAVE, pingtimeout_cons_t, NULL);
|
||||
|
|
@ -5408,9 +5409,8 @@ static void JoinTimeout_OnChange(void)
|
|||
static void
|
||||
Lagless_OnChange (void)
|
||||
{
|
||||
/* don't back out of dishonesty, or go lagless after playing honestly */
|
||||
if (cv_lagless.value && gamestate == GS_LEVEL)
|
||||
server_lagless = true;
|
||||
if (gamestate == GS_LEVEL)
|
||||
server_lagless = cv_lagless.value;
|
||||
}
|
||||
|
||||
UINT32 timelimitintics = 0;
|
||||
|
|
|
|||
|
|
@ -2238,7 +2238,7 @@ INT32 K_DrawNeoTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines
|
|||
{
|
||||
V_DrawThinString(x - 18 + 25, y, 0, "CPU");
|
||||
}
|
||||
else if (tab[i].num != serverplayer || !server_lagless)
|
||||
else if (tab[i].num != serverplayer || (server_lagless == 0 || server_lagless == -1))
|
||||
{
|
||||
INT32 xoff = cv_pingmeasurement.value == 1 ? 33 : 26;
|
||||
|
||||
|
|
@ -2495,7 +2495,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
|
|||
{
|
||||
V_DrawString(x + ((i < 8) ? -25 : rightoffset + 3), y-2, V_SNAPTOLEFT, "CPU");
|
||||
}
|
||||
else if (tab[i].num != serverplayer || !server_lagless)
|
||||
else if (tab[i].num != serverplayer || (server_lagless == 0 || server_lagless == -1))
|
||||
{
|
||||
HU_drawPing(x + ((i < 8) ? -17 : rightoffset + 11), y-4, playerpingtable[tab[i].num], playerdelaytable[tab[i].num], playerpacketlosstable[tab[i].num], 0, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1288,9 +1288,9 @@ void I_FinishUpdate(void)
|
|||
SCR_DisplayTicRate();
|
||||
|
||||
if (cv_showping.value && netgame &&
|
||||
( consoleplayer != serverplayer || ! server_lagless ))
|
||||
( consoleplayer != serverplayer || (server_lagless == 0 || server_lagless == -1) ))
|
||||
{
|
||||
if (server_lagless)
|
||||
if (server_lagless == 1)
|
||||
{
|
||||
if (consoleplayer != serverplayer)
|
||||
SCR_DisplayLocalPing();
|
||||
|
|
|
|||
Loading…
Reference in a new issue