]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/crosshairpreview.qc
90694ca8c3a607ade663a6afe1906cab796751ca
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / crosshairpreview.qc
1 #ifndef CROSSHAIRPREVIEW_H
2 #define CROSSHAIRPREVIEW_H
3 #include "../item.qc"
4 CLASS(XonoticCrosshairPreview, Item)
5         METHOD(XonoticCrosshairPreview, configureXonoticCrosshairPreview, void(entity));
6         METHOD(XonoticCrosshairPreview, draw, void(entity));
7         ATTRIB(XonoticCrosshairPreview, src, string, string_null)
8         ATTRIB(XonoticCrosshairPreview, src2, string, string_null)
9         ATTRIB(XonoticCrosshairPreview, disabled, float, 0)
10         ATTRIB(XonoticCrosshairPreview, disabledAlpha, float, SKINALPHA_DISABLED)
11 ENDCLASS(XonoticCrosshairPreview)
12 entity makeXonoticCrosshairPreview();
13 #endif
14
15 #ifdef IMPLEMENTATION
16 entity makeXonoticCrosshairPreview()
17 {
18         entity me;
19         me = NEW(XonoticCrosshairPreview);
20         me.configureXonoticCrosshairPreview(me);
21         return me;
22 }
23
24 void XonoticCrosshairPreview_configureXonoticCrosshairPreview(entity me)
25 {
26         me.src = strzone(strcat("/gfx/crosshair", cvar_string("crosshair")));
27         me.src2 = "/gfx/crosshairdot";
28 }
29
30 void XonoticCrosshairPreview_draw(entity me)
31 {
32         float save;
33         save = draw_alpha;
34         if(me.disabled)
35                 draw_alpha *= me.disabledAlpha;
36
37         vector sz, rgb;
38         float a;
39         rgb = stov(cvar_string("crosshair_color"));
40         a = cvar("crosshair_alpha");
41         if(me.src)
42                 strunzone(me.src);
43         me.src = strzone(strcat("/gfx/crosshair", cvar_string("crosshair")));
44
45         sz = draw_PictureSize(me.src);
46         sz = globalToBoxSize(sz, me.size);
47         sz = sz * cvar("crosshair_size");
48
49         draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src, sz, rgb, a);
50         if(cvar("crosshair_dot"))
51         {
52                 if(cvar("crosshair_dot_color_custom") && (cvar_string("crosshair_dot_color") != "0"))
53                         rgb = stov(cvar_string("crosshair_dot_color"));
54
55                 draw_Picture('0.5 0.5 0' - 0.5 * sz * cvar("crosshair_dot_size"), me.src2, sz * cvar("crosshair_dot_size"), rgb, a * cvar("crosshair_dot_alpha"));
56         }
57
58         draw_alpha = save;
59
60         SUPER(XonoticCrosshairPreview).draw(me);
61 }
62 #endif