From: terencehill <piuntn@gmail.com>
Date: Wed, 5 Mar 2025 10:13:21 +0000 (+0100)
Subject: Menu, weapon priority and keybind lists: apply the correct aspect ratio (2:1) to... 
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e8dee234d6a6b9cb9eeec7fd6a0873e98b23a8fd;p=xonotic%2Fxonotic-data.pk3dir.git

Menu, weapon priority and keybind lists: apply the correct aspect ratio (2:1) to weapon icons of the luminos hud skin

A menu restart is required to correctly apply the new aspect ratio
---

diff --git a/qcsrc/menu/xonotic/keybinder.qc b/qcsrc/menu/xonotic/keybinder.qc
index 1a44fe245..1e4e1fb7b 100644
--- a/qcsrc/menu/xonotic/keybinder.qc
+++ b/qcsrc/menu/xonotic/keybinder.qc
@@ -241,7 +241,13 @@ void XonoticKeyBinder_resizeNotify(entity me, vector relOrigin, vector relSize,
 	me.realFontSize.x = me.fontSize / me.itemAbsSize.x;
 	me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
 
-	me.columnIconSize = me.itemAbsSize.y / me.itemAbsSize.x;
+	entity e = REGISTRY_GET(Weapons, WEP_FIRST);
+	e.display(e, XonoticKeyBinder_cb);
+	vector sz = draw_PictureSize(XonoticKeyBinder_cb_icon);
+	float aspect_ratio = sz.y ? sz.x / sz.y : 1;
+	me.columnIconSize = me.itemAbsSize.y / me.itemAbsSize.x * aspect_ratio;
+
+	me.columnTreeIconSize = me.itemAbsSize.y / me.itemAbsSize.x; // 1:1 aspect ratio
 	me.columnKeysSize = me.realFontSize.x * 12;
 	me.columnFunctionSize = 1 - me.columnKeysSize - 2 * me.realFontSize.x;
 	// columnFunctionSize will need to be shortened if an icon is drawn
@@ -523,18 +529,19 @@ void XonoticKeyBinder_drawListBoxItem(entity me, int i, vector absSize, bool isS
 	if (icon != "")
 	{
 		string tree_type = substring(icon, 0, 1);
-		float addedMargin = me.columnIconSize + 0.25 * me.realFontSize.x;
 		if (tree_type == "+" || tree_type == "T" || tree_type == "L")
 		{
 			draw_Picture(extraMargin * eX,
 				sprintf("/gfx/menu/%s/%s", cvar_string("menu_skin"), (tree_type == "+" ? "tree_branch" : tree_type == "T" ? "tree_branch_start" : "tree_elbow")),
-				me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED);
+				me.columnTreeIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED);
+			float addedMargin = me.columnTreeIconSize + 0.25 * me.realFontSize.x;
 			extraMargin += addedMargin;
 			descrWidth  -= addedMargin;
 		}
 		if (strlen(icon) > 1) // not just the tree icon
 		{
 			draw_Picture(extraMargin * eX, substring(icon, 1, strlen(icon) - 1), me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED);
+			float addedMargin = me.columnIconSize + 0.25 * me.realFontSize.x;
 			extraMargin += addedMargin;
 			descrWidth  -= addedMargin;
 		}
diff --git a/qcsrc/menu/xonotic/keybinder.qh b/qcsrc/menu/xonotic/keybinder.qh
index bad24ab1d..f0e9443fc 100644
--- a/qcsrc/menu/xonotic/keybinder.qh
+++ b/qcsrc/menu/xonotic/keybinder.qh
@@ -16,6 +16,7 @@ CLASS(XonoticKeyBinder, XonoticListBox)
 	ATTRIB(XonoticKeyBinder, itemAbsSize, vector, '0 0 0');
 	ATTRIB(XonoticKeyBinder, realFontSize, vector, '0 0 0');
 	ATTRIB(XonoticKeyBinder, realUpperMargin, float, 0);
+	ATTRIB(XonoticKeyBinder, columnTreeIconSize, float, 0);
 	ATTRIB(XonoticKeyBinder, columnIconSize, float, 0);
 	ATTRIB(XonoticKeyBinder, columnFunctionSize, float, 0);
 	ATTRIB(XonoticKeyBinder, columnKeysOrigin, float, 0);
diff --git a/qcsrc/menu/xonotic/weaponslist.qc b/qcsrc/menu/xonotic/weaponslist.qc
index 44845cdfc..8a799fcdf 100644
--- a/qcsrc/menu/xonotic/weaponslist.qc
+++ b/qcsrc/menu/xonotic/weaponslist.qc
@@ -59,8 +59,13 @@ void XonoticWeaponsList_resizeNotify(entity me, vector relOrigin, vector relSize
 	me.realFontSize.x = me.fontSize / me.itemAbsSize.x;
 	me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
 
+	entity e = REGISTRY_GET(Weapons, WEP_FIRST);
+	e.display(e, XonoticWeaponsList_cb);
+	vector sz = draw_PictureSize(XonoticWeaponsList_cb_icon);
+	float aspect_ratio = sz.y ? sz.x / sz.y : 1;
 	me.columnIconOrigin = 0;
-	me.columnIconSize = me.itemAbsSize.y / me.itemAbsSize.x;
+	me.columnIconSize = me.itemAbsSize.y / me.itemAbsSize.x * aspect_ratio;
+
 	me.columnNameOrigin = me.columnIconOrigin + me.columnIconSize + (0.5 * me.realFontSize.x);
 	me.columnNameSize = 1 - me.columnIconSize - (1.5 * me.realFontSize.x); // unused
 }