From 3d5fb9da3f5cb1f75a10fe7276b820ca4be6e282 Mon Sep 17 00:00:00 2001 From: terencehill Date: Sat, 24 Jan 2015 22:35:17 +0100 Subject: [PATCH] Revert "Improve the distribution of icons in the HUD weapons panel" as the previous code worked that way in order to use the same weapon icon size (and the same layout) even when hud_panel_weapons_onlyowned is set to 1 This reverts commit c4fb6d591478d37e1957d0beec6137887ef05569. --- qcsrc/client/hud.qc | 53 +++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 413f05cff..abbf733a5 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -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; -- 2.39.2