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

This commit is contained in:
zico 2016-03-30 20:09:46 +02:00
parent 649475e3bc
commit ab89dcd366
5 changed files with 31 additions and 10 deletions

View file

@ -144,6 +144,7 @@ struct player_config : prohibit_void_ptr<player_config>
int PRShot; int PRShot;
ubyte NoRedundancy; ubyte NoRedundancy;
ubyte MultiMessages; ubyte MultiMessages;
ubyte MultiPingHud;
ubyte NoRankings; ubyte NoRankings;
#if defined(DXX_BUILD_DESCENT_I) #if defined(DXX_BUILD_DESCENT_I)
ubyte BombGauge; ubyte BombGauge;

View file

@ -464,7 +464,7 @@ static int HandleDemoKey(int key)
case KEY_F4: Newdemo_show_percentage = !Newdemo_show_percentage; break; case KEY_F4: Newdemo_show_percentage = !Newdemo_show_percentage; break;
KEY_MAC(case KEY_COMMAND+KEY_7:) KEY_MAC(case KEY_COMMAND+KEY_7:)
case KEY_F7: 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; break;
case KEY_ESC: case KEY_ESC:
if (CGameArg.SysAutoDemo) if (CGameArg.SysAutoDemo)
@ -819,7 +819,7 @@ static window_event_result HandleSystemKey(int key)
KEY_MAC(case KEY_COMMAND+KEY_7:) KEY_MAC(case KEY_COMMAND+KEY_7:)
case KEY_F7: 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) if (Game_mode & GM_MULTI)
multi_sort_kill_list(); multi_sort_kill_list();
break; break;

View file

@ -2822,7 +2822,7 @@ static void hud_show_kill_list()
{ {
playernum_t n_players; playernum_t n_players;
playernum_array_t player_list; 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) if (Show_kill_list_timer > 0)
{ {
@ -2835,7 +2835,7 @@ static void hud_show_kill_list()
n_players = multi_get_kill_list(player_list); n_players = multi_get_kill_list(player_list);
if (Show_kill_list == 4) if (Show_kill_list == 3)
n_players = 2; n_players = 2;
if (n_players <= 4) if (n_players <= 4)
@ -2869,6 +2869,8 @@ static void hud_show_kill_list()
const auto &&fspacx1 = fspacx(1); const auto &&fspacx1 = fspacx(1);
const auto &&fspacx2 = fspacx(2); const auto &&fspacx2 = fspacx(2);
const auto &&fspacx18 = fspacx(18); const auto &&fspacx18 = fspacx(18);
const auto &&fspacx35 = fspacx(35);
const auto &&fspacx64 = fspacx(64);
x0 = fspacx1; x0 = fspacx1;
for (i=0;i<n_players;i++) { for (i=0;i<n_players;i++) {
playernum_t player_num; playernum_t player_num;
@ -2877,6 +2879,11 @@ static void hud_show_kill_list()
if (i>=n_left) { if (i>=n_left) {
x0 = bmw_x0_cockpit; x0 = bmw_x0_cockpit;
x1 = bmw_x1_multi; x1 = bmw_x1_multi;
if (PlayerCfg.MultiPingHud)
{
x0 -= fspacx35;
x1 -= fspacx35;
}
if (i==n_left) if (i==n_left)
y = save_y; y = save_y;
@ -2889,14 +2896,14 @@ static void hud_show_kill_list()
x1 -= fspacx18; x1 -= fspacx18;
} }
if (Show_kill_list == 4) if (Show_kill_list == 3)
player_num = i; player_num = i;
else else
player_num = player_list[i]; player_num = player_list[i];
color_t fontcolor; color_t fontcolor;
rgb color; 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) if (Players[player_num].connected != CONNECT_PLAYING)
color.r = color.g = color.b = 12; 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); fontcolor = BM_XRGB(color.r, color.g, color.b);
gr_set_fontcolor(fontcolor, -1); gr_set_fontcolor(fontcolor, -1);
if (Show_kill_list == 4) if (Show_kill_list == 3)
name = Netgame.team_name[i]; name = Netgame.team_name[i];
else if (Game_mode & GM_BOUNTY && player_num == Bounty_target && GameTime64&0x10000) else if (Game_mode & GM_BOUNTY && player_num == Bounty_target && GameTime64&0x10000)
{ {
@ -2947,8 +2954,6 @@ static void hud_show_kill_list()
gr_printf(x1, y, "%i%%", eff <= 0 ? 0 : eff); gr_printf(x1, y, "%i%%", eff <= 0 ? 0 : eff);
} }
else if (Show_kill_list == 3) else if (Show_kill_list == 3)
gr_printf(x1,y,"%4dms",Netgame.players[i].ping);
else if (Show_kill_list == 4)
gr_printf(x1,y,"%3d",team_kills[i]); gr_printf(x1,y,"%3d",team_kills[i]);
else if (Game_mode & GM_MULTI_COOP) else if (Game_mode & GM_MULTI_COOP)
gr_printf(x1,y,"%-6d",Players[player_num].score); gr_printf(x1,y,"%-6d",Players[player_num].score);
@ -2957,6 +2962,15 @@ static void hud_show_kill_list()
else else
gr_printf(x1,y,"%3d",Players[player_num].net_kills_total); 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; y += line_spacing;
} }
} }

