X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fmapvoting.qc;fp=qcsrc%2Fclient%2Fmapvoting.qc;h=2a6f39f8a5ff50dcbe63c7fdc628328bcc1eb449;hp=40d8e0d0727cba6d900ad907010e2116c269e412;hb=f19c0bc1ff196642e503daecced297b72ea3e9c3;hpb=5ff9f94197c8c90fd85199bc1bf8b8d2ef406541 diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 40d8e0d072..2a6f39f8a5 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -339,7 +339,6 @@ float MapVote_Selection(vector topleft, vector cellsize, float rows, float colum return mv_mouse_selection; } -vector prev_mousepos; // draws map vote or gametype vote void MapVote_Draw() { @@ -357,15 +356,6 @@ void MapVote_Draw() HUD_Panel_LoadCvars(); - if (!autocvar_hud_cursormode) - { - if (mousepos.x != prev_mousepos.x || mousepos.y != prev_mousepos.y) - { - mv_selection_keyboard = 0; - prev_mousepos = mousepos; - } - } - center = (vid_conwidth - 1)/2; xmin = vid_conwidth * 0.08; xmax = vid_conwidth - xmin; @@ -819,13 +809,22 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) return true; } - if (bInputType == 0) + if (bInputType == 2) + { + mv_selection_keyboard = 0; + return false; + } + + // at this point bInputType can only be 0 or 1 (key pressed or released) + bool key_pressed = (bInputType == 0); + + if (key_pressed) { if (nPrimary == K_ALT) hudShiftState |= S_ALT; if (nPrimary == K_CTRL) hudShiftState |= S_CTRL; if (nPrimary == K_SHIFT) hudShiftState |= S_SHIFT; } - else if (bInputType == 1) + else { if (nPrimary == K_ALT) hudShiftState -= (hudShiftState & S_ALT); if (nPrimary == K_CTRL) hudShiftState -= (hudShiftState & S_CTRL); @@ -835,31 +834,33 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) first_digit = 0; } - if (bInputType != 0) - return false; - int imp = 0; switch(nPrimary) { case K_RIGHTARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveRight(mv_selection); return true; case K_LEFTARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveLeft(mv_selection); return true; case K_DOWNARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveDown(mv_selection); return true; case K_UPARROW: + if (!key_pressed) return true; mv_selection_keyboard = 1; mv_selection = MapVote_MoveUp(mv_selection); return true; case K_KP_ENTER: case K_ENTER: case K_SPACE: + if (!key_pressed) return true; if ( mv_selection_keyboard ) MapVote_SendChoice(mv_selection); return true; @@ -879,6 +880,8 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) { if (!first_digit) { + if (!key_pressed) + return true; first_digit = imp % 10; return true; } @@ -888,14 +891,21 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) if (nPrimary == K_MOUSE1) { + if (!key_pressed) + return true; mv_selection_keyboard = 0; mv_selection = mv_mouse_selection; if (mv_selection >= 0) imp = min(mv_selection + 1, mv_num_maps); } + if (nPrimary == K_MOUSE2) + return true; // do nothing + if (imp) { + if (!key_pressed) + return true; if (imp <= mv_num_maps) localcmd(strcat("\nimpulse ", ftos(imp), "\n")); return true;