X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Fquickmenu.qc;h=f274411ae5bd6aed5d490d45f2d2ec66dc2e0e05;hp=3c3a5ba864c5ea2a8e0be619c58337d5b20007ad;hb=1da96e958217f87f41d20c0968d51856a801b538;hpb=f2b27d4b960a11b7c0dd45dc4439edab40bcbfcb diff --git a/qcsrc/client/hud/panel/quickmenu.qc b/qcsrc/client/hud/panel/quickmenu.qc index 3c3a5ba86..f274411ae 100644 --- a/qcsrc/client/hud/panel/quickmenu.qc +++ b/qcsrc/client/hud/panel/quickmenu.qc @@ -70,6 +70,7 @@ void QuickMenu_Page_ClearEntry(int i) bool HUD_QuickMenu_Forbidden() { return (mv_active + || scoreboard_ui_enabled || (hud_configure_prev && hud_configure_prev != -1) || HUD_MinigameMenu_IsOpened() || (QuickMenu_TimeOut && time > QuickMenu_TimeOut)); @@ -192,12 +193,7 @@ bool QuickMenu_Open(string mode, string submenu, string file) mouseClicked = 0; hudShiftState = 0; - // we must unset the player's buttons, as they aren't released elsewhere - localcmd("-fire\n"); - localcmd("-fire2\n"); - localcmd("-use\n"); - localcmd("-hook\n"); - localcmd("-jump\n"); + Release_Common_Keys(); QuickMenu_TimeOut_Set(); return true; @@ -449,34 +445,26 @@ bool QuickMenu_InputEvent(int bInputType, float nPrimary, float nSecondary) // at this point bInputType can only be 0 or 1 (key pressed or released) bool key_pressed = (bInputType == 0); + int hudShiftState_prev = hudShiftState; + int mouseClicked_prev = mouseClicked; if(key_pressed) { if(nPrimary == K_ALT) hudShiftState |= S_ALT; if(nPrimary == K_CTRL) hudShiftState |= S_CTRL; if(nPrimary == K_SHIFT) hudShiftState |= S_SHIFT; + if(nPrimary == K_MOUSE1) mouseClicked |= S_MOUSE1; + if(nPrimary == K_MOUSE2) mouseClicked |= S_MOUSE2; } else { if(nPrimary == K_ALT) hudShiftState -= (hudShiftState & S_ALT); if(nPrimary == K_CTRL) hudShiftState -= (hudShiftState & S_CTRL); if(nPrimary == K_SHIFT) hudShiftState -= (hudShiftState & S_SHIFT); + if(nPrimary == K_MOUSE1) mouseClicked -= (mouseClicked & S_MOUSE1); + if(nPrimary == K_MOUSE2) mouseClicked -= (mouseClicked & S_MOUSE2); } - if(nPrimary == K_MOUSE1) - { - if(key_pressed) - mouseClicked |= S_MOUSE1; - else - mouseClicked -= (mouseClicked & S_MOUSE1); - } - else if(nPrimary == K_MOUSE2) - { - if(key_pressed) - mouseClicked |= S_MOUSE2; - else - mouseClicked -= (mouseClicked & S_MOUSE2); - } - else if(nPrimary == K_ESCAPE && key_pressed) + if(nPrimary == K_ESCAPE && key_pressed) { QuickMenu_Close(); } @@ -484,13 +472,12 @@ bool QuickMenu_InputEvent(int bInputType, float nPrimary, float nSecondary) { QuickMenu_Page_ActiveEntry(stof(chr2str(nPrimary))); } - else + else if (hudShiftState_prev == hudShiftState && mouseClicked_prev == mouseClicked) { // allow console bind to work string con_keys = findkeysforcommand("toggleconsole", 0); int keys = tokenize(con_keys); // findkeysforcommand returns data for this - int i; - for (i = 0; i < keys; ++i) + for (int i = 0; i < keys; ++i) { if(nPrimary == stof(argv(i))) return false; // hit console bind @@ -775,6 +762,7 @@ void HUD_Quickmenu_PlayerListEntries(string cmd, int teamplayers, bool without_m if(teamplayers && !team_count) return; + Scoreboard_UpdatePlayerTeams(); for(pl = players.sort_next; pl; pl = pl.sort_next) { if(teamplayers == 1 && (pl.team != myteam || pl.team == NUM_SPECTATOR)) // only own team players