X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fcrosshairbutton.c;h=1345517264d73bbfd19e265d663942d133b326cd;hb=78b09b7243662c83f1870fe8a2dc268b0e5d43bd;hp=b290f3d218b1faab5a5ee5de4e8ff7770a827a09;hpb=24c0e211b8a839afe6bb5fc5c603d450a72b9160;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/crosshairbutton.c b/qcsrc/menu/xonotic/crosshairbutton.c index b290f3d21..134551726 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) @@ -32,10 +33,15 @@ void XonoticCrosshairButton_configureXonoticCrosshairButton(entity me, float the me.loadCvars(me); me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0); me.srcMulti = 1; - me.src3 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat))); + if(me.cvarValueFloat == -1) + me.src3 = strzone(strcat("/gfx/crosshair", cvar("crosshair"))); + else + me.src3 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat))); + me.src4 = "/gfx/crosshairdot"; } void XonoticCrosshairButton_setChecked(entity me, float val) { + if(me.cvarValueFloat != -1) // preview shouldn't work as a button if(val != me.checked) { me.checked = val; @@ -63,25 +69,40 @@ void XonoticCrosshairButton_draw(entity me) vector sz, rgb; float a; - rgb = eX * cvar("crosshair_color_red") + eY * cvar("crosshair_color_green") + eZ * cvar("crosshair_color_blue"); - a = cvar("crosshair_color_alpha"); + rgb = stov(cvar_string("crosshair_color")); + a = cvar("crosshair_alpha"); - if(!me.checked && !me.focused) + if(!me.checked && !me.focused && me.cvarValueFloat != -1) { a *= me.disabledAlpha; rgb = '1 1 1'; } + if(me.cvarValueFloat == -1) // update the preview if this is the preview button + { + if(me.src3) + strunzone(me.src3); + me.src3 = strzone(strcat("/gfx/crosshair", cvar_string("crosshair"))); + me.focused = 1; + } + SUPER(XonoticCrosshairButton).draw(me); sz = draw_PictureSize(me.src3); sz = globalToBoxSize(sz, draw_scale); - sz = sz * cvar("crosshair_size"); - if(sz_x > 0.95) - sz = sz * (0.95 / sz_x); - if(sz_y > 0.95) - sz = sz * (0.95 / sz_y); + if(me.cvarValueFloat == -1) + { + sz = (6 * '1 1 0' + sz * cvar("crosshair_size")) * 0.08; // (6 * '1 1 0' + ...) * 0.08 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); + } + else // show the crosshair picker at full size + sz = '0.95 0.95 0'; 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