1 #include "crosshairpicker.qh"
3 string crosshairpicker_cellToCrosshair(entity me, vector cell)
5 if(cell.x < 0 || cell.x >= me.columns || cell.y < 0 || cell.y >= me.rows)
7 return ftos(31 + cell.y * me.columns + cell.x);
10 vector crosshairpicker_crosshairToCell(entity me, string crosshair_str)
12 float crosshair = stof(crosshair_str) - 31;
13 if(crosshair - floor(crosshair) > 0)
15 return mod(crosshair, me.columns) * eX + floor(crosshair / me.columns) * eY;
18 entity makeXonoticCrosshairPicker()
21 me = NEW(XonoticCrosshairPicker);
22 me.configureXonoticCrosshairPicker(me);
26 void XonoticCrosshairPicker_configureXonoticCrosshairPicker(entity me)
28 me.configureXonoticPicker(me);
29 SUPER(XonoticCrosshairPicker).cellSelect(me, crosshairpicker_crosshairToCell(me, cvar_string("crosshair")));
32 void XonoticCrosshairPicker_cellSelect(entity me, vector cell)
34 cvar_set("crosshair", crosshairpicker_cellToCrosshair(me, me.focusedCell));
35 SUPER(XonoticCrosshairPicker).cellSelect(me, me.focusedCell);
38 bool XonoticCrosshairPicker_cellIsValid(entity me, vector cell)
40 if(crosshairpicker_cellToCrosshair(me, cell) == "")
45 void XonoticCrosshairPicker_cellDraw(entity me, vector cell, vector cellPos)
47 string s = strcat("/gfx/crosshair", crosshairpicker_cellToCrosshair(me, cell));
48 vector sz = draw_PictureSize(s);
49 sz = globalToBoxSize(sz, me.size);
51 float ar = sz.x / sz.y;
52 sz.x = me.realCellSize.x;
56 vector crosshairPos = cellPos + 0.5 * me.realCellSize;
57 draw_Picture(crosshairPos - 0.5 * sz, s, sz, SKINCOLOR_CROSSHAIRPICKER_CROSSHAIR, SKINALPHA_CROSSHAIRPICKER_CROSSHAIR);
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);