X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fcrosshairpicker.qc;h=0ac826a44064cc4752b4c828a2b9c6c119e7a6e0;hp=f79cea51b4ae73c11cf42b603d009a40338c10e9;hb=4c7352309564fc88b28216e0aa9ac509ce4d3dc6;hpb=9d1a94f33423600b1538bfc69e3aa1a39d838c32 diff --git a/qcsrc/menu/xonotic/crosshairpicker.qc b/qcsrc/menu/xonotic/crosshairpicker.qc index f79cea51b..0ac826a44 100644 --- a/qcsrc/menu/xonotic/crosshairpicker.qc +++ b/qcsrc/menu/xonotic/crosshairpicker.qc @@ -1,13 +1,15 @@ -#ifdef INTERFACE -CLASS(XonoticCrosshairPicker) EXTENDS(XonoticPicker) - METHOD(XonoticCrosshairPicker, configureXonoticCrosshairPicker, void(entity)) +#ifndef CROSSHAIRPICKER_H +#define CROSSHAIRPICKER_H +#include "picker.qc" +CLASS(XonoticCrosshairPicker, XonoticPicker) + METHOD(XonoticCrosshairPicker, configureXonoticCrosshairPicker, void(entity)); ATTRIB(XonoticCrosshairPicker, rows, float, 3) ATTRIB(XonoticCrosshairPicker, columns, float, 12) - METHOD(XonoticCrosshairPicker, cellSelect, void(entity)) - METHOD(XonoticCrosshairPicker, cellIsValid, bool(entity, vector)) - METHOD(XonoticCrosshairPicker, cellDraw, void(entity, vector, vector, float)) + METHOD(XonoticCrosshairPicker, cellSelect, void(entity, vector)); + METHOD(XonoticCrosshairPicker, cellIsValid, bool(entity, vector)); + METHOD(XonoticCrosshairPicker, cellDraw, void(entity, vector, vector)); ENDCLASS(XonoticCrosshairPicker) entity makeXonoticCrosshairPicker(); #endif @@ -16,18 +18,23 @@ entity makeXonoticCrosshairPicker(); string crosshairpicker_cellToCrosshair(entity me, vector cell) { - float crosshair = 31 + cell.y * me.columns + cell.x; - - if (crosshair >= 31 && crosshair < 31 + me.columns * me.rows) - return ftos(crosshair); - else + if(cell.x < 0 || cell.x >= me.columns || cell.y < 0 || cell.y >= me.rows) return ""; + return ftos(31 + cell.y * me.columns + cell.x); +} + +vector crosshairpicker_crosshairToCell(entity me, string crosshair_str) +{ + float crosshair = stof(crosshair_str) - 31; + if(crosshair - floor(crosshair) > 0) + return '-1 -1 0'; + return mod(crosshair, me.columns) * eX + floor(crosshair / me.columns) * eY; } entity makeXonoticCrosshairPicker() { entity me; - me = spawnXonoticCrosshairPicker(); + me = NEW(XonoticCrosshairPicker); me.configureXonoticCrosshairPicker(me); return me; } @@ -35,11 +42,13 @@ entity makeXonoticCrosshairPicker() void XonoticCrosshairPicker_configureXonoticCrosshairPicker(entity me) { me.configureXonoticPicker(me); + SUPER(XonoticCrosshairPicker).cellSelect(me, crosshairpicker_crosshairToCell(me, cvar_string("crosshair"))); } -void XonoticCrosshairPicker_cellSelect(entity me) +void XonoticCrosshairPicker_cellSelect(entity me, vector cell) { cvar_set("crosshair", crosshairpicker_cellToCrosshair(me, me.focusedCell)); + SUPER(XonoticCrosshairPicker).cellSelect(me, me.focusedCell); } bool XonoticCrosshairPicker_cellIsValid(entity me, vector cell) @@ -49,9 +58,9 @@ bool XonoticCrosshairPicker_cellIsValid(entity me, vector cell) return true; } -void XonoticCrosshairPicker_cellDraw(entity me, vector cell, vector cellPos, float highlightedTime) +void XonoticCrosshairPicker_cellDraw(entity me, vector cell, vector cellPos) { - vector sz, rgb; + vector sz; string cross = strcat("/gfx/crosshair", crosshairpicker_cellToCrosshair(me, cell)); sz = draw_PictureSize(cross); sz = globalToBoxSize(sz, me.size); @@ -61,12 +70,10 @@ void XonoticCrosshairPicker_cellDraw(entity me, vector cell, vector cellPos, flo sz.y = sz.x / ar; sz = sz * 0.95; - rgb = '1 1 1'; - vector crosshairPos = cellPos + 0.5 * me.realCellSize; - draw_Picture(crosshairPos - 0.5 * sz, cross, sz, rgb, me.alpha); + draw_Picture(crosshairPos - 0.5 * sz, cross, sz, SKINCOLOR_CROSSHAIRPICKER_CROSSHAIR, SKINALPHA_CROSSHAIRPICKER_CROSSHAIR); if(cvar("crosshair_dot")) - draw_Picture(crosshairPos - 0.5 * sz * cvar("crosshair_dot_size"), "/gfx/crosshairdot", sz * cvar("crosshair_dot_size"), rgb, me.alpha); + draw_Picture(crosshairPos - 0.5 * sz * cvar("crosshair_dot_size"), "/gfx/crosshairdot", sz * cvar("crosshair_dot_size"), SKINCOLOR_CROSSHAIRPICKER_CROSSHAIR, SKINALPHA_CROSSHAIRPICKER_CROSSHAIR); } #endif