From: terencehill Date: Sun, 3 May 2015 11:38:12 +0000 (+0200) Subject: Highlight the selected cell in the picker X-Git-Tag: xonotic-v0.8.1~55^2~7 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=24c1f7843893c868d4bd47aa8df2c4a6be231c5d Highlight the selected cell in the picker --- diff --git a/qcsrc/menu/xonotic/charmap.qc b/qcsrc/menu/xonotic/charmap.qc index eb83ff846d..48e72b7bde 100644 --- a/qcsrc/menu/xonotic/charmap.qc +++ b/qcsrc/menu/xonotic/charmap.qc @@ -10,7 +10,7 @@ CLASS(XonoticCharmap) EXTENDS(XonoticPicker) ATTRIB(XonoticCharmap, rows, float, 10) ATTRIB(XonoticCharmap, columns, float, 14) - METHOD(XonoticCharmap, cellSelect, void(entity)) + METHOD(XonoticCharmap, cellSelect, void(entity, vector)) METHOD(XonoticCharmap, cellIsValid, bool(entity, vector)) METHOD(XonoticCharmap, cellDraw, void(entity, vector, vector, float)) METHOD(XonoticCharmap, charOffset, vector) @@ -92,9 +92,9 @@ float XonoticCharmap_keyDown(entity me, float key, float ascii, float shift) return me.inputBox.keyDown(me.inputBox, key, ascii, shift); } -void XonoticCharmap_cellSelect(entity me) +void XonoticCharmap_cellSelect(entity me, vector cell) { - string character = charmap_cellToChar(me, me.focusedCell); + string character = charmap_cellToChar(me, cell); if(character != "") me.inputBox.enterText(me.inputBox, character); } diff --git a/qcsrc/menu/xonotic/crosshairpicker.qc b/qcsrc/menu/xonotic/crosshairpicker.qc index f79cea51b4..168ab9cf8d 100644 --- a/qcsrc/menu/xonotic/crosshairpicker.qc +++ b/qcsrc/menu/xonotic/crosshairpicker.qc @@ -5,7 +5,7 @@ CLASS(XonoticCrosshairPicker) EXTENDS(XonoticPicker) ATTRIB(XonoticCrosshairPicker, rows, float, 3) ATTRIB(XonoticCrosshairPicker, columns, float, 12) - METHOD(XonoticCrosshairPicker, cellSelect, void(entity)) + METHOD(XonoticCrosshairPicker, cellSelect, void(entity, vector)) METHOD(XonoticCrosshairPicker, cellIsValid, bool(entity, vector)) METHOD(XonoticCrosshairPicker, cellDraw, void(entity, vector, vector, float)) ENDCLASS(XonoticCrosshairPicker) @@ -22,6 +22,13 @@ string crosshairpicker_cellToCrosshair(entity me, vector cell) return ftos(crosshair); else return ""; + +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() @@ -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) diff --git a/qcsrc/menu/xonotic/picker.qc b/qcsrc/menu/xonotic/picker.qc index b03ddecd0c..86eb7dc90c 100644 --- a/qcsrc/menu/xonotic/picker.qc +++ b/qcsrc/menu/xonotic/picker.qc @@ -16,10 +16,11 @@ CLASS(XonoticPicker) EXTENDS(Item) ATTRIB(XonoticPicker, columns, float, 2) METHOD(XonoticPicker, moveFocus, void(entity, vector, vector)) - METHOD(XonoticPicker, cellSelect, void(entity)) + METHOD(XonoticPicker, cellSelect, void(entity, vector)) METHOD(XonoticPicker, cellDraw, void(entity, vector, vector, float)) METHOD(XonoticPicker, cellIsValid, bool(entity, vector)) ATTRIB(XonoticPicker, realCellSize, vector, '0 0 0') + ATTRIB(XonoticPicker, selectedCell, vector, '-1 -1 0') ATTRIB(XonoticPicker, focusedCell, vector, '-1 -1 0') ATTRIB(XonoticPicker, focusedCellTime, float, 0) ATTRIB(XonoticPicker, pressedCell, vector, '-1 -1 0') @@ -87,7 +88,7 @@ float XonoticPicker_mouseRelease(entity me, vector coords) me.mouseMove(me, coords); if(me.focusedCell == me.pressedCell) - me.cellSelect(me); + me.cellSelect(me, me.focusedCell); me.pressed = 0; return 1; @@ -126,7 +127,7 @@ float XonoticPicker_keyDown(entity me, float key, float ascii, float shift) case K_KP_ENTER: case K_INS: case K_KP_INS: - me.cellSelect(me); + me.cellSelect(me, me.focusedCell); return 1; } return 0; @@ -142,8 +143,9 @@ void XonoticPicker_moveFocus(entity me, vector initialCell, vector step) me.moveFocus(me, initialCell, step); } -void XonoticPicker_cellSelect(entity me) +void XonoticPicker_cellSelect(entity me, vector cell) { + me.selectedCell = cell; } bool XonoticPicker_cellIsValid(entity me, vector cell) @@ -179,7 +181,9 @@ void XonoticPicker_draw(entity me) cellPos_x = mod(cell.x, me.columns) / me.columns; - if(cell == me.focusedCell && me.focused) + if(cell == me.selectedCell) + draw_Fill(cellPos, me.realCellSize, SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + else if(cell == me.focusedCell && me.focused) { if(!me.pressed || me.focusedCell == me.pressedCell) draw_Fill(cellPos, me.realCellSize, SKINCOLOR_LISTBOX_FOCUSED, getHighlightAlpha(SKINALPHA_LISTBOX_FOCUSED, SKINFADEALPHA_LISTBOX_FOCUSED, me.focusedCellTime));