]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/scoreboard.qc
Merge branch 'terencehill/scoreboard_ui' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / scoreboard.qc
index 1d9268a03734508c71ec718fb57f63fb5cbb2a28..83700a7e5efe52ece3d5b7cedf510172e0972ffc 100644 (file)
@@ -80,7 +80,6 @@ float autocvar_hud_panel_scoreboard_table_highlight_alpha = 0.2;
 float autocvar_hud_panel_scoreboard_table_highlight_alpha_self = 0.4;
 float autocvar_hud_panel_scoreboard_table_highlight_alpha_eliminated = 0.6;
 float autocvar_hud_panel_scoreboard_bg_teams_color_team = 0;
-float autocvar_hud_panel_scoreboard_namesize = 15;
 float autocvar_hud_panel_scoreboard_team_size_position = 0;
 float autocvar_hud_panel_scoreboard_spectators_position = 1;
 
@@ -166,9 +165,16 @@ string Label_getInfo(string label, int mode)
        return label;
 }
 
+bool scoreboard_ui_disabling;
 void HUD_Scoreboard_UI_Disable()
 {
+       scoreboard_ui_disabling = true;
        scoreboard_showscores = false;
+}
+
+void HUD_Scoreboard_UI_Disable_Instantly()
+{
+       scoreboard_ui_disabling = false;
        scoreboard_ui_enabled = 0;
        scoreboard_selected_panel = 0;
        scoreboard_selected_player = NULL;
@@ -180,7 +186,7 @@ void Scoreboard_UI_Enable(int mode)
 {
        if (mode == 1)
        {
-               if (scoreboard_ui_enabled == 2 || !teamplay)
+               if (scoreboard_ui_enabled == 2 || !teamplay || intermission)
                        return;
 
                // release player's pressed keys as they aren't released elsewhere
@@ -210,7 +216,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda
 {
        string s;
 
-       if(!scoreboard_ui_enabled)
+       if(!scoreboard_ui_enabled || scoreboard_ui_disabling)
                return false;
 
        if(bInputType == 3)
@@ -428,12 +434,7 @@ float HUD_Scoreboard_InputEvent(float bInputType, float nPrimary, float nSeconda
                                localcmd(sprintf("cmd selectteam %s; cmd join\n", team_name));
                                HUD_Scoreboard_UI_Disable();
                        }
-                       else if (!scoreboard_selected_player || (hudShiftState & S_SHIFT))
-                       {
-                               localcmd("join\n");
-                               HUD_Scoreboard_UI_Disable();
-                       }
-                       else
+                       else if (scoreboard_selected_player)
                                localcmd(sprintf("spectate %d\n", scoreboard_selected_player.sv_entnum + 1));
                }
        }
@@ -1553,7 +1554,20 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 bool Scoreboard_WouldDraw()
 {
        if (scoreboard_ui_enabled)
+       {
+               if (scoreboard_ui_disabling)
+               {
+                       if (scoreboard_fade_alpha == 0)
+                               HUD_Scoreboard_UI_Disable_Instantly();
+                       return false;
+               }
+               if (intermission && scoreboard_ui_enabled == 2)
+               {
+                       HUD_Scoreboard_UI_Disable_Instantly();
+                       return false;
+               }
                return true;
+       }
        else if (MUTATOR_CALLHOOK(DrawScoreboard))
                return false;
        else if (QuickMenu_IsOpened())
@@ -2022,7 +2036,7 @@ vector Scoreboard_Rankings_Draw(vector pos, string ranktitle, entity pl, vector
 
                str = count_ordinal(i+1);
                drawstring(pos + text_ofs, str, hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
-               drawstring(pos + text_ofs + eX * ranksize, TIME_ENCODED_TOSTRING(t), hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
+               drawstring(pos + text_ofs + eX * ranksize, TIME_ENCODED_TOSTRING(t, true), hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
                str = ColorTranslateRGB(grecordholder[i]);
                if(cut)
                        str = textShortenToWidth(str, namesize, hud_fontsize, stringwidth_colors);
@@ -2505,8 +2519,7 @@ void Scoreboard_Draw()
 
        // print information about respawn status
        float respawn_time = STAT(RESPAWN_TIME);
-       if(!intermission)
-       if(respawn_time)
+       if(!intermission && respawn_time)
        {
                if(respawn_time < 0)
                {