]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Revert "Improve the distribution of icons in the HUD weapons panel" as the previous...
authorterencehill <piuntn@gmail.com>
Sat, 24 Jan 2015 21:35:17 +0000 (22:35 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 24 Jan 2015 21:49:01 +0000 (22:49 +0100)
This reverts commit c4fb6d591478d37e1957d0beec6137887ef05569.

qcsrc/client/hud.qc

index 413f05cff777619ed13c8202355d5f037bf4ee34..abbf733a59057d5916c926ab4ec97316ca1f7fd1 100644 (file)
@@ -415,7 +415,7 @@ void HUD_Weapons(void)
        float i, f, a;
        float screen_ar, center_x = 0, center_y;
        float weapon_count, weapon_id;
-       float row, column, rows = 0, columns = 0;
+       float row, column, rows = 0, columns;
        float aspect = autocvar_hud_panel_weapons_aspect;
 
        float panel_weapon_accuracy;
@@ -433,7 +433,7 @@ void HUD_Weapons(void)
        float fadetime = max(0, autocvar_hud_panel_weapons_complainbubble_fadetime);
 
        vector weapon_pos, weapon_size = '0 0 0';
-       local noref vector max_panel_size; // fteqcc sucks
+       local noref vector old_panel_size; // fteqcc sucks
        vector color;
 
        // check to see if we want to continue
@@ -519,41 +519,38 @@ void HUD_Weapons(void)
                        return;
                }
 
-               max_panel_size = panel_size - '2 2 0' * panel_bg_padding;
+               old_panel_size = panel_size;
+               if(panel_bg_padding)
+                       old_panel_size -= '2 2 0' * panel_bg_padding;
 
-               // calculate distribution and size of table cells
-               if(max_panel_size_x > max_panel_size_y)
-               {
-                       while(weapon_count > columns * rows)
-                       {
-                               ++rows;
-                               columns = ceil(max_panel_size_x / (max_panel_size_y / rows * aspect));
-                       }
+               // first find values for the standard table (with all the weapons)
+               rows = old_panel_size_y/old_panel_size_x;
+               rows = bound(1, floor((sqrt(4 * aspect * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
+               columns = ceil(WEP_COUNT/rows);
+               weapon_size_x = old_panel_size_x / columns;
+               weapon_size_y = old_panel_size_y / rows;
 
-                       weapon_size_x = max_panel_size_x / columns;
-                       weapon_size_y = max_panel_size_y / rows;
-                       columns = ceil(weapon_count / rows);
+               // change table values to include only the owned weapons
+               float columns_save = columns;
+               if(weapon_count <= rows)
+               {
+                       rows = weapon_count;
+                       columns = 1;
                }
                else
-               {
-                       while(weapon_count > columns * rows)
-                       {
-                               ++columns;
-                               rows = ceil(max_panel_size_y / (max_panel_size_x / columns / aspect));
-                       }
+                       columns = ceil(weapon_count / rows);
 
-                       weapon_size_x = max_panel_size_x / columns;
-                       weapon_size_y = max_panel_size_y / rows;
-                       rows = ceil(weapon_count / columns);
-               }
+               // enlarge weapon_size to match desired aspect ratio in order to capitalize on panel space
+               if(columns < columns_save)
+                       weapon_size_x = min(old_panel_size_x / columns, aspect * weapon_size_y);
 
                // reduce size of the panel
                panel_size_x = columns * weapon_size_x;
                panel_size_y = rows * weapon_size_y;
-               panel_pos_x += (max_panel_size_x - panel_size_x) / 2;
-               panel_pos_y += (max_panel_size_y - panel_size_y) / 2;
-
-               panel_size += '2 2 0' * panel_bg_padding;
+               panel_pos_x += (old_panel_size_x - panel_size_x) / 2;
+               panel_pos_y += (old_panel_size_y - panel_size_y) / 2;
+               if(panel_bg_padding)
+                       panel_size += '2 2 0' * panel_bg_padding;
        }
        else
                weapon_count = WEP_COUNT;