View file

@ -1442,6 +1442,7 @@ enum {
DXX_MENUITEM(VERB, CHECK, "Screenshots without HUD",opt_screenshot,PlayerCfg.PRShot) \ 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, "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 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_MENUITEM(VERB, CHECK, "Cloak/Invulnerability Timers",opt_cloakinvultimer,PlayerCfg.CloakInvulTimer) \
DXX_GAME_SPECIFIC_HUDOPTIONS(VERB) \ DXX_GAME_SPECIFIC_HUDOPTIONS(VERB) \

View file

@ -159,6 +159,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#define TOGGLES_PRSHOT_NAME_TEXT "prshot" #define TOGGLES_PRSHOT_NAME_TEXT "prshot"
#define TOGGLES_NOREDUNDANCY_NAME_TEXT "noredundancy" #define TOGGLES_NOREDUNDANCY_NAME_TEXT "noredundancy"
#define TOGGLES_MULTIMESSAGES_NAME_TEXT "multimessages" #define TOGGLES_MULTIMESSAGES_NAME_TEXT "multimessages"
#define TOGGLES_MULTIPINGHUD_NAME_TEXT "multipinghud"
#define TOGGLES_NORANKINGS_NAME_TEXT "norankings" #define TOGGLES_NORANKINGS_NAME_TEXT "norankings"
#define TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "automapfreeflight" #define TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "automapfreeflight"
#define TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "nofireautoselect" #define TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "nofireautoselect"
@ -250,6 +251,7 @@ int new_player_config()
PlayerCfg.PRShot = 0; PlayerCfg.PRShot = 0;
PlayerCfg.NoRedundancy = 0; PlayerCfg.NoRedundancy = 0;
PlayerCfg.MultiMessages = 0; PlayerCfg.MultiMessages = 0;
PlayerCfg.MultiPingHud = 0;
PlayerCfg.NoRankings = 0; PlayerCfg.NoRankings = 0;
PlayerCfg.AutomapFreeFlight = 0; PlayerCfg.AutomapFreeFlight = 0;
PlayerCfg.NoFireAutoselect = FiringAutoselectMode::Immediate; PlayerCfg.NoFireAutoselect = FiringAutoselectMode::Immediate;
@ -456,6 +458,8 @@ static void read_player_dxx(const char *filename)
PlayerCfg.NoRedundancy = atoi(value); PlayerCfg.NoRedundancy = atoi(value);
if(!strcmp(line,TOGGLES_MULTIMESSAGES_NAME_TEXT)) if(!strcmp(line,TOGGLES_MULTIMESSAGES_NAME_TEXT))
PlayerCfg.MultiMessages = atoi(value); PlayerCfg.MultiMessages = atoi(value);
if(!strcmp(line,TOGGLES_MULTIPINGHUD_NAME_TEXT))
PlayerCfg.MultiPingHud = atoi(value);
if(!strcmp(line,TOGGLES_NORANKINGS_NAME_TEXT)) if(!strcmp(line,TOGGLES_NORANKINGS_NAME_TEXT))
PlayerCfg.NoRankings = atoi(value); PlayerCfg.NoRankings = atoi(value);
if(!strcmp(line,TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT)) 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_PRSHOT_NAME_TEXT "=%i\n",PlayerCfg.PRShot);
PHYSFSX_printf(fout,TOGGLES_NOREDUNDANCY_NAME_TEXT "=%i\n",PlayerCfg.NoRedundancy); 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_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_NORANKINGS_NAME_TEXT "=%i\n",PlayerCfg.NoRankings);
PHYSFSX_printf(fout,TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "=%i\n",PlayerCfg.AutomapFreeFlight); PHYSFSX_printf(fout,TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "=%i\n",PlayerCfg.AutomapFreeFlight);
PHYSFSX_printf(fout,TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "=%i\n",static_cast<unsigned>(PlayerCfg.NoFireAutoselect)); PHYSFSX_printf(fout,TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "=%i\n",static_cast<unsigned>(PlayerCfg.NoFireAutoselect));