]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Notify panel: improve scoreboard area detection
authorterencehill <piuntn@gmail.com>
Mon, 17 May 2021 08:47:43 +0000 (10:47 +0200)
committerterencehill <piuntn@gmail.com>
Mon, 17 May 2021 08:47:43 +0000 (10:47 +0200)
qcsrc/client/hud/hud.qh
qcsrc/client/hud/panel/notify.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/hud/panel/scoreboard.qh

index 44539f4161b02819058b73032dadf226000fe91c..a7080f90cf31415ebd07439ddebe16fb06c12d0a 100644 (file)
@@ -107,7 +107,6 @@ entity highlightedPanel;
 float highlightedAction; // 0 = nothing, 1 = move, 2 = resize
 
 const float BORDER_MULTIPLIER = 4;
-float scoreboard_bottom;
 int weapon_accuracy[REGISTRY_MAX(Weapons)];
 
 entity complain_weapon;
index 1ea81f69de3b5f855c05979f9a6502ca80471a9e..ae4b92211d8bbb0fb621e43861aceda193bb5d6f 100644 (file)
@@ -69,8 +69,11 @@ void HUD_Notify()
                float minalpha = 1;
                if (notify_count == 0)
                        minalpha = 0; // hide if empty
-               else if(panel_pos.y < scoreboard_bottom)
+               else if (boxesoverlap(panel_pos, panel_pos + panel_size,
+                       eX * scoreboard_left + eY * scoreboard_top, eX * scoreboard_right + eY * scoreboard_bottom))
+               {
                        minalpha = 0.5; // transparent if it may overlap the scoreboard
+               }
                float f = max(minalpha, (1 - scoreboard_fade_alpha));
                if (f <= 0)
                        return;
index 2f756e4ae190bbca581d0403001db6c9ac6d46cb..e00343e791c63de81bb96282615c6df16f8c5dda 100644 (file)
@@ -1801,12 +1801,14 @@ void Scoreboard_Draw()
 
        float excess = max(0, max_namesize - autocvar_hud_panel_scoreboard_namesize * hud_fontsize.x);
        float fixed_scoreboard_width = bound(vid_conwidth * autocvar_hud_panel_scoreboard_minwidth, vid_conwidth - excess, vid_conwidth * 0.93);
-       panel_pos.x = 0.5 * (vid_conwidth - fixed_scoreboard_width);
+       scoreboard_left = 0.5 * (vid_conwidth - fixed_scoreboard_width);
+       scoreboard_right = scoreboard_left + fixed_scoreboard_width;
+       panel_pos.x = scoreboard_left;
        panel_size.x = fixed_scoreboard_width;
 
        Scoreboard_UpdatePlayerTeams();
 
-       float initial_pos_y = panel_pos.y;
+       scoreboard_top = panel_pos.y;
        vector pos = panel_pos;
        entity pl, tm;
        string str;
@@ -2100,12 +2102,12 @@ void Scoreboard_Draw()
 
        pos.y += 2 * hud_fontsize.y;
        if (scoreboard_fade_alpha < 1)
-               scoreboard_bottom = initial_pos_y + (pos.y - initial_pos_y) * scoreboard_fade_alpha;
+               scoreboard_bottom = scoreboard_top + (pos.y - scoreboard_top) * 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));
+                       scoreboard_bottom = min(pos.y, scoreboard_bottom + frametime * 10 * (pos.y - scoreboard_top));
                else
-                       scoreboard_bottom = max(pos.y, scoreboard_bottom - frametime * 10 * (pos.y - initial_pos_y));
+                       scoreboard_bottom = max(pos.y, scoreboard_bottom - frametime * 10 * (pos.y - scoreboard_top));
        }
 }
index 7189143e669831af26eb7576c6ff43453f214ba6..cd43b341ec78ab041ab7a04db67b1135decb7a64 100644 (file)
@@ -11,6 +11,11 @@ float scoreboard_fade_alpha;
 float scoreboard_acc_fade_alpha;
 float scoreboard_itemstats_fade_alpha;
 
+float scoreboard_top;
+float scoreboard_bottom;
+float scoreboard_left;
+float scoreboard_right;
+
 void Cmd_Scoreboard_SetFields(int argc);
 void Scoreboard_Draw();
 void Scoreboard_InitScores();