X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fscoreboard.qc;h=529500b4e0573f56c42d2b65327ebfa15164cd3a;hb=1f988ad58a9fb5cef7ed843ad839b23dd23f6dc9;hp=8fea73f8f9f652104cb72f51bf45b835bb0f7016;hpb=ce0fbe4fd4f6edac3062ef5bf0af49814db337eb;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 8fea73f8f..529500b4e 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -9,7 +9,7 @@ float scoreboard_alpha_name_self; void drawstringright(vector, string, vector, vector, float, float); void drawstringcenter(vector, string, vector, vector, float, float); -float SCOREBOARD_OFFSET = 50; +const float SCOREBOARD_OFFSET = 50; // wrapper to put all possible scores titles through gettext string TranslateScoresLabel(string l) @@ -152,16 +152,16 @@ float HUD_ComparePlayerScores(entity left, entity right) vr = GetPlayerColor(right.sv_entnum); if(!left.gotscores) - vl = FL_SPECTATOR; + vl = NUM_SPECTATOR; if(!right.gotscores) - vr = FL_SPECTATOR; + vr = NUM_SPECTATOR; if(vl > vr) return true; if(vl < vr) return false; - if(vl == FL_SPECTATOR) + if(vl == NUM_SPECTATOR) { // FIRST the one with scores (spectators), THEN the ones without (downloaders) // no other sorting @@ -207,9 +207,9 @@ float HUD_CompareTeamScores(entity left, entity right) { float i, r; - if(left.team == FL_SPECTATOR) + if(left.team == NUM_SPECTATOR) return 1; - if(right.team == FL_SPECTATOR) + if(right.team == NUM_SPECTATOR) return 0; r = HUD_CompareScore(left.teamscores[ts_primary], right.teamscores[ts_primary], teamscores_flags[ts_primary]); @@ -442,7 +442,7 @@ void Cmd_HUD_SetFields(float argc) hud_title[0] = strzone(TranslateScoresLabel("name")); hud_field[0] = SP_NAME; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "name")); + print("fixed missing field 'name'\n"); if(!have_separator) { @@ -457,7 +457,7 @@ void Cmd_HUD_SetFields(float argc) hud_field[1] = SP_SEPARATOR; hud_size[1] = stringwidth("|", FALSE, hud_fontsize); ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "|")); + print("fixed missing field '|'\n"); } } else if(!have_separator) @@ -467,7 +467,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth("|", FALSE, hud_fontsize); hud_field[hud_num_fields] = SP_SEPARATOR; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), "|")); + print("fixed missing field '|'\n"); } if(!have_secondary) { @@ -476,7 +476,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_secondary; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_secondary])); + print(sprintf("fixed missing field '%s'\n", scores_label[ps_secondary])); } if(!have_primary) { @@ -485,7 +485,7 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_primary; ++hud_num_fields; - print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_primary])); + print(sprintf("fixed missing field '%s'\n", scores_label[ps_primary])); } } @@ -673,7 +673,7 @@ void HUD_PrintScoreboardItem(vector pos, entity pl, float is_self, float pl_numb string str; float i, field; float is_spec; - is_spec = (GetPlayerColor(pl.sv_entnum) == FL_SPECTATOR); + is_spec = (GetPlayerColor(pl.sv_entnum) == NUM_SPECTATOR); if((rgb == '1 1 1') && (!is_spec)) { rgb_x = autocvar_scoreboard_color_bg_r + 0.5; @@ -917,7 +917,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 == FL_SPECTATOR) + if(pl.team == NUM_SPECTATOR) continue; HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localnum), i); pos_y += 1.25 * hud_fontsize_y; @@ -947,7 +947,6 @@ float HUD_WouldDrawScoreboard() { return 0; } -float g_minstagib; float average_accuracy; vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) { @@ -962,6 +961,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) float fontsize = height * 1/3; float weapon_height = height * 2/3; float weapon_width = sbwidth / weapon_cnt; + float g_minstagib = 0; drawstring(pos, sprintf(_("Accuracy stats (average %d%%)"), average_accuracy), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y + autocvar_scoreboard_border_thickness; @@ -1069,15 +1069,23 @@ vector HUD_DrawKeyValue(vector pos, string key, string value) { vector HUD_DrawMapStats(vector pos, vector rgb, vector bg_size) { float stat_secrets_found, stat_secrets_total; - float rows; + float stat_monsters_killed, stat_monsters_total; + float rows = 0; string val; + + // get monster stats + stat_monsters_killed = getstatf(STAT_MONSTERS_KILLED); + stat_monsters_total = getstatf(STAT_MONSTERS_TOTAL); // get secrets stats stat_secrets_found = getstatf(STAT_SECRETS_FOUND); stat_secrets_total = getstatf(STAT_SECRETS_TOTAL); // get number of rows - rows = (stat_secrets_total ? 1 : 0); + if(stat_secrets_total) + rows += 1; + if(stat_monsters_total) + rows += 1; // if no rows, return if not(rows) @@ -1097,10 +1105,20 @@ vector HUD_DrawMapStats(vector pos, vector rgb, vector bg_size) { else drawpic_tiled(pos, "gfx/scoreboard/scoreboard_bg", bg_size, tmp, rgb, scoreboard_alpha_bg, DRAWFLAG_NORMAL); drawborderlines(autocvar_scoreboard_border_thickness, pos, tmp, '0 0 0', scoreboard_alpha_bg * 0.75, DRAWFLAG_NORMAL); + + // draw monsters + if(stat_monsters_total) + { + val = sprintf("%d/%d", stat_monsters_killed, stat_monsters_total); + pos = HUD_DrawKeyValue(pos, _("Monsters killed:"), val); + } // draw secrets - val = sprintf("%d/%d", stat_secrets_found, stat_secrets_total); - pos = HUD_DrawKeyValue(pos, _("Secrets found:"), val); + if(stat_secrets_total) + { + val = sprintf("%d/%d", stat_secrets_found, stat_secrets_total); + pos = HUD_DrawKeyValue(pos, _("Secrets found:"), val); + } // update position pos_y += 1.25 * hud_fontsize_y; @@ -1120,7 +1138,7 @@ vector HUD_DrawScoreboardRankings(vector pos, entity pl, vector rgb, vector bg_ return pos; float is_spec; - is_spec = (GetPlayerColor(pl.sv_entnum) == FL_SPECTATOR); + is_spec = (GetPlayerColor(pl.sv_entnum) == NUM_SPECTATOR); vector hl_rgb; hl_rgb_x = autocvar_scoreboard_color_bg_r + 0.5; hl_rgb_y = autocvar_scoreboard_color_bg_g + 0.5; @@ -1237,7 +1255,7 @@ 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 == FL_SPECTATOR) + if(tm.team == NUM_SPECTATOR) continue; draw_beginBoldFont(); @@ -1273,7 +1291,7 @@ void HUD_DrawScoreboard() for(tm = teams.sort_next; tm; tm = tm.sort_next) { - if(tm.team == FL_SPECTATOR) + if(tm.team == NUM_SPECTATOR) continue; pos = HUD_Scoreboard_MakeTable(pos, tm, rgb, bg_size); @@ -1310,7 +1328,7 @@ void HUD_DrawScoreboard() tmp = pos; for(pl = players.sort_next; pl; pl = pl.sort_next) { - if(pl.team != FL_SPECTATOR) + if(pl.team != NUM_SPECTATOR) continue; pos_y += 1.25 * hud_fontsize_y; HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localnum), specs); @@ -1393,10 +1411,24 @@ void HUD_DrawScoreboard() 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)); + str = sprintf(_("^1Respawning in ^3%s^1..."), + (autocvar_scoreboard_respawntime_decimals ? + count_seconds_decs(respawn_time - time, autocvar_scoreboard_respawntime_decimals) + : + count_seconds(respawn_time - time) + ) + ); } 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)); + { + str = sprintf(_("You are dead, wait ^3%s^7 before respawning"), + (autocvar_scoreboard_respawntime_decimals ? + count_seconds_decs(respawn_time - time, autocvar_scoreboard_respawntime_decimals) + : + count_seconds(respawn_time - time) + ) + ); + } else if(time >= respawn_time) str = sprintf(_("You are dead, press ^2%s^7 to respawn"), getcommandkey("jump", "+jump"));