]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/scoreboard.qc
Merge branch 'master' into terencehill/hud_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / scoreboard.qc
index 7b2675f69bb85b16bcb99972cf3a5380beb9f2e1..b4a0680bf7ba8f113f08e680219ab16d0cc7714d 100644 (file)
@@ -8,6 +8,8 @@
 #include <common/stats.qh>
 #include <common/teams.qh>
 
+// Scoreboard (#24)
+
 float sbt_bg_alpha;
 float sbt_fg_alpha;
 float sbt_fg_alpha_self;
@@ -85,6 +87,7 @@ string TranslateScoresLabel(string l)
                case "rank": return CTX(_("SCO^rank"));
                case "returns": return CTX(_("SCO^returns"));
                case "revivals": return CTX(_("SCO^revivals"));
+               case "rounds": return CTX(_("SCO^rounds won"));
                case "score": return CTX(_("SCO^score"));
                case "suicides": return CTX(_("SCO^suicides"));
                case "takes": return CTX(_("SCO^takes"));
@@ -604,7 +607,7 @@ string Scoreboard_GetField(entity pl, PlayerScoreField field)
                        }
                        else if(!teamplay)
                        {
-                               f = stof(getplayerkeyvalue(pl.sv_entnum, "colors"));
+                               f = entcs_GetClientColors(pl.sv_entnum);
                                {
                                        sbt_field_icon0 = "gfx/scoreboard/playercolor_base";
                                        sbt_field_icon1 = "gfx/scoreboard/playercolor_shirt";
@@ -785,10 +788,7 @@ vector Scoreboard_DrawHeader(vector pos, vector rgb)
                        if (sbt_highlight)
                                if (!(i % 2))
                                {
-                                       if (i == sbt_num_fields-1)
-                                               column_dim.x = sbt_field_size[i] + hud_fontsize.x * 0.5;
-                                       else
-                                               column_dim.x = sbt_field_size[i] + hud_fontsize.x;
+                                       column_dim.x = sbt_field_size[i] + hud_fontsize.x;
                                        drawfill(pos - eX * hud_fontsize.x * 0.5, column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
                                }
 
@@ -808,8 +808,6 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i
     TC(bool, is_self); TC(int, pl_number);
        string str;
        bool is_spec = (entcs_GetTeam(pl.sv_entnum) == NUM_SPECTATOR);
-       if(is_spec && !is_self)
-               rgb = '0 0 0';
 
        vector h_pos = item_pos;
        vector h_size = eX * panel_size.x + eY * hud_fontsize.y * 1.25;
@@ -934,7 +932,7 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
        panel_pos = pos;
        panel_size.y = 1.25 * hud_fontsize.y * (1 + max(1, tm.team_size));
        panel_size.y += panel_bg_padding * 2;
-       HUD_Panel_DrawBg(scoreboard_fade_alpha);
+       HUD_Panel_DrawBg();
 
        vector end_pos = panel_pos + eY * (panel_size.y + hud_fontsize.y);
        if(panel.current_panel_bg != "0")
@@ -1039,7 +1037,7 @@ vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
        panel_pos = pos;
        panel_size.y = height * rows;
        panel_size.y += panel_bg_padding * 2;
-       HUD_Panel_DrawBg(scoreboard_fade_alpha);
+       HUD_Panel_DrawBg();
 
        vector end_pos = panel_pos + eY * (panel_size.y + hud_fontsize.y);
        if(panel.current_panel_bg != "0")
@@ -1070,7 +1068,7 @@ vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
 
                // row highlighting
                for (int i = 0; i < rows; ++i)
-                       drawfill(pos + eY * weapon_height + eY * height * i, eX * tmp.x + eY * fontsize, '1 1 1', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+                       drawfill(pos + eY * weapon_height + eY * height * i, eX * tmp.x + eY * fontsize, rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
        }
 
        average_accuracy = 0;
@@ -1180,7 +1178,7 @@ vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) {
        panel_pos = pos;
        panel_size.y = hud_fontsize.y * rows;
        panel_size.y += panel_bg_padding * 2;
-       HUD_Panel_DrawBg(scoreboard_fade_alpha);
+       HUD_Panel_DrawBg();
 
        vector end_pos = panel_pos + eY * (panel_size.y + hud_fontsize.y);
        if(panel.current_panel_bg != "0")
@@ -1239,7 +1237,7 @@ vector Scoreboard_Rankings_Draw(vector pos, entity pl, vector rgb, vector bg_siz
        panel_pos = pos;
        panel_size.y = 1.25 * hud_fontsize.y * RANKINGS_RECEIVED_CNT;
        panel_size.y += panel_bg_padding * 2;
-       HUD_Panel_DrawBg(scoreboard_fade_alpha);
+       HUD_Panel_DrawBg();
 
        vector end_pos = panel_pos + eY * (panel_size.y + hud_fontsize.y);
        if(panel.current_panel_bg != "0")
@@ -1285,6 +1283,8 @@ void Scoreboard_Draw()
 {
        if(!autocvar__hud_configure)
        {
+               if(!hud_draw_maximized) return;
+
                // frametime checks allow to toggle the scoreboard even when the game is paused
                if(scoreboard_active) {
                        if(hud_configure_menu_open == 1)
@@ -1314,12 +1314,10 @@ void Scoreboard_Draw()
        else
                HUD_Scale_Disable();
 
-       float hud_fade_alpha_save = hud_fade_alpha;
-       if(hud_configure_menu_open == 1)
-               hud_fade_alpha = 1;
-       else
-               hud_fade_alpha = scoreboard_fade_alpha * (1 - autocvar__menu_alpha);
-       HUD_Panel_UpdateCvars();
+       if(scoreboard_fade_alpha <= 0)
+               return;
+       panel_fade_alpha *= scoreboard_fade_alpha;
+       HUD_Panel_LoadCvars();
 
        sbt_bg_alpha = autocvar_hud_panel_scoreboard_table_bg_alpha * panel_fg_alpha;
        sbt_highlight = autocvar_hud_panel_scoreboard_table_highlight;
@@ -1328,8 +1326,6 @@ void Scoreboard_Draw()
        sbt_fg_alpha = autocvar_hud_panel_scoreboard_table_fg_alpha * panel_fg_alpha;
        sbt_fg_alpha_self = autocvar_hud_panel_scoreboard_table_fg_alpha_self * panel_fg_alpha;
 
-       hud_fade_alpha = hud_fade_alpha_save;
-
        // don't overlap with con_notify
        if(!autocvar__hud_configure)
                panel_pos.y = max((autocvar_con_notify * autocvar_con_notifysize), panel_pos.y);
@@ -1429,7 +1425,7 @@ void Scoreboard_Draw()
                if(pl.team != NUM_SPECTATOR)
                        continue;
                pos.y += 1.25 * hud_fontsize.y;
-               Scoreboard_DrawItem(pos, panel_bg_color, pl, (pl.sv_entnum == player_localnum), specs);
+               Scoreboard_DrawItem(pos, '0 0 0', pl, (pl.sv_entnum == player_localnum), specs);
                ++specs;
        }