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;
ubyte NoRedundancy;
ubyte MultiMessages;
ubyte MultiPingHud;
ubyte NoRankings;
#if defined(DXX_BUILD_DESCENT_I)
ubyte BombGauge;

View file

@ -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;

View file

@ -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_players;i++) {
playernum_t player_num;
@ -2877,6 +2879,11 @@ static void hud_show_kill_list()
if (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;
}
}

View file

@ -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) \

View file

@ -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<unsigned>(PlayerCfg.NoFireAutoselect));