From f6da8001c7d20985eec828353e332f4e8ff918aa Mon Sep 17 00:00:00 2001 From: FruitieX Date: Tue, 12 Oct 2010 18:47:03 +0300 Subject: [PATCH] new crosshairs by unfa, add an optional centered dot for each of them (toggleable via player setup menu), do some general cleanups in the player setup tab --- defaultXonotic.cfg | 10 +++- gfx/crosshair1.tga | Bin 0 -> 3076 bytes gfx/crosshair10.tga | Bin 2322 -> 6162 bytes gfx/crosshair11.tga | Bin 1044 -> 5788 bytes gfx/crosshair12.tga | Bin 284 -> 6918 bytes gfx/crosshair13.tga | Bin 16402 -> 7446 bytes gfx/crosshair2.tga | Bin 0 -> 5458 bytes gfx/crosshair3.tga | Bin 0 -> 5038 bytes gfx/crosshair4.tga | Bin 0 -> 2658 bytes gfx/crosshair5.tga | Bin 0 -> 5518 bytes gfx/crosshair6.tga | Bin 0 -> 5692 bytes gfx/crosshair7.tga | Bin 342 -> 4991 bytes gfx/crosshair8.tga | Bin 948 -> 6621 bytes gfx/crosshair9.tga | Bin 2322 -> 6578 bytes gfx/crosshairdot.tga | Bin 0 -> 1072 bytes qcsrc/client/View.qc | 5 ++ qcsrc/menu/xonotic/crosshairbutton.c | 6 +- .../xonotic/dialog_multiplayer_playersetup.c | 56 +++++++++++------- 18 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 gfx/crosshair1.tga create mode 100644 gfx/crosshair2.tga create mode 100644 gfx/crosshair3.tga create mode 100644 gfx/crosshair4.tga create mode 100644 gfx/crosshair5.tga create mode 100644 gfx/crosshair6.tga create mode 100644 gfx/crosshairdot.tga diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index e00da3208..457505dd2 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -87,7 +87,15 @@ _cl_color 102 _cl_name Player _cl_playermodel models/player/umbra.iqm _cl_playerskin 0 -crosshair 1 +seta crosshair 6 +seta crosshair_color_red 0 +seta crosshair_color_green 0.2 +seta crosshair_color_blue 0.8 +seta crosshair_alpha 1 +seta crosshair_size 0.5 +seta crosshair_dot 1 +seta crosshair_dot_alpha 1 +seta crosshair_dot_size 1 seta crosshair_per_weapon 0 "when 1, each gun will display a different crosshair" seta crosshair_color_override 0 "when 1, crosshair_color_* overrides the per-weapon color" seta crosshair_effect_speed -1 "how fast (in seconds) some crosshair effects should take place, 0 = instant, -1 = 2x weapon switch time" diff --git a/gfx/crosshair1.tga b/gfx/crosshair1.tga new file mode 100644 index 0000000000000000000000000000000000000000..d6c09e9b500f259374097d1bec4146b9cb343408 GIT binary patch literal 3076 zcmeHJ>rPWa5I&V-DNu_+t)jt@CK_$5Kr}?-wbnLikP@qiF+qMPA_+E9Fj}Ra)>~9w z1@ZD4UZOERgO5?aZ%k)Tx9uPPX=w6Ic4oer-LpHhUB~Hm>c5IpaRx&*sv8umjQv!r z)toI5VPFs7exyZwBHmLaVJnaUidBdTEoI;i5EG6GS%=LDK|+!_ccVtfjB01i$=$pH>5CI2?(!2_|_^>q|LsCkW2}SA}Ztg0V_(&w4yOnXtkbc z!lLM81Jf`mgT>8&f)a8wLYF=oc;QM3zq_jecJ(InZKI;4d D+8y?X literal 0 HcmV?d00001 diff --git a/gfx/crosshair10.tga b/gfx/crosshair10.tga index e9648b1e629cb6bbdc8d260ea9fd216cf6809f69..e7b5774e6f127cbf8a770c14a6a4c74c49f2c4ef 100644 GIT binary patch literal 6162 zcmcJT*>Bue6~|{h-o{I8C-F>(<9JQtCEo4Wj_sKVsHLe`#L|iv;Dv{RfR{>@KtgIL zEolP{p*vMtMJ-fm6rrdpP_{RO#6M68@s6Mp5-$~DN%(%g!|&YjU_aK<_s+fNobUIZ zd+z;h&gHst+25nNM{}c{cNuP#sp+#Ay|QgYoe@q5J?15u zYqD9URh?tPnTu*Hvp~-aL}1N!ddtEQp~c)J^{Q-^I-t&!P@yK48vZUmGCE-!GAwXX z=zdjAF3DVFNJ+bd#mj1Hj1X*lOpSdV>db|2R-+E{lFZA5GEYGm7phm()F^LOTC8lu zqENAy_#I(b$Xg)^{zx{@&HioNRO7tX)akP?g}#`DcB(UfD+^@_t@fqR7qZYkb++Eh zLf6$P+LuC~&q7P;RNl@)IX->%rO@XHrQ9RG$ig^jW!qEOGlWrG);;|zHQue!XR)WS zA2Q6s7MZH%Y}Mi5jR`{nbz$q-n=G0F5IZPvx+pojwQUtLJmn;sCc`mJ7BzN{Vz5sL z<-e~chn1YUFir}aj)gVqWRo1*>PpyAgT(fa3f-;-7P96jRv^0sW%H8E59F{+Db5K6 zh1B*EJ{HVkr|oBizt6lRb6GZrvXlzW8lf{nXPo;UjpoD0_7=@cGEd7EGj8Fu%$hpA z*D~LLI-B7;qfx7QO)?a1A;RV~D!it~^4zUf>?7(_6Wu$3qZD*@DgR?Nrc>IPpdWC2 zn*DoO7@N6?(~F>NN3P>TdXzbBUsWe>PLl*-6T9erH)JxsY&sD`O;m0}PO@8_s_BH4 zZ({e%A<21ZcYK=JL&BDVI{wp)Ivcj>CfZY3$Uvyi$&@#hlRzz2f?jldnlt_2*K`Af7D8W0q5IXVk^8 z4LUB-E)v4bU?XPcR@)Ku-k>k+MQ26zV{wYHBr=Oo~Fi z4wl@HzHK@o!|$l^tS7^^+(e5x~;JH?MF?C zjc`MEvQt5;KZy63aWz7Ef_6A;r<-PbB1?+%TIHD4D9^^P8|{^_pKYRlhcKue0vGm2 zgpWq}iQj1G#OG`y^8Wutoz`!`{IrN~6VAb%d}m5=mo{XWhjJw+*|IBpxe_lj^Q;@{KgoVAiP ziBQBD;UDm<{BQk!k#bwPFO z`I}>5UWJn~#MCF;c}k7NK4l^kw1ik!*dB5mtiKSSgdm*ba9QMGw$sbo{w*fFts!zL z;zo80+#il_guqq^6hh!i#7*xO@I~ef9*p38ETb5F{=eY84xkPX$8H@6u~OJB$JTRRPYMl1zQ7QTr+t{{z3JmfZ!pw` ztww4e7Jkpj2k$@neaIRqKVJ-lJ|MjJm>P#tmT&oDLV75qCp;bJ8fo5WZU^U28f{xI z$>YqmsVNGZ!dHbygf9#CQ4^n%iI`y4HW-xk>%upMF9}OR{c9n~vosf^jT2$1)wp4? zs%qyuZ*~*4ed5C&?eXVHJdy_Ei^-K`13f)a~R^qVw3o>DwLdOm4jCzHgnBDu) zFuUo5bwpSu(R*DcOB_;X+Y*_tU|uR4PG>P3-xe&Q^hPEztWGsP9K584EKElmtX)=9 zW94J7t8oTw+Em!*5o(}&2=#zaaTuf1LfbVpmSBNP;oH)v*d&9~izxd;kvX|%9T!@z z;=|G^j0PzmVA#{=<`h2_I5`x@6Zej6b3w@Md>d zXn77F7BWJ3BR;gp%xjXNB7`qLqsIRN;PROj%0jCbz)NAfa8#HVDvl*HC(uxG=5kpH zUniFuy{fPvu&hC$PvB0`5|1IKC<^^TNf;59pI1{O!6l)^+9`W-h^dxeCKM5Na82Nb zxNU2;=LIv8z_W_50L!0!M~&y2P$zF+3MCO2eEerwSXG^)wx_Tc2xGbr3DvjMSdr6m z(7qJpjCaAZ&0zyh;k*Z(fplMK&Ksc81fl$_>KdQ|jb-Rdb&B z7wltMivp)FZ+?=yCY$BBpb@BCR1>oo{DdVl&fHo1vMNo=(q(>>SgU=70jefHB2-1Ff1&z%3{C+0qP@A;42 HGoSk})-9g? literal 2322 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 TGtrg0ooY`v+)1WxCK}xyTw!{c diff --git a/gfx/crosshair12.tga b/gfx/crosshair12.tga index 4edabeaaafecdde4a9b5bf704c493d358522e7e8..95892abd6cb0279d62b8ebb27e38664885143262 100644 GIT binary patch literal 6918 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 diff --git a/gfx/crosshair13.tga b/gfx/crosshair13.tga index 4a546781fa66184670478e309568e84e52f0b825..e9f17a796c51ff3c6d134fd4ffc964f1aa2c0cfe 100644 GIT binary patch literal 7446 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 diff --git a/gfx/crosshair2.tga b/gfx/crosshair2.tga new file mode 100644 index 0000000000000000000000000000000000000000..4e2bd7950b8df50c30c88eeb5b497c231f4c766e GIT binary patch literal 5458 zcmb_gS!|U>6u!5&yhM>$}Wwp0{WWiarglBe_ukl|3RoC{#QWaYdFsnV&{ z3FuV$Dd>E$4~^<|2G3I2f_mAiX2Lid=mK5>b_3Iau(PTf&wY{(%mH?HqKQ+p6Q~8k z&Kwqb9*kQUd7MeM0hvzZ%9%zHSdTcDaDFNp4K=K+C^4s85=mKZl$k!tcB8EEQFa*R zRv%@xQRez64MrK8io&EbfNhre8YgipWg%$0td!d!dSjc=8Tm9CjSHhw&T+EwoXE6sT+r3#^JYj9LT-EZ<|tTREufoM4m*WI%T2LV76h9#MIb! zNHJiW`TiBs@L&NMUGlquc^?6i_Y0G$4NenHMsD(iA-57}AtO#{E)aa8tnE9&+oUP8 zkMIocxTOans-Q(S!5B?Sm-WCVn_xYp3-ZG-4)>kltWEG8j1OuMY3po)5}P1-jB!Ci8J#o*$DkQb9mmMlgie9^i$U6B{vLod!fdxdx}rE3*$==q zK(F`Im?hA^!{btEeTe7SE;Nd`5S^{GDdH9A^fw#tn|j(5*=Tek&!Ew`C^{8p;|k{5 zIDRf|FrVun<(sV$(mC1`%ZqppQk=n}cS5I|h-uOB7T_>&C%|_s!m~1zfhHX&2I_!j zfOpAImc*>QVPZfT!181tLnCW{ba?jA!n;2YNRwx##<{8GeKhaiCrcH!xw9e71h~jg z0PBGXN;631JaoMllA4AM448(v&E`kbne<>y*lg_NEdiK&Jpw$ymgegLQ&ZqDt#mmOZJL7-z4} zp{RZ|l=0e*)At_0`zOd^mR_D3QbgBBxGTYWgS#?%@k4>K*6|_ickL7`X*_6WBw;zp82ePuA$R%=J-e4W{jd;kRsKBJGv2V94kf!dhs{5abTFx)nv;uMta(ZEg4PKu<}|m=t_=MHo>TP! literal 0 HcmV?d00001 diff --git a/gfx/crosshair3.tga b/gfx/crosshair3.tga new file mode 100644 index 0000000000000000000000000000000000000000..db5f2cc958ed8aa8e293a6f57040949c9edf1ba3 GIT binary patch literal 5038 zcmdUyeQ1?+6vyw~=3dq5nlp7TZq9UD(=~LyZ0?Rs(KO#3YL=K;IDK zp64zU$`1AXMMKfh@XT(eH&q-Wf}P#n-Jx`eLSe7)fpAIqSm+Q&yeDBA_i1okxFB2< zUKdshVY6`)-3yPYA`6hiK_nBSRsC5hu~Y=zflCt`D&k5ZT=RG@Fb%PB7^4 zc+E*&TJ9fDddo>483}sbJ_$3_7_WTZl`pySy{^0}UipSBZ*$B0JoZclan)o0N3(u` z2M$*t{A`)Z(CCU#E=&;S3l9m+!W1Ew!dpj-(qM+LQn+83E|dy;-O&r0#bg#oBxR|W zWQS(!>5(XVj|sJ}Nm#zA=TiE^_Hh4|*ZW(|a)cP;?M$(QN?hnnj3T<$sc%SsD zglYEC;1OGgw@EnV{diil60;d3$~rwm8@CGV(aYZm?+P$S2(28>Lf)o9{!t0*w;5z5 znl8~GEEZl7&Iw-#M}(zMNW`27Lq;7(MJ@JuovaaUme6J3~Q!-Z<0QYaKiYqO=5R=Jx|Ohs(UMzy)Z@jXH< z-PXjcUMP58!uzYj_ILv}3ZsQB-f_GS(-T~9TqBRyV5?mX$ZZ0yB9NO1q3Br&(@fQ1 zf~^w*Zd&}>tkUcjvl%o7g$QLx3=n1ss|7l!Mc}#@3$>ik&V<42{SsFFa^h`*Jy_tp z+&Avd24R^%;9>I-xU`fIbw06J{FNOVS^OA_m{~OH4zS(}walp#jcVrbW9HJ#MK82! zS4n*a%g{=EEjJl$q>w((mZ2rHe2RQ<% zp#ugA)Ps+4mhG_0_0AQB34D0^3Srv~j&4~dMW9TG@GY^D)@YDr)hCVoB5LrxI?Zwu za__1{HU3EnGef!ZtTU|Dd_AJ|!i26c6R3^$m&hc|(!8yQ`Z_O{9McaDV|NRBf4?~8 z{<0vdDSj(zl2MDDI?nIm09zvq5g{en6|Ra`^Or`E-~N8ds1;7-Tw$jUb81d9YM}>Q z>j7UsKLL~da01n=^Lv6O;TF{j)Sla)Ed=k>5>FrfG0D;glk1N8e4$#X6!L`Ykp~qa zwh&Z$@lIhoEfj^iNT~2~j?*mcWzMs8c)SiUzQK9xG%F@8F&CJ)?6Px$7Fx_)Y|J zGV@c-JSrZx(*rDPaz-=ouBRw+JC%Fy*L(CD(Ej zg-6*j{+ZB)MdNqrc}A$gVvI|?g#;>phAy?c_obejy=OOQHt3jy9c!uvZM!9`QSr7% z_=^?eUe$BGog^qQ@#5t;6|{Ix>DeeePCRC*O@nzt=5Y!0RH{KMX}A5g8r&uPjXSe( zO;5h9C>GM+kgz%q(4a!#R#6qW=ctz*;{q$e3D`Vfh8Z0@ z!7ihrbf;0v;*~#j<@2sQ%as?#E1z}cuU&b8D=&*zKJ3bGx^k&2SHvqXapg59dt(01 z4|!QjDFJ~pfe)=rjLr(FMr20myL@ksW-%G+>7-IE|KOeUlV(*E+p@LCYDeAEcuTsU*?oa!ahXU?8BCiE`|(if-z literal 0 HcmV?d00001 diff --git a/gfx/crosshair4.tga b/gfx/crosshair4.tga new file mode 100644 index 0000000000000000000000000000000000000000..2c4f312d47ad76535a56315a98a53e149907d16d GIT binary patch literal 2658 zcmdT`Yfn=_5Zw!HL8*c?M3K~>5K*!C!T`qjK~td?YEr3DBMHQS5F#O3pU~b53Zni2 ze8CqrgcyGV|E!)fN$1{f=yxDF!|cqNxw|v73&tEYM9^nHgg7L^|zS%dJXB_!OZ zd}Rb39iK>Hrq@7J?7Pr%pGjjtZ#BxiQZg209bvNd8Yo4jjaf8V@)I*k8LURhC?&BQ zh3AO@3sL~CW`U4Jm74H_10Nxz2t_DuR;{GE%y9{L`=LyI1|@D)Ub}i2&VC>ZOaN(s z;bE(*JFo>hw=b5gfT@Kz1atz&fSP|0V&zbu0NQ~%;rjEmOcG1k13c%-<4i09tki*R z2t&(J;0fR^K?ui%G6}Rw4nHN?>>+>WRw1O1c_?jL5c0LFPzriw*y91_4HTYxVwUSV zFuaeEKQz;K94N|^@H;LL2do55FfGb`VydJBQ=8E{#+eBO(RooPdHOfKv_-!_$Zc!# z4@$=!A#+1KMCccU1f14@bCm%j8sLH((SWlWkf;o}qT89(?KCPm=99UJ7Qod559@*F z^}sK{a4Lg%jv+1cORO3+uu}uiz#gbnxyxagr&b}P%bc4o=`xcJN`I)OmmmVsvSbQQ z?MdHZot(B zzrm{6dXD80C$#~1wFV(s$DugZ120Ps#E?#PS2fC{Qf^t4btI7K-~<(v_SmB7$MQ;r6F~60PN;8z*oit z-T@Q9De1pI!W*#3dmVyu1aQP6gcASP*_(npw{YlT)P8g!EhDrWs?mhcG_uTt^GpST* zs`HagWm6-2b}&6V*@??i)Ht|v! z1i~nx0fol2$XKD^xJZgwu~1_fn)SkPA#MA_9kP^ABuv>UVo%dGC_N@(Pb4_YGPEZN zq@PNh5Dq8R_lwv8O6jApk)b{aMH3SOV?$`v6PAIf#X8{S>H zHU!g-$f?s|6%E0!>TYmR2&RSsYp4(Yxb6m{Lr@**Ob*_#?#ibZ${r6P8-e0dkqd;( zyCNy1RE*xJ5a_voyPoS(Zd@6$Ts zm6B&!@=OO}w7@*9whCAk2y7!;*h@&;Z?Y<~()G~MF`KrqyKBSU`ry@A?+j)utU^h) z2aD@&A>(kZwH@8OO{f<# z_MNQgA@SVuG-`#wu2czS!Z6_!xp_CXI1pvoZ5}QEmB3yO5Nd>JLb*_4ze$+g;(4#u z65sCL3wK`yZ=UteVD^MnsQm9j;fwenlY#WC-L>R1eKt(nrP?=4$Asy<`Aj!OVkh?z zhWOy;;4jN(IyF?Dj&;7~vfyHtvy7FuSwAV2r>LDL zoQP)pQ?r%Pj2kp-582zA73R2kR6MsH{lKK17V@e;()VN^A;L5YpISzHu^`T9q3x5b z9uv>UdxQqdgf`(Ofn!nlx`?GcHJB-^7jUy!7-ZYT)sNzJdG?%}o~uT@1pohWkH`24fwzZ| z0{g&g8jtg`oX0rvUA9sUnrW9Ti@Q;{IkuG-%Cv(ZD;AEpGk8w0Kg)#;@nX`d*+QYn zzLV>o+#IT}2B&{AbiT*z5$8|8QW4;wFf5*M<23uwGPF+#Oj>#7In`S63;1Ah!l z&!W=Q29H&-XGL#z&Pp`6z%sO!OH}YQn8girwBojU4KZ2sJsM*=nnh1ItQ& z9`vGT?QT&%)8_Era)5|9p+4J#KR2K0j8It<$*v2Yf5~=v_|rXpYo&Py2qOeqzo)=_ zn@dEo>cZWe;I&Z7QjY#Wfg@5T6xwT2NY|Sspjf#>q>)**;AMCRuGTE=5XcGy9|X%T z)~pt%@q=}gCK>xp!qBHA%0Zb%pE}BH4OT_hUawidLn0}nko0=mI*V8sM6CD||=|@CdH7b+*%TwLm z`+xqIC;2z3>L?M2H7TMF?e4u_2nL4o2)fZ*-Jn5fV$iu&l`buQCwwB}H6W{tl8=O) z73?MK zGD8?-`^4Q2@lvRk2Li#fib1~z&!|^M&u1!@=74)nGA)jSSm(N?#)ZDaWam`ip Kn=YF-A@vW&5dBjC literal 0 HcmV?d00001 diff --git a/gfx/crosshair6.tga b/gfx/crosshair6.tga new file mode 100644 index 0000000000000000000000000000000000000000..b005d9643a89a5b9e49e90ffe9f60c545dd12b54 GIT binary patch literal 5692 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 diff --git a/gfx/crosshair8.tga b/gfx/crosshair8.tga index 06028298fac23095696ea822ef8f3b86eb390dbd..df9e414f7c73cbda181a75b94dc1334b1044e925 100644 GIT binary patch literal 6621 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 HwiW&haed;h literal 2322 zcmcJR%}T^D6otbu{yl(Na5D=*d=M8d1wjymf*U~)Wfl&C*p&~{7jf&tjUWz!?@`Ye zav@XtlTI;kxM`C6ott*jj&l=dEpwThZC6z_l@6r?X;X3|1!G@2lC~t+AJVJD*jWCt z7*En?;O#2jOEf(8q;)+q<-(>B*$4ZfZajXZ7ik?2*f4&jg~UE!Tdgo}Bs?CZAs*D3 zOR(|4%eZlbc`kiRsUGCOUWVAlHlHCL#-<)T*oSetVv0wd&2<;EK4%_Z$~%)bqWp>a zClYg4(onW}kq5`;mu2aYuF=X|7_+${ky>3*6n5}^Kk)qA2)3_-nnSA;QM`{KwKlH( zXTE=~E%zsW=8d)W+&j(+za4*OYR`9Nu7}g)P5!mS`=aUhc^c+8=c(t)d}4O4d|$t! z%@Y~Bkd_i2O>5%y)=y#ETI#-(*yCM-#}Kx8kYgUV9UiQkOT1(Aj&;V3qj`|~Sj*)b zVBfU9_jk;!_wnE!!FUc#*xW<=rY+QGT|GDTnp_w(Jh1|SB}wLtu{1xSE-KcOOE6$lNCKw*%E+72M`AH)M`V?b2^vi&Dq0mvjhgaVN6 zxm`d4Y|dO%iF0s?bEp!Z;S!%wC2;D%Y6r-{cwI-(eS}d literal 0 HcmV?d00001 diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 6fc94ca43..157b68d00 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -893,7 +893,12 @@ void CSQC_UpdateView(float w, float h) { CROSSHAIR_DO_BLUR(CROSSHAIR_DRAW_RING, wcross_resolution, wcross_name, wcross_alpha); } + CROSSHAIR_DRAW(wcross_resolution, wcross_name, wcross_alpha * f); + + if(cvar("crosshair_dot")) + CROSSHAIR_DRAW(wcross_resolution * cvar("crosshair_dot_size"), "gfx/crosshairdot.tga", wcross_alpha * f * cvar("crosshair_dot_alpha")); + wcross_name_alpha_goal_prev = f; } } diff --git a/qcsrc/menu/xonotic/crosshairbutton.c b/qcsrc/menu/xonotic/crosshairbutton.c index b290f3d21..a6608a7d7 100644 --- a/qcsrc/menu/xonotic/crosshairbutton.c +++ b/qcsrc/menu/xonotic/crosshairbutton.c @@ -8,6 +8,7 @@ CLASS(XonoticCrosshairButton) EXTENDS(RadioButton) ATTRIB(XonoticCrosshairButton, useDownAsChecked, float, 1) ATTRIB(XonoticCrosshairButton, src3, string, string_null) + ATTRIB(XonoticCrosshairButton, src4, string, string_null) ATTRIB(XonoticCrosshairButton, cvarName, string, string_null) ATTRIB(XonoticCrosshairButton, cvarValueFloat, float, 0) @@ -33,6 +34,7 @@ void XonoticCrosshairButton_configureXonoticCrosshairButton(entity me, float the me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0); me.srcMulti = 1; me.src3 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat))); + me.src4 = "/gfx/crosshairdot"; } void XonoticCrosshairButton_setChecked(entity me, float val) { @@ -76,12 +78,14 @@ void XonoticCrosshairButton_draw(entity me) sz = draw_PictureSize(me.src3); sz = globalToBoxSize(sz, draw_scale); - sz = sz * cvar("crosshair_size"); + sz = (2 * '1 1 0' + sz * cvar("crosshair_size")) * 0.1; // (2 * '1 1 0' + ...) * 0.1 here to make visible size changes happen also at bigger sizes if(sz_x > 0.95) sz = sz * (0.95 / sz_x); if(sz_y > 0.95) sz = sz * (0.95 / sz_y); draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src3, sz, rgb, a); + if(cvar("crosshair_dot")) + draw_Picture('0.5 0.5 0' - 0.5 * sz * cvar("crosshair_dot_size"), me.src4, sz * cvar("crosshair_dot_size"), rgb, a * cvar("crosshair_dot_alpha")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c index 754da256a..16ca36ff0 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c @@ -84,7 +84,7 @@ void XonoticPlayerSettingsTab_fill(entity me) } me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Field of View:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Field of view:")); me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 1, "fov")); me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Damage kick:")); @@ -92,11 +92,9 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TR(me); sl = makeXonoticSlider(0.45, 0.75, 0.01, "cl_bobcycle"); me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "View bobbing:")); - me.TD(me, 1, 2, sl); - - me.TR(me); + me.TD(me, 1, 2, sl); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Zoom Factor:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Zoom factor:")); me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor")); me.TR(me); sl = makeXonoticSlider(1, 8, 0.5, "cl_zoomspeed"); @@ -111,39 +109,55 @@ void XonoticPlayerSettingsTab_fill(entity me) e0.allowCut = 1; me.TR(me); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", "Per weapon crosshairs")); - me.TD(me, 1, 1.3, e = makeXonoticCheckBox(1, "crosshair_color_override", "& crosshair colors")); + me.TD(me, 1, 0.75, e = makeXonoticTextLabel(0, "Crosshair:")); + me.TD(me, 1, 1.00, e = makeXonoticCheckBox(0, "crosshair_per_weapon", "Per weapon")); + me.TD(me, 1, 1.25, e = makeXonoticCheckBox(1, "crosshair_color_override", "& Per weapon colors")); setDependent(e, "crosshair_per_weapon", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair:")); + me.TDempty(me, 0.5); for(i = 1; i <= 10; ++i) { me.TDNoMargin(me, 1, 2 / 10, e = makeXonoticCrosshairButton(3, i), '1 1 0'); setDependent(e, "crosshair_per_weapon", 0, 0); } me.TR(me); - me.TDempty(me, 1); + me.TDempty(me, 0.5); for(i = 11; i <= 20; ++i) { me.TDNoMargin(me, 1, 2 / 10, e = makeXonoticCrosshairButton(3, i), '1 1 0'); setDependent(e, "crosshair_per_weapon", 0, 0); } me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair Size:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0.40, 2, 0.05, "crosshair_size")); + me.TDempty(me, 0.2); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair size:")); + me.TD(me, 1, 1.8, e = makeXonoticSlider(0.10, 1.5, 0.05, "crosshair_size")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair Alpha:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_alpha")); + me.TDempty(me, 0.2); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair alpha:")); + me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.1, "crosshair_color_alpha")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair Red:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_red")); + me.TDempty(me, 0.2); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair red:")); + me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_red")); setDependentOR(e, "crosshair_per_weapon", 0, 0, "crosshair_color_override", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair Green:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_green")); + me.TDempty(me, 0.2); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair green:")); + me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_green")); setDependentOR(e, "crosshair_per_weapon", 0, 0, "crosshair_color_override", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair Blue:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_blue")); + me.TDempty(me, 0.2); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair blue:")); + me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.01, "crosshair_color_blue")); setDependentOR(e, "crosshair_per_weapon", 0, 0, "crosshair_color_override", 1, 1); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", "Enable centered dot")); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Size:")); + me.TD(me, 1, 0.9, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size")); + setDependent(e, "crosshair_dot", 1, 1); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 0.9, e = makeXonoticSlider(0.10, 1, 0.1, "crosshair_dot_alpha")); + setDependent(e, "crosshair_dot", 1, 1); me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Hit test:")); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "crosshair_hittest", "0", "None")); @@ -157,13 +171,13 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TDempty(me, 0.5); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.2, e = makeXonoticButton("HUD Setup", '0 0 0')); + me.TD(me, 1, 2.2, e = makeXonoticButton("Enter HUD editor", '0 0 0')); e.onClick = HUDSetup_Join_Click; e.onClickEntity = me; me.TDempty(me, 0.5); me.TR(me); #ifdef ALLOW_FORCEMODELS - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Force Models:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Force models:")); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(2, string_null, string_null, "None")); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(2, "cl_forceplayermodelsfromxonotic", string_null, "Custom")); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(2, "cl_forceplayermodels", string_null, "All")); -- 2.39.2