]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/picker.qc
Merge branch 'master' into terencehill/bot_fixes
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / picker.qc
index 9fe3f7f363cab77c2916aca315a0c6f637f8f720..24e5b2f5cdde2a54a5e6b159b1e56f3ff6acdd2c 100644 (file)
@@ -2,13 +2,13 @@
 #define PICKER_H
 #include "../item.qc"
 CLASS(XonoticPicker, Item)
-       METHOD(XonoticPicker, configureXonoticPicker, void(entity))
-       METHOD(XonoticPicker, mousePress, float(entity, vector))
-       METHOD(XonoticPicker, mouseRelease, float(entity, vector))
-       METHOD(XonoticPicker, mouseMove, float(entity, vector))
-       METHOD(XonoticPicker, mouseDrag, float(entity, vector))
-       METHOD(XonoticPicker, keyDown, float(entity, float, float, float))
-       METHOD(XonoticPicker, draw, void(entity))
+       METHOD(XonoticPicker, configureXonoticPicker, void(entity));
+       METHOD(XonoticPicker, mousePress, float(entity, vector));
+       METHOD(XonoticPicker, mouseRelease, float(entity, vector));
+       METHOD(XonoticPicker, mouseMove, float(entity, vector));
+       METHOD(XonoticPicker, mouseDrag, float(entity, vector));
+       METHOD(XonoticPicker, keyDown, float(entity, float, float, float));
+       METHOD(XonoticPicker, draw, void(entity));
        ATTRIB(XonoticPicker, focusable, float, 1)
        ATTRIB(XonoticPicker, disabled, float, 0)
        ATTRIB(XonoticPicker, alpha, float, 1)
@@ -17,10 +17,10 @@ CLASS(XonoticPicker, Item)
        ATTRIB(XonoticPicker, rows, float, 3)
        ATTRIB(XonoticPicker, columns, float, 2)
 
-       METHOD(XonoticPicker, moveFocus, void(entity, vector, vector))
-       METHOD(XonoticPicker, cellSelect, void(entity, vector))
-       METHOD(XonoticPicker, cellDraw, void(entity, vector, vector))
-       METHOD(XonoticPicker, cellIsValid, bool(entity, vector))
+       METHOD(XonoticPicker, moveFocus, void(entity, vector, vector));
+       METHOD(XonoticPicker, cellSelect, void(entity, vector));
+       METHOD(XonoticPicker, cellDraw, void(entity, vector, vector));
+       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')
@@ -101,10 +101,18 @@ float XonoticPicker_keyDown(entity me, float key, float ascii, float shift)
 {
        switch(key)
        {
+               case K_END:
+               case K_KP_END:
+                       // lower left cell then left arrow to select the last valid cell
+                       me.focusedCell = eY * (me.rows - 1);
                case K_LEFTARROW:
                case K_KP_LEFTARROW:
                        me.moveFocus(me, me.focusedCell, '-1 0 0');
                        return 1;
+               case K_HOME:
+               case K_KP_HOME:
+                       // upper right cell then right arrow to select the first valid cell
+                       me.focusedCell = eX * (me.columns - 1);
                case K_RIGHTARROW:
                case K_KP_RIGHTARROW:
                        me.moveFocus(me, me.focusedCell, '1 0 0');
@@ -117,15 +125,6 @@ float XonoticPicker_keyDown(entity me, float key, float ascii, float shift)
                case K_KP_DOWNARROW:
                        me.moveFocus(me, me.focusedCell, '0 1 0');
                        return 1;
-               case K_HOME:
-               case K_KP_HOME:
-                       me.focusedCell = '0 0 0';
-                       return 1;
-               case K_END:
-               case K_KP_END:
-                       me.focusedCell_x = me.columns - 1;
-                       me.focusedCell_y = me.rows - 1;
-                       return 1;
                case K_ENTER:
                case K_KP_ENTER:
                case K_INS:
@@ -144,6 +143,8 @@ void XonoticPicker_moveFocus(entity me, vector initialCell, vector step)
        if(me.focusedCell != initialCell) // Recursion break
                if(!me.cellIsValid(me, me.focusedCell))
                        me.moveFocus(me, initialCell, step);
+
+       me.focusedCellAlpha = SKINALPHA_LISTBOX_FOCUSED;
 }
 
 void XonoticPicker_cellSelect(entity me, vector cell)