]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/crosshairpicker.qc
Merge branch 'master' into Mirio/balance
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / crosshairpicker.qc
1 #include "crosshairpicker.qh"
2
3 string crosshairpicker_cellToCrosshair(entity me, vector cell)
4 {
5         if(cell.x < 0 || cell.x >= me.columns || cell.y < 0 || cell.y >= me.rows)
6                 return "";
7         return ftos(31 + cell.y * me.columns + cell.x);
8 }
9
10 vector crosshairpicker_crosshairToCell(entity me, string crosshair_str)
11 {
12         float crosshair = stof(crosshair_str) - 31;
13         if(crosshair - floor(crosshair) > 0)
14                 return '-1 -1 0';
15         return mod(crosshair, me.columns) * eX + floor(crosshair / me.columns) * eY;
16 }
17
18 entity makeXonoticCrosshairPicker()
19 {
20         entity me;
21         me = NEW(XonoticCrosshairPicker);
22         me.configureXonoticCrosshairPicker(me);
23         return me;
24 }
25
26 void XonoticCrosshairPicker_configureXonoticCrosshairPicker(entity me)
27 {
28         me.configureXonoticPicker(me);
29         SUPER(XonoticCrosshairPicker).cellSelect(me, crosshairpicker_crosshairToCell(me, cvar_string("crosshair")));
30 }
31
32 void XonoticCrosshairPicker_cellSelect(entity me, vector cell)
33 {
34         cvar_set("crosshair", crosshairpicker_cellToCrosshair(me, me.focusedCell));
35         SUPER(XonoticCrosshairPicker).cellSelect(me, me.focusedCell);
36 }
37
38 bool XonoticCrosshairPicker_cellIsValid(entity me, vector cell)
39 {
40         if(crosshairpicker_cellToCrosshair(me, cell) == "")
41                 return false;
42         return true;
43 }
44
45 void XonoticCrosshairPicker_cellDraw(entity me, vector cell, vector cellPos)
46 {
47         string s = strcat("/gfx/crosshair", crosshairpicker_cellToCrosshair(me, cell));
48         vector sz = draw_PictureSize(s);
49         sz = globalToBoxSize(sz, me.size);
50
51         float ar = sz.x / sz.y;
52         sz.x = me.realCellSize.x;
53         sz.y = sz.x / ar;
54         sz *= 0.95;
55
56         vector crosshairPos = cellPos + 0.5 * me.realCellSize;
57         draw_Picture(crosshairPos - 0.5 * sz, s, sz, SKINCOLOR_CROSSHAIRPICKER_CROSSHAIR, SKINALPHA_CROSSHAIRPICKER_CROSSHAIR);
58
59         if(cvar("crosshair_dot"))
60                 draw_Picture(crosshairPos - 0.5 * sz * cvar("crosshair_dot_size"), "/gfx/crosshairdot", sz * cvar("crosshair_dot_size"), SKINCOLOR_CROSSHAIRPICKER_CROSSHAIR, SKINALPHA_CROSSHAIRPICKER_CROSSHAIR);
61 }