From e11101f69a66693f6dcde585becf3f553589567e Mon Sep 17 00:00:00 2001 From: James R Date: Wed, 3 Jun 2020 17:08:41 -0700 Subject: [PATCH] Don't show ping if no one else is racing --- src/d_clisrv.c | 12 ++++++++++++ src/d_clisrv.h | 1 + src/sdl/i_video.c | 22 +++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 37e39aadf..8f5b8c375 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5736,6 +5736,18 @@ INT32 D_NumPlayers(void) return num; } +/** Return whether a player is a real person (not a CPU) and not spectating. + */ +boolean D_IsPlayerHumanAndGaming (INT32 player_number) +{ + player_t * player = &players[player_number]; + return ( + playeringame[player_number] && + ! player->spectator && + ! player->bot + ); +} + tic_t GetLag(INT32 node) { return gametic - nettics[node]; diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 1ef85b4f9..6b1acf60b 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -629,6 +629,7 @@ extern UINT8 playernode[MAXPLAYERS]; extern UINT8 playerconsole[MAXPLAYERS]; INT32 D_NumPlayers(void); +boolean D_IsPlayerHumanAndGaming(INT32 player_number); void D_ResetTiccmds(void); tic_t GetLag(INT32 node); diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c index 5713760e1..7630f705c 100644 --- a/src/sdl/i_video.c +++ b/src/sdl/i_video.c @@ -1375,6 +1375,8 @@ static inline boolean I_SkipFrame(void) // void I_FinishUpdate(void) { + int player; + if (rendermode == render_none) return; //Alam: No software or OpenGl surface @@ -1389,7 +1391,25 @@ void I_FinishUpdate(void) if (cv_showping.value && netgame && ( consoleplayer != serverplayer || ! server_lagless )) { - SCR_DisplayLocalPing(); + if (server_lagless) + { + if (consoleplayer != serverplayer) + SCR_DisplayLocalPing(); + } + else + { + for ( + player = 1; + player < MAXPLAYERS; + player++ + ){ + if (D_IsPlayerHumanAndGaming(player)) + { + SCR_DisplayLocalPing(); + break; + } + } + } } }