]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Menu, weapon priority and keybind lists: apply the correct aspect ratio (2:1) to...
authorterencehill <piuntn@gmail.com>
Wed, 5 Mar 2025 10:13:21 +0000 (11:13 +0100)
committerterencehill <piuntn@gmail.com>
Wed, 5 Mar 2025 10:13:21 +0000 (11:13 +0100)
A menu restart is required to correctly apply the new aspect ratio

qcsrc/menu/xonotic/keybinder.qc
qcsrc/menu/xonotic/keybinder.qh
qcsrc/menu/xonotic/weaponslist.qc

index 1a44fe245c2a32544e1d105a0a63ee74d4ae4239..1e4e1fb7bc15410adff6156624e72f4ba5899307 100644 (file)
@@ -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;
                }
index bad24ab1de40aefd51422ae56d630a54388c1831..f0e9443fc6d0f1668f89c725f1129ec3d1a64477 100644 (file)
@@ -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);
index 44845cdfcd1c49722b86fd4497d13c4dac54e871..8a799fcdfacba23a56fc10802591f7fb860c8dce 100644 (file)
@@ -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
 }