]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/newpanelhud
authorterencehill <piuntn@gmail.com>
Thu, 14 Oct 2010 22:40:40 +0000 (00:40 +0200)
committerterencehill <piuntn@gmail.com>
Thu, 14 Oct 2010 22:40:40 +0000 (00:40 +0200)
Conflicts:
defaultXonotic.cfg

defaultXonotic.cfg
qcsrc/client/View.qc
qcsrc/client/hud.qc
qcsrc/client/hud.qh
qcsrc/client/main.qh
qcsrc/client/mapvoting.qc
qcsrc/client/scoreboard.qc
qcsrc/client/scoreboard.qh

index 97f94e02b2982e99c05dad759fc3c140a91312d3..15f9419fa73d85e5c919757c8c2fa2649c71a514 100644 (file)
@@ -1403,11 +1403,11 @@ seta scoreboard_columns default
 seta scoreboard_border_thickness 1 "scoreboard border thickness"
 seta scoreboard_accuracy_border_thickness 1 "accuracy stats border thickness"
 seta scoreboard_accuracy_doublerows 0 "use two rows instead of one"
-seta scoreboard_accuracy 1 "0 = no weapon accuracy stats panel on scoreboard"
-seta scoreboard_color_bg_r 0 "red color component of the HUD background"
-seta scoreboard_color_bg_g 0.4 "green color component of the HUD background"
-seta scoreboard_color_bg_b 0.6 "blue color component of the HUD background"
-seta scoreboard_color_bg_team 0.5 "team color multiplier of the HUD background"
+seta scoreboard_accuracy 1 "show weapon accuracy stats panel on scoreboard"
+seta scoreboard_color_bg_r 0 "red color component of the scoreboard background"
+seta scoreboard_color_bg_g 0.4 "green color component of the scoreboard background"
+seta scoreboard_color_bg_b 0.6 "blue color component of the scoreboard background"
+seta scoreboard_color_bg_team 0.5 "team color multiplier of the scoreboard background"
 seta scoreboard_alpha_bg 0.6 "scoreboard background alpha"
 seta scoreboard_alpha_fg 1 "scoreboard foreground alpha"
 seta scoreboard_alpha_name 0.9 "alpha of player text in scoreboard list other than self"
@@ -1545,7 +1545,6 @@ set capturelimit 0
 
 // hud: font size
 seta hud_fontsize 11
-seta hud_fontsize_spec 16
 seta scr_centersize 12
 seta hud_width 560
 // alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set"
index 5f422a03eb0a4b3db660a7ce8b6e13b66ee8acbf..b57ef2ca176da6c6aef8c047e4ec2dede8deb56e 100644 (file)
@@ -338,7 +338,7 @@ void CSQC_common_hud(void);
 
 void PostInit(void);
 void CSQC_Demo_Camera();
-float HUD_WouldDrawScoreboard ();
+float HUD_WouldDrawScoreboard();
 float view_set;
 float camera_mode;
 float reticle_type;
@@ -468,7 +468,6 @@ void CSQC_UpdateView(float w, float h)
                }
        }
 
-       hud_accuracy_hud = cvar_or("hud_accuracy_hud", 1);
        ColorTranslateMode = cvar("cl_stripcolorcodes");
        activeweapon = getstati(STAT_SWITCHWEAPON);
        f = cvar("teamplay");
@@ -534,8 +533,6 @@ void CSQC_UpdateView(float w, float h)
        }
 
        // Draw the Crosshair
-       float scoreboard_active;
-       scoreboard_active = HUD_WouldDrawScoreboard();
        R_SetView(VF_DRAWCROSSHAIR, 0); //Make sure engine crosshairs are always hidden
 
        // Draw the Engine Status Bar (the default Quake HUD)
@@ -683,12 +680,12 @@ void CSQC_UpdateView(float w, float h)
                        self.draw2d();
        self = e;
 
+       scoreboard_active = HUD_WouldDrawScoreboard();
+
        float hud;
        hud = getstati(STAT_HUD);
        if(hud == HUD_SPIDERBOT)
-       {
                CSQC_SPIDER_HUD();
-       }
        else if(hud == HUD_WAKIZASHI)
         CSQC_WAKIZASHI_HUD();
     else if(hud == HUD_RAPTOR)
@@ -1274,9 +1271,11 @@ void CSQC_common_hud(void)
                case HUD_NORMAL:
                        // do some accuracy var caching
                        float i;
