X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Fquickmenu.qc;h=e476e12f05007579d1285b01d0b08b7d59724f21;hb=2131fc86c8a55826aa6a424f3ffe6b2d09f28b7a;hp=e9e7fe831e0e92e1f68078cc6774b50e9f6d89f6;hpb=b4cb640981713753c3ee8d8ff9650b318265c3e0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/panel/quickmenu.qc b/qcsrc/client/hud/panel/quickmenu.qc index e9e7fe831..e476e12f0 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)); @@ -189,8 +190,11 @@ bool QuickMenu_Open(string mode, string submenu, string file) else QuickMenu_Page_Load("", 0); + mouseClicked = 0; hudShiftState = 0; + Release_Common_Keys(); + QuickMenu_TimeOut_Set(); return true; } @@ -441,58 +445,47 @@ 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); - // allow console bind to work - string con_keys = findkeysforcommand("toggleconsole", 0); - int keys = tokenize(con_keys); // findkeysforcommand returns data for this - bool hit_con_bind = false; - int i; - for (i = 0; i < keys; ++i) - { - if(nPrimary == stof(argv(i))) - hit_con_bind = true; - } - + 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_ESCAPE) + if(nPrimary == K_ESCAPE && key_pressed) { - if (!key_pressed) - return true; QuickMenu_Close(); } - else if(nPrimary >= '0' && nPrimary <= '9') + else if(nPrimary >= '0' && nPrimary <= '9' && key_pressed) { - if (!key_pressed) - return true; QuickMenu_Page_ActiveEntry(stof(chr2str(nPrimary))); } - if(nPrimary == K_MOUSE1) - { - if(key_pressed) - mouseClicked |= S_MOUSE1; - else - mouseClicked -= (mouseClicked & S_MOUSE1); - } - else if(nPrimary == K_MOUSE2) + else if (hudShiftState_prev == hudShiftState && mouseClicked_prev == mouseClicked) { - if(key_pressed) - mouseClicked |= S_MOUSE2; - else - mouseClicked -= (mouseClicked & S_MOUSE2); - } - else if(hit_con_bind) + // allow console bind to work + string con_keys = findkeysforcommand("toggleconsole", 0); + int keys = tokenize(con_keys); // findkeysforcommand returns data for this + for (int i = 0; i < keys; ++i) + { + if(nPrimary == stof(argv(i))) + return false; // hit console bind + } + if (key_pressed) + QuickMenu_Close(); return false; + } return true; } @@ -769,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 @@ -777,7 +771,7 @@ void HUD_Quickmenu_PlayerListEntries(string cmd, int teamplayers, bool without_m continue; if(without_me && pl.sv_entnum == player_localnum) continue; - QUICKMENU_ENTRY(entcs_GetName(pl.sv_entnum), sprintf(cmd, entcs_GetName(pl.sv_entnum))) + QUICKMENU_ENTRY(strcat("^7", entcs_GetName(pl.sv_entnum)), sprintf(cmd, entcs_GetName(pl.sv_entnum))) } return; @@ -874,6 +868,14 @@ void QuickMenu_Default(string target_submenu) QUICKMENU_ENTRY(CTX(_("QMCMD^Shuffle teams")), "vcall shuffleteams") QUICKMENU_SMENU(CTX(_("QMCMD^Call a vote")), "Call a vote") + if (autocvar__hud_panel_quickmenu_file_from_server != "") + { + string entry_name = _("Server's custom quickmenu"); + if (autocvar__hud_panel_quickmenu_file_from_server == "wpeditor.txt") + entry_name = _("Waypoint editor quickmenu"); + QUICKMENU_ENTRY(entry_name, "quickmenu; wait; quickmenu \"\" \"\" $_hud_panel_quickmenu_file_from_server") + } + if(spectatee_status != 0) { QUICKMENU_SMENU_PL(CTX(_("QMCMD^Spectate a player")), "Spectate a player", "spectate \"%s^7\"", 0, 1)