X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fscoreboard.qc;h=8eafb73339df4ee17d54406725a9d8337e0a6f07;hb=b26f1812d999d544c7762afb3479bf93c4309d6b;hp=05c8df88cfc68f767c1eb268bab64044dc9ef4fa;hpb=7b71d7d90d28e0365ce11f94c3460f5b71211312;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 05c8df88c..8eafb7333 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -19,6 +19,7 @@ string TranslateScoresLabel(string l) case "bckills": return CTX(_("SCO^bckills")); case "bctime": return CTX(_("SCO^bctime")); case "caps": return CTX(_("SCO^caps")); + case "captime": return CTX(_("SCO^captime")); case "deaths": return CTX(_("SCO^deaths")); case "destroyed": return CTX(_("SCO^destroyed")); case "drops": return CTX(_("SCO^drops")); @@ -135,16 +136,16 @@ float HUD_ComparePlayerScores(entity left, entity right) vr = GetPlayerColor(right.sv_entnum); if(!left.gotscores) - vl = COLOR_SPECTATOR; + vl = FL_SPECTATOR; if(!right.gotscores) - vr = COLOR_SPECTATOR; + vr = FL_SPECTATOR; if(vl > vr) return true; if(vl < vr) return false; - if(vl == COLOR_SPECTATOR) + if(vl == FL_SPECTATOR) { // FIRST the one with scores (spectators), THEN the ones without (downloaders) // no other sorting @@ -200,9 +201,9 @@ float HUD_CompareTeamScores(entity left, entity right) { float vl, vr; - if(left.team == COLOR_SPECTATOR) + if(left.team == FL_SPECTATOR) return 1; - if(right.team == COLOR_SPECTATOR) + if(right.team == FL_SPECTATOR) return 0; vl = left.teamscores[ts_primary]; @@ -254,6 +255,7 @@ void Cmd_HUD_Help() print(_("^3kd^7 The kill-death ratio\n")); print(_("^3caps^7 How often a flag (CTF) or a key (KeyHunt) was captured\n")); print(_("^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up\n")); + print(_("^3captime^7 Time of fastest cap (CTF)\n")); print(_("^3fckills^7 Number of flag carrier kills\n")); print(_("^3returns^7 Number of flag returns\n")); print(_("^3drops^7 Number of flag drops\n")); @@ -309,19 +311,19 @@ void Cmd_HUD_SetFields(float argc) // TODO: re enable with gametype dependant cvars? if(argc < 3) // no arguments provided - argc = tokenizebyseparator(strcat("x ", autocvar_scoreboard_columns), " "); + argc = tokenizebyseparator(strcat("0 1 ", autocvar_scoreboard_columns), " "); if(argc < 3) - argc = tokenizebyseparator(strcat("x ", HUD_DefaultColumnLayout()), " "); + argc = tokenizebyseparator(strcat("0 1 ", HUD_DefaultColumnLayout()), " "); if(argc == 3) { if(argv(2) == "default") - argc = tokenizebyseparator(strcat("x ", HUD_DefaultColumnLayout()), " "); + argc = tokenizebyseparator(strcat("0 1 ", HUD_DefaultColumnLayout()), " "); else if(argv(2) == "all") { string s; - s = "ping pl color name |"; + s = "ping pl name |"; for(i = 0; i < MAX_SCORE; ++i) { if(i != ps_primary) @@ -332,16 +334,17 @@ void Cmd_HUD_SetFields(float argc) if(ps_secondary != ps_primary) s = strcat(s, " ", scores_label[ps_secondary]); s = strcat(s, " ", scores_label[ps_primary]); - argc = tokenizebyseparator(strcat("x ", s), " "); + argc = tokenizebyseparator(strcat("0 1 ", s), " "); } } hud_num_fields = 0; - hud_fontsize = HUD_GetFontsize("hud_fontsize"); + hud_fontsize = HUD_GetFontsize("hud_fontsize"); - for(i = 0; i < argc - 1; ++i) + draw_beginBoldFont(); + for(i = 1; i < argc - 1; ++i) { float nocomplain; str = argv(i+1); @@ -477,6 +480,7 @@ void Cmd_HUD_SetFields(float argc) } hud_field[hud_num_fields] = SP_END; + draw_endBoldFont(); } // MOVEUP:: @@ -655,11 +659,11 @@ string HUD_FixScoreboardColumnWidth(float i, string str) void HUD_PrintScoreboardItem(vector pos, entity pl, float is_self, float pl_number) { vector tmp, rgb; - rgb = GetTeamRGB(pl.team); + rgb = Team_ColorRGB(pl.team); string str; float i, field; float is_spec; - is_spec = (GetPlayerColor(pl.sv_entnum) == COLOR_SPECTATOR); + is_spec = (GetPlayerColor(pl.sv_entnum) == FL_SPECTATOR); if((rgb == '1 1 1') && (!is_spec)) { rgb_x = autocvar_scoreboard_color_bg_r + 0.5; @@ -840,6 +844,7 @@ vector HUD_Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_siz } // print the strings of the columns headers and draw the columns + draw_beginBoldFont(); for(i = 0; i < hud_num_fields; ++i) { if(hud_field[i] == SP_SEPARATOR) @@ -882,6 +887,7 @@ vector HUD_Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_siz pos_x -= hud_fontsize_x; } } + draw_endBoldFont(); pos_x = xmin; pos_y += 1.25 * hud_fontsize_y; // skip the header @@ -901,7 +907,7 @@ vector HUD_Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_siz else for(pl = players.sort_next; pl; pl = pl.sort_next) { - if(pl.team == COLOR_SPECTATOR) + if(pl.team == FL_SPECTATOR) continue; HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localnum), i); pos_y += 1.25 * hud_fontsize_y; @@ -985,14 +991,14 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) if (!acc_levels) rgb = '1 1 1'; - else if (acc_col_x[0] == -1) + else if (acc_col[0] == '-1 0 0') for (i = 0; i < acc_levels; ++i) acc_col[i] = stov(cvar_string(strcat("accuracy_color", ftos(i)))); for(i = WEP_FIRST; i <= WEP_LAST; ++i) { self = get_weaponinfo(i); - if not(self.weapons) + if not(self.weapon) continue; if ((i == WEP_NEX && g_minstagib) || i == WEP_PORTO || (i == WEP_MINSTANEX && !g_minstagib) || i == WEP_TUBA) // skip port-o-launch, nex || minstanex and tuba continue; @@ -1118,7 +1124,7 @@ vector HUD_DrawScoreboardRankings(vector pos, entity pl, vector rgb, vector bg_ return pos; float is_spec; - is_spec = (GetPlayerColor(pl.sv_entnum) == COLOR_SPECTATOR); + is_spec = (GetPlayerColor(pl.sv_entnum) == FL_SPECTATOR); vector hl_rgb; hl_rgb_x = autocvar_scoreboard_color_bg_r + 0.5; hl_rgb_y = autocvar_scoreboard_color_bg_g + 0.5; @@ -1220,7 +1226,9 @@ void HUD_DrawScoreboard() // Heading vector sb_heading_fontsize; sb_heading_fontsize = hud_fontsize * 2; + draw_beginBoldFont(); drawstring(pos, _("Scoreboard"), sb_heading_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + draw_endBoldFont(); pos_y += sb_heading_fontsize_y + hud_fontsize_y * 0.25; @@ -1233,10 +1241,11 @@ void HUD_DrawScoreboard() team_score_baseoffset = eY * (2 * autocvar_scoreboard_border_thickness + hud_fontsize_y) - eX * (autocvar_scoreboard_border_thickness + hud_fontsize_x * 0.25); for(tm = teams.sort_next; tm; tm = tm.sort_next) { - if(tm.team == COLOR_SPECTATOR) + if(tm.team == FL_SPECTATOR) continue; - rgb = GetTeamRGB(tm.team); + draw_beginBoldFont(); + rgb = Team_ColorRGB(tm.team); str = ftos(tm.(teamscores[ts_primary])); drawstring(pos + team_score_baseoffset - eX * stringwidth(str, FALSE, hud_fontsize * 1.5), str, hud_fontsize * 1.5, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL); @@ -1245,6 +1254,8 @@ void HUD_DrawScoreboard() str = ftos(tm.(teamscores[ts_secondary])); drawstring(pos + team_score_baseoffset - eX * stringwidth(str, FALSE, hud_fontsize) + eY * hud_fontsize_y * 1.5, str, hud_fontsize, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL); } + draw_endBoldFont(); + pos = HUD_Scoreboard_MakeTable(pos, tm, rgb, bg_size); } } @@ -1256,7 +1267,7 @@ void HUD_DrawScoreboard() for(tm = teams.sort_next; tm; tm = tm.sort_next) { - if(tm.team == COLOR_SPECTATOR) + if(tm.team == FL_SPECTATOR) continue; pos = HUD_Scoreboard_MakeTable(pos, tm, rgb, bg_size); @@ -1276,14 +1287,14 @@ void HUD_DrawScoreboard() } else if(autocvar_scoreboard_accuracy && spectatee_status != -1 && !warmup_stage) { if(teamplay) - pos = HUD_DrawScoreboardAccuracyStats(pos, GetTeamRGB(myteam), bg_size); + pos = HUD_DrawScoreboardAccuracyStats(pos, Team_ColorRGB(myteam), bg_size); else pos = HUD_DrawScoreboardAccuracyStats(pos, rgb, bg_size); } if(teamplay) - pos = HUD_DrawMapStats(pos, GetTeamRGB(myteam), bg_size); + pos = HUD_DrawMapStats(pos, Team_ColorRGB(myteam), bg_size); else pos = HUD_DrawMapStats(pos, rgb, bg_size); @@ -1293,7 +1304,7 @@ void HUD_DrawScoreboard() tmp = pos; for(pl = players.sort_next; pl; pl = pl.sort_next) { - if(pl.team != COLOR_SPECTATOR) + if(pl.team != FL_SPECTATOR) continue; pos_y += 1.25 * hud_fontsize_y; HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localnum), specs); @@ -1302,7 +1313,9 @@ void HUD_DrawScoreboard() if(specs) { + draw_beginBoldFont(); drawstring(tmp, _("Spectators"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + draw_endBoldFont(); pos_y += 1.25 * hud_fontsize_y; } @@ -1361,9 +1374,29 @@ void HUD_DrawScoreboard() } } - pos_y += 1.2 * hud_fontsize_y; drawcolorcodedstring(pos + '0.5 0 0' * (sbwidth - stringwidth(str, TRUE, hud_fontsize)), str, hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); + // print information about respawn status + float respawn_time = getstatf(STAT_RESPAWN_TIME); + if(respawn_time) + { + if(respawn_time < 0) + { + // a negative number means we are awaiting respawn, time value is still the same + respawn_time *= -1; // remove mark now that we checked it + respawn_time = max(time, respawn_time); // don't show a negative value while the server is respawning the player (lag) + + str = sprintf(_("^1Respawning in ^3%s^1 seconds..."), ftos_decimals(respawn_time - time, autocvar_scoreboard_respawntime_decimals)); + } + else if(time < respawn_time) + str = sprintf(_("You are dead, wait ^3%s^7 seconds before respawning"), ftos_decimals(respawn_time - time, autocvar_scoreboard_respawntime_decimals)); + else if(time >= respawn_time) + str = sprintf(_("You are dead, press ^2%s^7 to respawn"), getcommandkey("jump", "+jump")); + + pos_y += 1.2 * hud_fontsize_y; + drawcolorcodedstring(pos + '0.5 0 0' * (sbwidth - stringwidth(str, TRUE, hud_fontsize)), str, hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); + } + scoreboard_bottom = pos_y + 2 * hud_fontsize_y; }