+                       if(cvar_string("hud_panel_weapons_accuracy_color_levels") != acc_color_levels)
                        if(!(gametype == GAME_RACE || gametype == GAME_CTS))
                        {
-                               acc_levels = tokenize(cvar_string("hud_panel_weapons_accuracy_color_levels"));
+                               acc_color_levels = cvar_string("hud_panel_weapons_accuracy_color_levels");
+                               acc_levels = tokenize(acc_color_levels);
                                if (acc_levels > MAX_ACCURACY_LEVELS)
                                        acc_levels = MAX_ACCURACY_LEVELS;
 
@@ -1287,7 +1286,7 @@ void CSQC_common_hud(void)
                        HUD_Main(); // always run these functions for alpha checks
                        HUD_DrawScoreboard();
 
-                       if (scoreboard_showscores || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1) // scoreboard/accuracy
+                       if (scoreboard_active) // scoreboard/accuracy
                        {       
                                HUD_Reset();
                                // HUD_DrawScoreboard takes care of centerprint_start
index 69459256f0a22acd972fa7aea299402905a518e9..7d5d98f5ec2768eeb39c93dba9e379dabad9a86f 100644 (file)
@@ -284,10 +284,9 @@ void HUD_DrawCenterPrint (void)
 
        sz = 0.8 + (a / 5);
 
-       if(centerprint_num * cvar("scr_centersize") > 24 && HUD_WouldDrawScoreboard()) // 24 = height of Scoreboard text
-       {
+       if(centerprint_num * cvar("scr_centersize") > 24 && scoreboard_active) // 24 = height of Scoreboard text
                centerprint_start_y = scoreboard_bottom + centerprint_fontsize_y;
-       }
+
        pos = centerprint_start;
        for (i=0; i<centerprint_num; i = i + 1)
        {
@@ -1333,6 +1332,9 @@ void HUD_Panel_Mouse()
        print("Menu alpha: ", cvar_string("_menu_alpha"), "\n");
        */
 
+       if(menu_enabled)
+               return;
+
        if(mouseClicked == 0 && disable_menu_alphacheck != 2 && highlightedPanel >= 0) { // don't reset these variables in disable_menu_alphacheck mode 2!
                highlightedPanel = -1;
                highlightedAction = 0;
@@ -1658,6 +1660,10 @@ void HUD_Weapons(void)
        vector wpnpos;
        vector wpnsize;
 
+       float show_accuracy;
+       if(autocvar_hud_panel_weapons_accuracy && acc_levels)
+               show_accuracy = true;
+
        for(i = 0; i < weapon_cnt; ++i)
        {
                wpnpos = panel_pos + eX * column * panel_size_x*(1/columns) + eY * row * panel_size_y*(1/rows);
@@ -1671,7 +1677,7 @@ void HUD_Weapons(void)
                        drawpic_aspect_skin(wpnpos, "weapon_current_bg", wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
 
                // draw the weapon accuracy
-               if(acc_levels)
+               if(show_accuracy)
                {
                        float weapon_hit, weapon_damage;
                        weapon_damage = weapon_fired[self.weapon-WEP_FIRST];
@@ -4828,6 +4834,8 @@ void HUD_ShowAcceleration(void)
        f = bound(0, f * 10, 1);
        acc_avg = acc_avg * (1 - f) + acceleration * f;
        acceleration = acc_avg / getstatf(STAT_MOVEVARS_MAXSPEED);
+       if (acceleration == 0)
+               return;
 
        pos = top - sz/2 * eY + (cvar("cl_showacceleration_position") * vid_conheight) * eY;
 
@@ -4837,17 +4845,15 @@ void HUD_ShowAcceleration(void)
        if (cvar("cl_showacceleration_color_custom"))
                rgb = stov(cvar_string("cl_showacceleration_color"));
        else {
-               rgb = '1 1 1';
-               if (acceleration < 0) {
+               if (acceleration < 0)
                        rgb = '1 .5 .5' - '0 .5 .5' * bound(0, -acceleration * 0.2, 1);
-               } else if (acceleration > 0) {
+               else
                        rgb = '.5 1 .5' - '.5 0 .5' * bound(0, +acceleration * 0.2, 1);
-               }
        }
 
        if (acceleration > 0)
                HUD_Panel_DrawProgressBar(pos, 0, acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha, DRAWFLAG_NORMAL);
-       else if (acceleration < 0)
+       else
                HUD_Panel_DrawProgressBar(pos + acceleration * scale * '40 0 0', 0, -acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha, DRAWFLAG_NORMAL);
 }
 
@@ -4916,7 +4922,6 @@ void HUD_Main (void)
        hud_accuracy_border_thickness = bound(0, cvar_or("hud_accuracy_border_thickness", 1), 5);
 
        hud_fontsize = HUD_GetFontsize("hud_fontsize");
-       hud_fontsize_spec = HUD_GetFontsize("hud_fontsize_spec");
 
        // Drawing stuff
 
index e311c66a8aa923af4ac650897dad6b32524a9479..1754dcb58a1afdec16f3c2eaf126b0e799e0d1a0 100644 (file)
@@ -22,6 +22,7 @@ float weapon_fired[WEP_MAXCOUNT];
 #define MAX_ACCURACY_LEVELS 10
 float acc_lev[MAX_ACCURACY_LEVELS];
 float acc_levels;
+string acc_color_levels;
 
 float complain_weapon;
 string complain_weapon_name;
@@ -36,7 +37,6 @@ float weapontime;
 float weaponprevtime;
 
 float teamnagger;
-float hud_accuracy_hud;
 float hud_border_thickness;
 float hud_accuracy_border_thickness;
 
index f00e49c532a40cc0eaa1086aa143d11dee828955..2294ffd1557b080e7ac8d03f1d54d0613cea1254 100644 (file)
@@ -95,7 +95,6 @@ float teamscores_flags[MAX_SCORE];
 
 
 vector hud_fontsize;
-vector hud_fontsize_spec;
 
 float RANKINGS_RECEIVED_CNT;
 string grecordholder[RANKINGS_CNT];
index 7c3bcecc50d22be197f696b15a60b05036dd466f..18e0ce1a251b6f7d5cd082e3959dcb7c4f5c7bf8 100644 (file)
@@ -81,19 +81,14 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin
        {
                drawpic(pos, pic, img_size, '1 1 1', 1, DRAWFLAG_NORMAL);
        }
-       
-       drawpic(pos + '1 0 0', strcat("gfx/hud/num_", ftos(id+1)), (img_size_y / 5) * '1 1 0', '1 1 1', 0.6, DRAWFLAG_NORMAL);
 
-       if(id == mv_ownvote || pic == "")
-       {
+       if(id == mv_ownvote)
                drawborderlines(hud_border_thickness, pos, img_size, rgb, 1, DRAWFLAG_NORMAL);
-               drawpic(pos + '1 0 0', strcat("gfx/hud/num_", ftos(id+1)), (img_size_y / 5) * '1 1 0', rgb, 0.6, DRAWFLAG_NORMAL);
-       }
        else
-       {
                drawborderlines(hud_border_thickness, pos, img_size, '0 0 0', 1, DRAWFLAG_NORMAL);
-               drawpic(pos + '1 0 0', strcat("gfx/hud/num_", ftos(id+1)), (img_size_y / 5) * '1 1 0', '1 1 1', 0.6, DRAWFLAG_NORMAL);
-       }
+
+       if(id == mv_selection)
+               drawfill(pos, img_size, '1 1 1', 0.1, DRAWFLAG_NORMAL);
 }
 
 void MapVote_DrawAbstain(vector pos, float isize, float tsize, float count, float id)
index 76b19a54c50c99a94d7942951edf430ab380d626..65e86fd340c78bbebd3e9a14a5ee2ee176270d33 100644 (file)
@@ -883,11 +883,9 @@ float HUD_WouldDrawScoreboard() {
                return 1;
        else if (intermission == 1)
                return 1;
-       else if (intermission == 2 && scoreboard_showscores)
-               return 1;
        else if (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard"))
                return 1;
-       else if(scoreboard_showscores_force)
+       else if (scoreboard_showscores_force)
                return 1;
        return 0;
 }
@@ -898,7 +896,6 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
 {
        float i;
        float weapon_hit, weapon_damage, weapon_stats;
-       float fontsize = 40 * 1/3;
        float weapon_cnt = WEP_COUNT - 3; // either minstanex/nex are hidden, no port-o-launch, no tuba
        float rows;
        if(cvar("scoreboard_accuracy_doublerows"))
@@ -906,11 +903,9 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
        else
                rows = 1;
        float height = 40;
-
-       if(warmup_stage)
-       {
-               return pos;
-       }
+       float fontsize = height * 1/3;
+       float weapon_height = height * 2/3;
+       float weapon_width = sbwidth / weapon_cnt;
 
        drawstring(pos, strcat("Accuracy stats (average ", ftos(average_accuracy), "%)"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
        pos_y += 1.25 * hud_fontsize_y;
@@ -928,13 +923,13 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
        for(i = 0; i < weapon_cnt/rows; ++i)
        {
                if(!mod(i, 2))
-                       drawfill(pos + '1 0 0' * (sbwidth/weapon_cnt) * rows * i, '0 1 0' * height * rows + '1 0 0' * (sbwidth/weapon_cnt) * rows, '0 0 0', scoreboard_alpha_bg * 0.2, DRAWFLAG_NORMAL);
+                       drawfill(pos + '1 0 0' * weapon_width * rows * i, '0 1 0' * height * rows + '1 0 0' * weapon_width * rows, '0 0 0', scoreboard_alpha_bg * 0.2, DRAWFLAG_NORMAL);
        }
 
        // row highlighting
        for(i = 0; i < rows; ++i)
        {
-               drawfill(pos + '0 1 0' * height * (2/3) + '0 1 0' * height * i, '1 0 0' * sbwidth + '0 1 0' * fontsize, '1 1 1', scoreboard_highlight_alpha, DRAWFLAG_NORMAL);
+               drawfill(pos + '0 1 0' * weapon_height + '0 1 0' * height * i, '1 0 0' * sbwidth + '0 1 0' * fontsize, '1 1 1', scoreboard_highlight_alpha, DRAWFLAG_NORMAL);
        }
 
        drawfont = hud_bigfont;
@@ -942,11 +937,14 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
        float weapons_with_stats;
        weapons_with_stats = 0;
        if(rows == 2)
-               pos_x += sbwidth/weapon_cnt / 2;
+               pos_x += weapon_width / 2;
 
        if(getstati(STAT_SWITCHWEAPON) == WEP_MINSTANEX)
                g_minstagib = 1; // TODO: real detection for minstagib?
 
+       if (!acc_levels)
+               rgb = '1 1 1';
+
        for(i = WEP_FIRST; i <= WEP_LAST; ++i)
        {
                self = get_weaponinfo(i);
@@ -966,7 +964,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                        weapon_alpha = 0.2 * scoreboard_alpha_fg;
 
                // weapon icon
-               drawpic_aspect_skin(pos, strcat("weapon", self.netname), '1 0 0' * sbwidth * (1/weapon_cnt) + '0 1 0' * height * (2/3), '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
+               drawpic_aspect_skin(pos, strcat("weapon", self.netname), '1 0 0' * weapon_width + '0 1 0' * weapon_height, '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
                // the accuracy
                if(weapon_damage) {
                        weapons_with_stats += 1;
@@ -976,7 +974,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                        s = strcat(ftos(weapon_stats),"%");
 
                        float padding;
-                       padding = ((sbwidth/weapon_cnt) - stringwidth(s, FALSE, '1 0 0' * fontsize)) / 2; // center the accuracy value
+                       padding = (weapon_width - stringwidth(s, FALSE, '1 0 0' * fontsize)) / 2; // center the accuracy value
 
                        float weapon_hit, weapon_damage;
                        weapon_damage = weapon_fired[self.weapon-WEP_FIRST];
@@ -986,21 +984,24 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                                weapon_stats = floor(100 * weapon_hit / weapon_damage);
                        }
 
-                       // find the max level lower than weapon_stats
-                       float j;
-                       j = acc_levels-1;
-                       while ( j && weapon_stats < acc_lev[j] )
-                               --j;
-
-                       // inject color j+1 in color j, how much depending on how much weapon_stats is higher than level j
-                       float factor;
-                       factor = (weapon_stats - acc_lev[j]) / (acc_lev[j+1] - acc_lev[j]);
-                       rgb = acc_color(j);
-                       rgb = rgb + factor * (acc_color(j+1) - rgb);
+                       if (acc_levels)
+                       {
+                               // find the max level lower than weapon_stats
+                               float j;
+                               j = acc_levels-1;
+                               while ( j && weapon_stats < acc_lev[j] )
+                                       --j;
+
+                               // inject color j+1 in color j, how much depending on how much weapon_stats is higher than level j
+                               float factor;
+                               factor = (weapon_stats - acc_lev[j]) / (acc_lev[j+1] - acc_lev[j]);
+                               rgb = acc_color(j);
+                               rgb = rgb + factor * (acc_color(j+1) - rgb);
+                       }
 
-                       drawstring(pos + '1 0 0' * padding + '0 1 0' * height * (2/3), s, '1 1 0' * fontsize, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+                       drawstring(pos + '1 0 0' * padding + '0 1 0' * weapon_height, s, '1 1 0' * fontsize, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
                }
-               pos_x += sbwidth/weapon_cnt * rows;
+               pos_x += weapon_width * rows;
                if(rows == 2 && i == 6) {
                        pos_x -= sbwidth;
                        pos_y += height;
@@ -1012,7 +1013,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                average_accuracy = floor(average_accuracy / weapons_with_stats);
 
        if(rows == 2)
-               pos_x -= sbwidth/weapon_cnt / 2;
+               pos_x -= weapon_width / 2;
        pos_x -= sbwidth;
        pos_y += height;
 
@@ -1078,32 +1079,33 @@ float hud_woulddrawscoreboard_prev;
 float hud_woulddrawscoreboard_change; // "time" at which HUD_WouldDrawScoreboard() changed
 void HUD_DrawScoreboard()
 {
-       HUD_UpdatePlayerTeams();
-
        float hud_woulddrawscoreboard;
-       hud_woulddrawscoreboard = HUD_WouldDrawScoreboard();
+       hud_woulddrawscoreboard = scoreboard_active;
        if(hud_woulddrawscoreboard != hud_woulddrawscoreboard_prev) {
                hud_woulddrawscoreboard_change = time;
                hud_woulddrawscoreboard_prev = hud_woulddrawscoreboard;
        }
 
-       float scoreboard_fadeinspeed = cvar_or("scoreboard_fadeinspeed", 10);
-       float scoreboard_fadeoutspeed = cvar_or("scoreboard_fadeoutspeed", 5);
        if(hud_woulddrawscoreboard) {
+               float scoreboard_fadeinspeed = cvar_or("scoreboard_fadeinspeed", 10);
                if (scoreboard_fadeinspeed)
                        scoreboard_fade_alpha = bound (0, (time - hud_woulddrawscoreboard_change) * scoreboard_fadeinspeed, 1);
                else
                        scoreboard_fade_alpha = 1;
        }
-       else
+       else {
+               float scoreboard_fadeoutspeed = cvar_or("scoreboard_fadeoutspeed", 5);
                if (scoreboard_fadeoutspeed)
                        scoreboard_fade_alpha = bound (0, (1/scoreboard_fadeoutspeed - (time - hud_woulddrawscoreboard_change)) * scoreboard_fadeoutspeed, 1);
                else
                        scoreboard_fade_alpha = 0;
+       }
 
        if not(scoreboard_fade_alpha)
                return;
 
+       HUD_UpdatePlayerTeams();
+
        scoreboard_alpha_bg = cvar("scoreboard_alpha_bg") * scoreboard_fade_alpha * (1 - cvar("_menu_alpha"));
        scoreboard_alpha_fg = cvar_or("scoreboard_alpha_fg", 1.0) * scoreboard_fade_alpha * (1 - cvar("_menu_alpha"));
        scoreboard_highlight = cvar("scoreboard_highlight");
@@ -1118,9 +1120,11 @@ void HUD_DrawScoreboard()
        xmin = cvar("scoreboard_offset_left") * vid_conwidth;
        ymin = cvar("con_notify") * cvar("con_notifysize");
 
-       sbwidth = xmax = vid_conwidth - xmin - cvar("scoreboard_offset_right") * vid_conwidth;
+       xmax = (1 - cvar("scoreboard_offset_right")) * vid_conwidth;
        ymax = vid_conheight - ymin;
 
+       sbwidth = xmax - xmin;
+
        // Initializes position
        pos_x = xmin;
        pos_y = ymin;
@@ -1138,8 +1142,7 @@ void HUD_DrawScoreboard()
        drawfont = hud_font;
 
        // Draw the scoreboard
-       vector bg_size;
-       bg_size = drawgetimagesize("gfx/hud/scoreboard_scoreboard_bg");
+       vector bg_size = drawgetimagesize("gfx/scoreboard/scoreboard_bg");
 
        if(teamplay)
        {
@@ -1183,7 +1186,7 @@ void HUD_DrawScoreboard()
                }
                pos = HUD_DrawScoreboardRankings(pos, pl, rgb, bg_size);
        }
-       else if(cvar("scoreboard_accuracy") && spectatee_status != -1) {
+       else if(cvar("scoreboard_accuracy") && spectatee_status != -1 && !warmup_stage) {
                if(teamplay)
                        pos = HUD_DrawScoreboardAccuracyStats(pos, GetTeamRGB(myteam), bg_size);
                else
index b39b48e53b42202ef0fe7e6c34c284a788ef3db7..3e5de00f2dfba9b5e9df2141097cdf0f96febb16 100644 (file)
@@ -1,2 +1,3 @@
 float HUD_WouldDrawScoreboard(void);
+float scoreboard_active;
 float scoreboard_fade_alpha;