From fc9687796da35b9b5ace347199b35fba812f893e Mon Sep 17 00:00:00 2001 From: otta8634 Date: Tue, 4 Feb 2025 14:27:05 +0800 Subject: [PATCH] Allow binding weapons individually in the menu Previously weapon-groups could only be bound via the menu, meaning a player can't set a separate bind for Crylink and HLAC (for example). Added individual weapon bind keys under the group key in the menu. - Binding a group key will unbind all the child weapon binds, so that the user doesn't end up with multiple binds set for the one weapon. This is of course a legitimate thing to do, but is likely too confusing for inexperienced players. Added tree icons to make it more obvious which weapons are a part of the group. - Currently there's no tree icons for wickedx or luminos. Since this now shows weapon icons along with their names, this is enough to complete the menu-side of #2065. --- gfx/menu/luma/tree_branch.tga | Bin 0 -> 4114 bytes gfx/menu/luma/tree_branch_start.tga | Bin 0 -> 4114 bytes gfx/menu/luma/tree_elbow.tga | Bin 0 -> 4114 bytes gfx/menu/xaw/tree_branch.tga | Bin 0 -> 999 bytes gfx/menu/xaw/tree_branch_start.tga | Bin 0 -> 999 bytes gfx/menu/xaw/tree_elbow.tga | Bin 0 -> 859 bytes qcsrc/menu/xonotic/keybinder.qc | 177 +++++++++++++++++++++++----- qcsrc/menu/xonotic/keybinder.qh | 3 +- qcsrc/menu/xonotic/weaponslist.qc | 1 + qcsrc/menu/xonotic/weaponslist.qh | 1 + 10 files changed, 153 insertions(+), 29 deletions(-) create mode 100644 gfx/menu/luma/tree_branch.tga create mode 100644 gfx/menu/luma/tree_branch_start.tga create mode 100644 gfx/menu/luma/tree_elbow.tga create mode 100644 gfx/menu/xaw/tree_branch.tga create mode 100644 gfx/menu/xaw/tree_branch_start.tga create mode 100644 gfx/menu/xaw/tree_elbow.tga diff --git a/gfx/menu/luma/tree_branch.tga b/gfx/menu/luma/tree_branch.tga new file mode 100644 index 0000000000000000000000000000000000000000..39804899206bb1abc1a7608002d16bb227579983 GIT binary patch literal 4114 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 literal 0 HcmV?d00001 diff --git a/gfx/menu/luma/tree_elbow.tga b/gfx/menu/luma/tree_elbow.tga new file mode 100644 index 0000000000000000000000000000000000000000..96c3c93e6917df7ea1ca5b7017d1c03ccc47d46c GIT binary patch literal 4114 zcmeH}Yfu~46~`9|0TwY}6EL>10V5D-SF0B<3v4jh<`wW`0H?*NV{9Yz+J{!WF%Kb- z1d>+T)q(&UJGOB`Z1*vp$xPCR@pRJmOQ-F$`OryP$DVekZQ5q+Ger`sILvonpaWmNReDWeE0?twB>o;-aG^ z{@(S|;y=xv5xw8rEc&1Vi4&fO#h8DY@32MUH@3BY4d3aPwYx`(D|tq%SnMm$3EQ=q z;o*vuaGyTu&S+QsZx_ts-(77Hf9R$}AKk8xyFa^m4!**tYxM@k*xqXJ(B|jze<$1= z3_$$r{9&{*#FU_y`}H|XePx+Tqg5%(y|qc-^PZIa`nyB%fBF7d@$av8ivK!RE_#0$ zeO34Xn%l9J#2 zcr5lhy{}{w?q4;S1-3d2w0innS@ppJGVpW1&hg}}5%)2tE z&$>QdowhpBB>jQEBk^9SOY$yzO7fnwGybaYxOjE4RvaVjsOgLO*D4%LoxXdW?*=}{ zZPfpr`6fOPDzZ=c3SI?%wa}|mE%jH)mWQi$UmLDTUvV5wS#h^Y-yW$?x=9~Mywp>d z5HjHsXO}_}g~ga`@WbopPh0F*KYxby;|7=QIsW6@b4>#9`=-1Fot_b_E@ap07JBy= zUmmW^y)txQ=k=jO=~pLeQkO>$ZCx6vN)Gi`BnKH>I>V^8#K1;PU*v0w9kxSI{}(!r z^|%-d7381B|M=Ei<2=jB2d8EV&Ul8<2B`o2^Y$`TxPN~k7B0d&Ra8txMxbb!rqAW8$Nr|4`5R&lA3(1LC(^s6Yt#kD>oOz9lp+utE97DUa;D zX8>*GY?>OuR#G<4l;8^k74pS_%6*Fi<$D+V%XcsImF}9emt=+PnjJi?+7SaAHTewK zdjETpe~6!s#Bb<0W|+2H$bhiUzYBc6;S$TrC#I%lCU>8rJxHkq9zk4`J2lealJ5+X_F`bO`U)cXh{XPEp?i0Rmws6)tv2Vyl7n-~lMVHU4IPJHf9jpaA?zdpg zek)ebTJSp7ir4t8*uemSR{2R(ABDx3xahoipGlF%6L=QvY5th)i0+)-()x;F)@pv* ze;%yypZ{>F?bh;KRXEI6&RlZVj9!~K(tq7?lv$aqCvHwPnckdgzVMc-xog#Z>^rwS z$2(VDEw9e^YnprmiuxGXsL5kQ<7c}SDM5=elcQ9*qqd`}*X?vuqak24QGzdW{{H;4 z@W0^!34f31{!iJD-dR2}8Mszp zkHTV1#)urT+a!C5HKFMN0?!^}jw)VfsM=uwTSDY=KklS-NosGsDlMPl7 z0U~ce-fuV?EGy0i6Ra8Fne%T>H=kW~wZ0a~|68tCPR;eJUzq>N4n%a(xFgBkBj4&X z%hNd$+a08ovVaxGpsq@xt`7Lj=wYu((FAJsniVIY?oLET&~Z>J+&9BB4WJ`F3sws~ z73vQ?$U^;rHmyHnAtLHOB}o`H%B1dYSt@H$WWYJf4wASG_5+18re&>I1=RKd@TCUo zz0PM*9`=HORR^|OSgQdY^b=?$OJWrPN?8^pm8I|>x)+_lIs}O`tC0Ay@0s0f+Us==OPDsSw4K97QiTn zu?R*`WYiS#(6>UArcj_XvN>9lFW9ts00J`9|dCXSo) zq|;Cj-tK}l*jw-e%?yyrEbwC&yic-u21Mg~cpHdO?GY$dc8FH(7U=c$ogo{Z1-%&F zJ?b3-qsokN?4l+HWF8Z~vA!VaT{E$zd*#x{bvz%^2k=-X2A&-;8a8 zoNV_Kc)FLsKzOw4g}|!czT4bkp~5#F19e&w<|t+JzvZ zwoF9ay+7hdl4PhmD{;)cFKN;Br0{A zBkP!Sn!vYA6X=#n8r$^yBf^hdum{Lp;KLA?0ICMHWgu}(6(Ta7L_|~Hepxg_DMh0U qDjv7vG1U+D!7i0}$fyy+dq^ahP?7(_=HI^&_BYoz8TfzBz<&S`{_owdHT5OF#rIV C7G6aF literal 0 HcmV?d00001 diff --git a/gfx/menu/xaw/tree_branch_start.tga b/gfx/menu/xaw/tree_branch_start.tga new file mode 100644 index 0000000000000000000000000000000000000000..cc13a2d36df4e6dacc34f0301c8d3e636b2677f4 GIT binary patch literal 999 zcmZQz;9`IQ1qLAG=ml|`f%rd|HC(t8;XcC88dg4k&j^alQ9!2`{_owdHT5OF#rIf CHeOc% literal 0 HcmV?d00001 diff --git a/gfx/menu/xaw/tree_elbow.tga b/gfx/menu/xaw/tree_elbow.tga new file mode 100644 index 0000000000000000000000000000000000000000..fb23d28542115926d84d37640386656e76317593 GIT binary patch literal 859 zcmZQz;9`IQ1qLAGm=EGoO!R_GnFz%HiC{Iu)qxccZSH$Ukk>~6okD<#ftleYyAXpJ zg9NEI1|(+YmFW4ohA5co8R{9~)2;xLWQ0Owh0H