Fix ESC key not closing team selection if automatically opened by the server, scorebo...
authorterencehill <piuntn@gmail.com>
Tue, 7 Jun 2022 16:23:58 +0000 (18:23 +0200)
committerterencehill <piuntn@gmail.com>
Tue, 7 Jun 2022 16:23:58 +0000 (18:23 +0200)
qcsrc/client/hud/panel/quickmenu.qc
qcsrc/client/hud/panel/radar.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/hud/panel/scoreboard.qh
qcsrc/client/main.qc
qcsrc/client/main.qh

index 01a4a2cdb06ea8462f80aff21c09a020eb836ed4..f274411ae5bd6aed5d490d45f2d2ec66dc2e0e05 100644 (file)
@@ -193,12 +193,7 @@ bool QuickMenu_Open(string mode, string submenu, string file)
        mouseClicked = 0;
        hudShiftState = 0;
 
        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;
 
        QuickMenu_TimeOut_Set();
        return true;
index cf395e7634228b27075fe5ef74af03deec4548e5..a5b17d75eec767e5004252d53dc5818b293d1f93 100644 (file)
@@ -40,12 +40,7 @@ void HUD_Radar_Show_Maximized(bool doshow, bool clickable)
                {
                        hud_panel_radar_mouse = 1;
 
                {
                        hud_panel_radar_mouse = 1;
 
-                       // 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();
                }
        }
        else if ( hud_panel_radar_mouse )
                }
        }
        else if ( hud_panel_radar_mouse )
index a2921ac9809b8e1134332d08c419da27c8d1ef44..dfab7d61b7c3fae437bd9677357a26be1ba648aa 100644 (file)
@@ -173,7 +173,6 @@ void HUD_Scoreboard_UI_Disable()
        scoreboard_selected_panel = 0;
        scoreboard_selected_player = NULL;
        scoreboard_selected_team = NULL;
        scoreboard_selected_panel = 0;
        scoreboard_selected_player = NULL;
        scoreboard_selected_team = NULL;
-       scoreboard_ui_disabled_time = time;
 }
 
 // mode: 0 normal, 1 team selection
 }
 
 // mode: 0 normal, 1 team selection
@@ -183,14 +182,11 @@ void Scoreboard_UI_Enable(int mode)
        {
                if (scoreboard_ui_enabled == 2 || !teamplay)
                        return;
        {
                if (scoreboard_ui_enabled == 2 || !teamplay)
                        return;
-               // Do not allow reopening the team selection for some time after it has been closed.
-               // It works around a bug caused by the server sending scoreboard_team_selection every frame
-               // until client selects a team and joins: scoreboard_team_selection gets executed even
-               // after client already joined
-               // For the record, with the menu dialog this workaround is not needed because it takes
-               // some time to fade away
-               if (time < scoreboard_ui_disabled_time + 0.5)
-                       return;
+
+               // release player's pressed keys as they aren't released elsewhere
+               // in particular jump needs to be released as it may open the team selection
+               // (when server detects jump has been pressed it sends the command to open the team selection)
+               Release_Common_Keys();
                scoreboard_ui_enabled = 2;
                scoreboard_selected_panel = SB_PANEL_SCOREBOARD;
        }
                scoreboard_ui_enabled = 2;
                scoreboard_selected_panel = SB_PANEL_SCOREBOARD;
        }
index 77f324554969102d0285dcf724807f36c77496b3..76a22d533d8a645cdbd9c88b05291206dad3356d 100644 (file)
@@ -26,7 +26,6 @@ bool Scoreboard_WouldDraw();
 void Scoreboard_UI_Enable(int mode);
 
 int scoreboard_ui_enabled;
 void Scoreboard_UI_Enable(int mode);
 
 int scoreboard_ui_enabled;
-float scoreboard_ui_disabled_time;
 bool autocvar__scoreboard_team_selection;
 float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSecondary);
 
 bool autocvar__scoreboard_team_selection;
 float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSecondary);
 
index 0e5b4b5e10c95484450aff83d56ccdf9976452dd..aa5e50038c7b50daab0b0fabf67df42a215b1406 100644 (file)
@@ -443,6 +443,15 @@ void PostInit()
        postinit = true;
 }
 
        postinit = true;
 }
 
+void Release_Common_Keys()
+{
+       localcmd("-fire\n");
+       localcmd("-fire2\n");
+       localcmd("-use\n");
+       localcmd("-hook\n");
+       localcmd("-jump\n");
+}
+
 // CSQC_InputEvent : Used to perform actions based on any key pressed, key released and mouse on the client.
 // Return value should be 1 if CSQC handled the input, otherwise return 0 to have the input passed to the engine.
 // All keys are in ascii.
 // CSQC_InputEvent : Used to perform actions based on any key pressed, key released and mouse on the client.
 // Return value should be 1 if CSQC handled the input, otherwise return 0 to have the input passed to the engine.
 // All keys are in ascii.
index 7be53f6dee116b558d6a14a931c7aee72bf5d991..4d1271c4195b519ae11c6e952ac0bcd12f39da93 100644 (file)
@@ -115,6 +115,8 @@ string _getcommandkey(string text, string command, bool forcename);
 #define getcommandkey(cmd_name, command) _getcommandkey(cmd_name, command, false)
 #define getcommandkey_forcename(cmd_name, command) _getcommandkey(cmd_name, command, true)
 
 #define getcommandkey(cmd_name, command) _getcommandkey(cmd_name, command, false)
 #define getcommandkey_forcename(cmd_name, command) _getcommandkey(cmd_name, command, true)
 
+void Release_Common_Keys();
+
 string vote_called_vote;
 bool ready_waiting;
 bool ready_waiting_for_me;
 string vote_called_vote;
 bool ready_waiting;
 bool ready_waiting_for_me;