]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/scoreboard.qc
Don't slide the Item Stats panel down through the Accuracy panel
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / scoreboard.qc
index c0f1bc6eac8ff2b046adc90f147767d9ce57daa4..d877e9ba839b30eb0cfc9c0a5b5b97bb991e22a9 100644 (file)
@@ -1166,14 +1166,7 @@ bool Scoreboard_WouldDraw()
 float average_accuracy;
 vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
 {
-       if (frametime)
-       {
-               if (scoreboard_fade_alpha < 1)
-                       scoreboard_acc_fade_alpha = min(1, scoreboard_acc_fade_alpha + frametime * 10);
-               else
-                       scoreboard_acc_fade_alpha = 1; // sync fading with the scoreboard
-       }
-       vector initial_pos = pos;
+       scoreboard_acc_fade_alpha = min(scoreboard_fade_alpha, scoreboard_acc_fade_alpha + frametime * 10);
 
        WepSet weapons_stat = WepSet_GetFromStat();
        WepSet weapons_inmap = WepSet_GetFromStat_InMap();
@@ -1314,43 +1307,26 @@ vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
 
        panel_size.x += panel_bg_padding * 2; // restore initial width
 
-       if (scoreboard_acc_fade_alpha == 1)
-               return end_pos;
-       return initial_pos + (end_pos - initial_pos) * scoreboard_acc_fade_alpha;
+       return end_pos;
 }
 
 .bool uninteresting;
 STATIC_INIT(default_order_items_label)
 {
        IL_EACH(default_order_items, true, {
-               switch(it.netname)
+               if(!(it.instanceOfPowerup
+                       || it == ITEM_HealthMega || it == ITEM_HealthBig
+                       || it == ITEM_ArmorMega || it == ITEM_ArmorBig
+                       ))
                {
-                       case "bullets":
-                       case "cells":
-                       case "plasma":
-                       case "rockets":
-                       case "shells":
-                       case "vaporizer_cells":
-                       case "fuel":
-                       case "armor_small":
-                       case "armor_medium":
-                       case "health_small":
-                       case "health_medium":
-                               it.uninteresting = true;
+                       it.uninteresting = true;
                }
        });
 }
 
 vector Scoreboard_ItemStats_Draw(vector pos, vector rgb, vector bg_size)
 {
-       if (frametime)
-       {
-               if (scoreboard_fade_alpha < 1)
-                       scoreboard_itemstats_fade_alpha = min(1, scoreboard_itemstats_fade_alpha + frametime * 10);
-               else
-                       scoreboard_itemstats_fade_alpha = 1; // sync fading with the scoreboard
-       }
-       vector initial_pos = pos;
+       scoreboard_itemstats_fade_alpha = min(scoreboard_fade_alpha, scoreboard_itemstats_fade_alpha + frametime * 10);
 
        int disowned_cnt = 0;
        int uninteresting_cnt = 0;
@@ -1444,9 +1420,7 @@ vector Scoreboard_ItemStats_Draw(vector pos, vector rgb, vector bg_size)
 
        panel_size.x += panel_bg_padding * 2; // restore initial width
 
-       if (scoreboard_itemstats_fade_alpha == 1)
-               return end_pos;
-       return initial_pos + (end_pos - initial_pos) * scoreboard_itemstats_fade_alpha;
+       return end_pos;
 }
 
 vector MapStats_DrawKeyValue(vector pos, string key, string value) {
@@ -1675,7 +1649,7 @@ bool Scoreboard_ItemStats_WouldDraw(float ypos)
 {
        if (MUTATOR_CALLHOOK(DrawScoreboardItemStats))
                return false;
-       if (!autocvar_hud_panel_scoreboard_itemstats || warmup_stage || ypos > 0.91 * vid_conheight)
+       if (!autocvar_hud_panel_scoreboard_itemstats || !g_inventory || warmup_stage || ypos > 0.91 * vid_conheight)
                return false;
 
        if (time < scoreboard_time + autocvar_hud_panel_scoreboard_itemstats_showdelay
@@ -1776,6 +1750,7 @@ void Scoreboard_Draw()
 
        Scoreboard_UpdatePlayerTeams();
 
+       float initial_pos_y = panel_pos.y;
        vector pos = panel_pos;
        entity pl, tm;
        string str;
@@ -2067,5 +2042,14 @@ void Scoreboard_Draw()
                drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, hud_fontsize)), str, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
        }
 
-       scoreboard_bottom = pos.y + 2 * hud_fontsize.y;
+       pos.y += 2 * hud_fontsize.y;
+       if (scoreboard_fade_alpha < 1)
+               scoreboard_bottom = initial_pos_y + (pos.y - initial_pos_y) * scoreboard_fade_alpha;
+       else if (pos.y != scoreboard_bottom)
+       {
+               if (pos.y > scoreboard_bottom)
+                       scoreboard_bottom = min(pos.y, scoreboard_bottom + frametime * 10 * (pos.y - initial_pos_y));
+               else
+                       scoreboard_bottom = max(pos.y, scoreboard_bottom - frametime * 10 * (pos.y - initial_pos_y));
+       }
 }