From ab89dcd36646133a8e157fd6d03084e8b4fad7b0 Mon Sep 17 00:00:00 2001 From: zico Date: Wed, 30 Mar 2016 20:09:46 +0200 Subject: [PATCH] Reworked 586ba9ff6db85b976f074589c5dd7e2d6ff40cd1: Show player ping along with player kills/scores and made it a toggle for HUD configuration so the player can enable it permanently --- common/main/playsave.h | 1 + similar/main/gamecntl.cpp | 4 ++-- similar/main/gauges.cpp | 30 ++++++++++++++++++++++-------- similar/main/menu.cpp | 1 + similar/main/playsave.cpp | 5 +++++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/common/main/playsave.h b/common/main/playsave.h index f4baa3331..536acd392 100644 --- a/common/main/playsave.h +++ b/common/main/playsave.h @@ -144,6 +144,7 @@ struct player_config : prohibit_void_ptr int PRShot; ubyte NoRedundancy; ubyte MultiMessages; + ubyte MultiPingHud; ubyte NoRankings; #if defined(DXX_BUILD_DESCENT_I) ubyte BombGauge; diff --git a/similar/main/gamecntl.cpp b/similar/main/gamecntl.cpp index e86ec66c6..1995d5201 100644 --- a/similar/main/gamecntl.cpp +++ b/similar/main/gamecntl.cpp @@ -464,7 +464,7 @@ static int HandleDemoKey(int key) case KEY_F4: Newdemo_show_percentage = !Newdemo_show_percentage; break; KEY_MAC(case KEY_COMMAND+KEY_7:) case KEY_F7: - Show_kill_list = (Show_kill_list+1) % ((Newdemo_game_mode & GM_TEAM) ? 5 : 4); + Show_kill_list = (Show_kill_list+1) % ((Newdemo_game_mode & GM_TEAM) ? 4 : 3); break; case KEY_ESC: if (CGameArg.SysAutoDemo) @@ -819,7 +819,7 @@ static window_event_result HandleSystemKey(int key) KEY_MAC(case KEY_COMMAND+KEY_7:) case KEY_F7: - Show_kill_list = (Show_kill_list+1) % ((Game_mode & GM_TEAM) ? 5 : 4); + Show_kill_list = (Show_kill_list+1) % ((Game_mode & GM_TEAM) ? 4 : 3); if (Game_mode & GM_MULTI) multi_sort_kill_list(); break; diff --git a/similar/main/gauges.cpp b/similar/main/gauges.cpp index 0428ff93c..feb5621ee 100644 --- a/similar/main/gauges.cpp +++ b/similar/main/gauges.cpp @@ -2822,7 +2822,7 @@ static void hud_show_kill_list() { playernum_t n_players; playernum_array_t player_list; - int n_left,i,x0,x1,y,save_y; + int n_left,i,x0,x1,x2,y,save_y; if (Show_kill_list_timer > 0) { @@ -2835,7 +2835,7 @@ static void hud_show_kill_list() n_players = multi_get_kill_list(player_list); - if (Show_kill_list == 4) + if (Show_kill_list == 3) n_players = 2; if (n_players <= 4) @@ -2869,6 +2869,8 @@ static void hud_show_kill_list() const auto &&fspacx1 = fspacx(1); const auto &&fspacx2 = fspacx(2); const auto &&fspacx18 = fspacx(18); + const auto &&fspacx35 = fspacx(35); + const auto &&fspacx64 = fspacx(64); x0 = fspacx1; for (i=0;i=n_left) { x0 = bmw_x0_cockpit; x1 = bmw_x1_multi; + if (PlayerCfg.MultiPingHud) + { + x0 -= fspacx35; + x1 -= fspacx35; + } if (i==n_left) y = save_y; @@ -2889,14 +2896,14 @@ static void hud_show_kill_list() x1 -= fspacx18; } - if (Show_kill_list == 4) + if (Show_kill_list == 3) player_num = i; else player_num = player_list[i]; color_t fontcolor; rgb color; - if (Show_kill_list == 1 || Show_kill_list==2 || Show_kill_list==3) + if (Show_kill_list == 1 || Show_kill_list==2) { if (Players[player_num].connected != CONNECT_PLAYING) color.r = color.g = color.b = 12; @@ -2911,7 +2918,7 @@ static void hud_show_kill_list() fontcolor = BM_XRGB(color.r, color.g, color.b); gr_set_fontcolor(fontcolor, -1); - if (Show_kill_list == 4) + if (Show_kill_list == 3) name = Netgame.team_name[i]; else if (Game_mode & GM_BOUNTY && player_num == Bounty_target && GameTime64&0x10000) { @@ -2946,9 +2953,7 @@ static void hud_show_kill_list() ); gr_printf(x1, y, "%i%%", eff <= 0 ? 0 : eff); } - else if (Show_kill_list == 3) - gr_printf(x1,y,"%4dms",Netgame.players[i].ping); - else if (Show_kill_list == 4) + else if (Show_kill_list == 3) gr_printf(x1,y,"%3d",team_kills[i]); else if (Game_mode & GM_MULTI_COOP) gr_printf(x1,y,"%-6d",Players[player_num].score); @@ -2957,6 +2962,15 @@ static void hud_show_kill_list() else gr_printf(x1,y,"%3d",Players[player_num].net_kills_total); + if (PlayerCfg.MultiPingHud && Show_kill_list != 3) + { + if (Game_mode & GM_MULTI_COOP) + x2 = SWIDTH - (fspacx64/2); + else + x2 = x0 + fspacx64; + gr_printf(x2,y,"%4dms",Netgame.players[player_num].ping*44); + } + y += line_spacing; } } diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index e56d2d127..d345b4a5d 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -1442,6 +1442,7 @@ enum { DXX_MENUITEM(VERB, CHECK, "Screenshots without HUD",opt_screenshot,PlayerCfg.PRShot) \ DXX_MENUITEM(VERB, CHECK, "No redundant pickup messages",opt_redundant,PlayerCfg.NoRedundancy) \ DXX_MENUITEM(VERB, CHECK, "Show Player chat only (Multi)",opt_playerchat,PlayerCfg.MultiMessages) \ + DXX_MENUITEM(VERB, CHECK, "Show Player ping (Multi)",opt_playerping,PlayerCfg.MultiPingHud) \ DXX_MENUITEM(VERB, CHECK, "Cloak/Invulnerability Timers",opt_cloakinvultimer,PlayerCfg.CloakInvulTimer) \ DXX_GAME_SPECIFIC_HUDOPTIONS(VERB) \ diff --git a/similar/main/playsave.cpp b/similar/main/playsave.cpp index 6c218c764..742812a95 100644 --- a/similar/main/playsave.cpp +++ b/similar/main/playsave.cpp @@ -159,6 +159,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define TOGGLES_PRSHOT_NAME_TEXT "prshot" #define TOGGLES_NOREDUNDANCY_NAME_TEXT "noredundancy" #define TOGGLES_MULTIMESSAGES_NAME_TEXT "multimessages" +#define TOGGLES_MULTIPINGHUD_NAME_TEXT "multipinghud" #define TOGGLES_NORANKINGS_NAME_TEXT "norankings" #define TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "automapfreeflight" #define TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "nofireautoselect" @@ -250,6 +251,7 @@ int new_player_config() PlayerCfg.PRShot = 0; PlayerCfg.NoRedundancy = 0; PlayerCfg.MultiMessages = 0; + PlayerCfg.MultiPingHud = 0; PlayerCfg.NoRankings = 0; PlayerCfg.AutomapFreeFlight = 0; PlayerCfg.NoFireAutoselect = FiringAutoselectMode::Immediate; @@ -456,6 +458,8 @@ static void read_player_dxx(const char *filename) PlayerCfg.NoRedundancy = atoi(value); if(!strcmp(line,TOGGLES_MULTIMESSAGES_NAME_TEXT)) PlayerCfg.MultiMessages = atoi(value); + if(!strcmp(line,TOGGLES_MULTIPINGHUD_NAME_TEXT)) + PlayerCfg.MultiPingHud = atoi(value); if(!strcmp(line,TOGGLES_NORANKINGS_NAME_TEXT)) PlayerCfg.NoRankings = atoi(value); if(!strcmp(line,TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT)) @@ -757,6 +761,7 @@ static int write_player_dxx(const char *filename) PHYSFSX_printf(fout,TOGGLES_PRSHOT_NAME_TEXT "=%i\n",PlayerCfg.PRShot); PHYSFSX_printf(fout,TOGGLES_NOREDUNDANCY_NAME_TEXT "=%i\n",PlayerCfg.NoRedundancy); PHYSFSX_printf(fout,TOGGLES_MULTIMESSAGES_NAME_TEXT "=%i\n",PlayerCfg.MultiMessages); + PHYSFSX_printf(fout,TOGGLES_MULTIPINGHUD_NAME_TEXT "=%i\n",PlayerCfg.MultiPingHud); PHYSFSX_printf(fout,TOGGLES_NORANKINGS_NAME_TEXT "=%i\n",PlayerCfg.NoRankings); PHYSFSX_printf(fout,TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "=%i\n",PlayerCfg.AutomapFreeFlight); PHYSFSX_printf(fout,TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "=%i\n",static_cast(PlayerCfg.NoFireAutoselect));