]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Show rankings in the score panel in team games too, with all the team scores in the...
authorterencehill <piuntn@gmail.com>
Tue, 26 Apr 2011 16:03:08 +0000 (18:03 +0200)
committerterencehill <piuntn@gmail.com>
Tue, 26 Apr 2011 16:03:08 +0000 (18:03 +0200)
defaultXonotic.cfg
qcsrc/client/hud.qc

index 16249a026fe5cade9aafaa629c3119503d22a295..80dc21befbf92734b1f9715aa3ddac5856f9e15e 100644 (file)
@@ -1438,7 +1438,7 @@ seta hud_panel_radar_rotation 0   "rotation mode: you set what points up. 0 = play
 seta hud_panel_radar_zoommode 0        "zoom mode: 0 = zoomed by default, 1 = zoomed when +zoom, 2 = always zoomed, 3 = always zoomed out"
 alias hud_panel_radar_rotate "toggle hud_panel_radar_rotation 0 1 2 3 4"
 
-seta hud_panel_score_rankings 0 "show rankings in non-team games instead of the score difference: 1 always show my own score; 2 pure rankings"
+seta hud_panel_score_rankings 0 "show rankings: 1 always show my own score; 2 pure rankings"
 
 seta hud_panel_engineinfo_framecounter_time 0.1 "time between framerate display updates"
 seta hud_panel_engineinfo_framecounter_decimals 0 "amount of decimals to show"
index 19b2a248997806fd45691df34576098f5a4b71d6..5277d3629b8534b434defa788c4e06a89c725b71 100644 (file)
@@ -2579,7 +2579,7 @@ void HUD_Radar(void)
 // Score (#7)
 //
 void HUD_UpdatePlayerTeams();
-void HUD_Score_Rankings(vector pos, vector mySize, entity me)
+void HUD_Score_Rankings(vector pos, vector mySize, entity me, float team_count)
 {
        float score;
        entity tm, pl;
@@ -2595,12 +2595,28 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me)
 
        const float name_size = mySize_x*0.75;
        const float highlight_alpha = 0.2;
-       float i, me_printed;
+       float i, me_printed, first_pl;
        string s;
+       i, first_pl = 0;
        if (autocvar__hud_configure)
        {
+               if (team_count)
+               {
+                       // show team scores in the first line
+                       float score_size = mySize_x / team_count;
+                       for(tm = teams.sort_next; tm; tm = tm.sort_next) {
+                               if(tm.team == COLOR_SPECTATOR)
+                                       continue;
+                               if (tm.team == myteam)
+                                       HUD_Panel_DrawHighlight(pos - eY * (height * (1 - 0.9) / 2) + eX * score_size * i, eX * score_size + eY * height, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawstring_aspect(pos + eX * score_size * i, ftos(123), eX * score_size + eY * fontsize_y, GetTeamRGB(tm.team) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL);
+                               ++i;
+                       }
+                       first_pl = 1;
+                       pos_y += height;
+               }
                score = 10 + SCOREPANEL_MAX_ENTRIES * 3;
-               for (i=0; i<entries; ++i)
+               for (i=first_pl; i<entries; ++i)
                {
                        //simulate my score is lower than all displayed players,
                        //so that I don't appear at all showing pure rankings.
@@ -2628,8 +2644,23 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me)
 
        if (!scoreboard_fade_alpha) // the scoreboard too calls HUD_UpdatePlayerTeams
                HUD_UpdatePlayerTeams();
-
-       for (pl = players.sort_next, i=0; pl && i<entries; pl = pl.sort_next, ++i)
+       if (team_count)
+       {
+               // show team scores in the first line
+               float score_size = mySize_x / team_count;
+               for(tm = teams.sort_next; tm; tm = tm.sort_next) {
+                       if(tm.team == COLOR_SPECTATOR)
+                               continue;
+                       if (tm.team == myteam)
+                               drawfill(pos - eY * (height * (1 - 0.9) / 2) + eX * score_size * i, eX * score_size + eY * height, '1 1 1', highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawstring_aspect(pos + eX * score_size * i, ftos(tm.(teamscores[ts_primary])), eX * score_size + eY * fontsize_y, GetTeamRGB(tm.team) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       ++i;
+               }
+               first_pl = 1;
+               pos_y += height;
+       }
+       i = first_pl;
+       for (pl = players.sort_next; pl && i<entries; pl = pl.sort_next, ++i)
        {
                if (pl.team == COLOR_SPECTATOR)
                        continue;
@@ -2650,7 +2681,7 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me)
 
                if (pl == me)
                {
-                       if (i == 0)
+                       if (i == first_pl)
                                rgb = '0 1 0'; //first: green
                        me_printed = 1;
                        drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
@@ -2726,7 +2757,7 @@ void HUD_Score(void)
        } else if (!teamplay) { // non-teamgames
                if ((spectatee_status == -1 && !autocvar__hud_configure) || autocvar_hud_panel_score_rankings)
                {
-                       HUD_Score_Rankings(pos, mySize, me);
+                       HUD_Score_Rankings(pos, mySize, me, 0);
                        return;
                }
                // me vector := [team/connected frags id]
@@ -2765,13 +2796,10 @@ void HUD_Score(void)
                drawstring_aspect(pos, ftos(score), eX * 0.75 * mySize_x + eY * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
                drawstring_aspect(pos + eX * 0.75 * mySize_x, distribution_str, eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
        } else { // teamgames
-               float max_fragcount;
-               max_fragcount = -99;
-
                float scores_count, row, column, rows, columns;
                vector offset;
                vector score_pos, score_size; //for scores other than myteam
-               if (spectatee_status == -1)
+               if (spectatee_status == -1 || autocvar_hud_panel_score_rankings)
                {
                        if (autocvar__hud_configure)
                                scores_count = 4;
@@ -2780,6 +2808,11 @@ void HUD_Score(void)
                                        continue;
                                ++scores_count;
                        }
+                       if (autocvar_hud_panel_score_rankings)
+                       {
+                               HUD_Score_Rankings(pos, mySize, me, scores_count);
+                               return;
+                       }
                        rows = mySize_y/mySize_x;
                        rows = bound(1, floor((sqrt(4 * (3/1) * rows * scores_count + rows * rows) + rows + 0.5) / 2), scores_count);
                        //                               ^^^ ammo item aspect goes here
@@ -2806,6 +2839,9 @@ void HUD_Score(void)
                }
                else
                        score_size = eX * mySize_x*(1/4) + eY * mySize_y*(1/3);
+
+               float max_fragcount;
+               max_fragcount = -99;
                for(tm = teams.sort_next; tm; tm = tm.sort_next) {
                        if(tm.team == COLOR_SPECTATOR)
                                continue;