X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Fscoreboard.qc;h=531e0c35618f04db70303e5bef22dad11326e593;hp=d34bdc35e95f25ade65caf58bab0a2c4d3b00b3a;hb=f7642e19315e545d020cad7a19f8dde9cfb8de58;hpb=6b816d6de918defac7e7ae70a538cc3116cfdb71 diff --git a/qcsrc/client/hud/panel/scoreboard.qc b/qcsrc/client/hud/panel/scoreboard.qc index d34bdc35e9..531e0c3561 100644 --- a/qcsrc/client/hud/panel/scoreboard.qc +++ b/qcsrc/client/hud/panel/scoreboard.qc @@ -173,7 +173,6 @@ void HUD_Scoreboard_UI_Disable() scoreboard_selected_panel = 0; scoreboard_selected_player = NULL; scoreboard_selected_team = NULL; - scoreboard_ui_disabled_time = time; } // mode: 0 normal, 1 team selection @@ -183,14 +182,11 @@ void Scoreboard_UI_Enable(int mode) { 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; } @@ -281,8 +277,8 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda ++scoreboard_selected_panel; if (scoreboard_selected_panel == SB_PANEL_RANKINGS && !rankings_cnt) ++scoreboard_selected_panel; - if (scoreboard_selected_panel >= SB_PANEL_MAX) - scoreboard_selected_panel = 1; + if (scoreboard_selected_panel > SB_PANEL_MAX) + scoreboard_selected_panel = SB_PANEL_FIRST; scoreboard_selected_panel_time = time; } @@ -412,7 +408,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda team_name = "auto"; else team_name = Static_Team_ColorName(scoreboard_selected_team.team); - localcmd(sprintf("cmd selectteam %s; cmd join", team_name)); + localcmd(sprintf("cmd selectteam %s; cmd join\n", team_name)); HUD_Scoreboard_UI_Disable(); } else if (!scoreboard_selected_player || (hudShiftState & S_SHIFT)) @@ -421,7 +417,34 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda HUD_Scoreboard_UI_Disable(); } else - localcmd(sprintf("spectate %d", scoreboard_selected_player.sv_entnum + 1)); + localcmd(sprintf("spectate %d\n", scoreboard_selected_player.sv_entnum + 1)); + } + } + else if(nPrimary == 'c' && (hudShiftState & S_CTRL)) + { + if (!key_pressed) + return true; + if (scoreboard_ui_enabled == 1 && scoreboard_selected_panel == SB_PANEL_SCOREBOARD) + { + switch (scoreboard_selected_columns_layout) + { + case 0: + if (autocvar_scoreboard_columns != "" && autocvar_scoreboard_columns != "all" && autocvar_scoreboard_columns != "default") + { + localcmd(sprintf("scoreboard_columns_set\n")); // sets the layout saved in scoreboard_columns + scoreboard_selected_columns_layout = 1; + break; + } + // fallthrough + case 1: + localcmd(sprintf("scoreboard_columns_set default\n")); + scoreboard_selected_columns_layout = 2; + break; + case 2: + localcmd(sprintf("scoreboard_columns_set all\n")); + scoreboard_selected_columns_layout = 0; + break; + } } } else if(nPrimary == 't' && (hudShiftState & S_CTRL)) @@ -432,7 +455,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda { if (scoreboard_selected_player) { - localcmd(sprintf("commandmode tell \"%s^7\"", entcs_GetName(scoreboard_selected_player.sv_entnum))); + localcmd(sprintf("commandmode tell \"%s^7\"\n", entcs_GetName(scoreboard_selected_player.sv_entnum))); HUD_Scoreboard_UI_Disable(); } } @@ -444,7 +467,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda if (scoreboard_selected_panel == SB_PANEL_SCOREBOARD) { if (scoreboard_selected_player) - localcmd(sprintf("vcall kick \"%s^7\"", entcs_GetName(scoreboard_selected_player.sv_entnum))); + localcmd(sprintf("vcall kick \"%s^7\"\n", entcs_GetName(scoreboard_selected_player.sv_entnum))); } } else if(hit_con_bind || nPrimary == K_PAUSE) @@ -2207,9 +2230,9 @@ void Scoreboard_Draw() if (scoreboard_ui_enabled == 2) { if (scoreboard_selected_team) - str = sprintf(_("^7Press ^3%s ^7to join the selected team"), getcommandkey(_("jump"), "+jump")); + str = sprintf(_("^7Press ^3%s^7 to join the selected team"), getcommandkey(_("jump"), "+jump")); else - str = sprintf(_("^7Press ^3%s ^7 to auto-select a team and join"), getcommandkey(_("jump"), "+jump")); + str = sprintf(_("^7Press ^3%s^7 to auto-select a team and join"), getcommandkey(_("jump"), "+jump")); drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_detail_fontsize)), str, sb_gameinfo_detail_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); pos.y += sb_gameinfo_detail_fontsize.y + hud_fontsize.y * 0.3;