X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Ftimer.qc;h=269d12b5edc800f9f2d50df6e7e70faad317bbb2;hb=d0b3cee6dc12e62e7db192356fe17614ad1e650d;hp=00a231b7cf44607d70fd56e338784f2fe3fdbdb5;hpb=d2a588188f8e5c3cdcc716ddc08d521ee26b483f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/panel/timer.qc b/qcsrc/client/hud/panel/timer.qc index 00a231b7c..269d12b5e 100644 --- a/qcsrc/client/hud/panel/timer.qc +++ b/qcsrc/client/hud/panel/timer.qc @@ -62,8 +62,8 @@ void HUD_Timer() mySize -= '2 2 0' * panel_bg_padding; } - string timer; - string subtimer = string_null; + string timer_str = string_null; + string subtimer_str = string_null; string subtext = string_null; float curtime, timelimit, timeleft; vector timer_size, subtext_size, subtimer_size; @@ -73,10 +73,7 @@ void HUD_Timer() // Use real or frozen time and get the time limit curtime = (intermission_time ? intermission_time : time); - if(warmup_stage) - timelimit = STAT(WARMUP_TIMELIMIT); - else - timelimit = STAT(TIMELIMIT) * 60; + timelimit = (warmup_stage ? STAT(WARMUP_TIMELIMIT) : STAT(TIMELIMIT) * 60); // Calculate time left timeleft = HUD_Timer_TimeLeft(curtime, STAT(GAMESTARTTIME), timelimit); @@ -87,16 +84,16 @@ void HUD_Timer() // Timer text if (autocvar_hud_panel_timer_increment || timelimit <= 0) - timer = seconds_tostring(HUD_Timer_TimeElapsed(curtime, STAT(GAMESTARTTIME))); + timer = HUD_Timer_TimeElapsed(curtime, STAT(GAMESTARTTIME)); else - timer = seconds_tostring(timeleft); + timer = timeleft; // Secondary timer for round-based game modes if(STAT(ROUNDSTARTTIME) && autocvar_hud_panel_timer_secondary) { if(STAT(ROUNDSTARTTIME) == -1) { // Round can't start - subtimer = "--:--"; + subtimer_str = "--:--"; subtimer_color = '1 0 0'; } else { float round_curtime, round_timelimit, round_timeleft; @@ -114,9 +111,9 @@ void HUD_Timer() // Subtimer text if (autocvar_hud_panel_timer_increment || round_timelimit <= 0) - subtimer = seconds_tostring(HUD_Timer_TimeElapsed(round_curtime, STAT(ROUNDSTARTTIME))); + subtimer_str = seconds_tostring(HUD_Timer_TimeElapsed(round_curtime, STAT(ROUNDSTARTTIME))); else - subtimer = seconds_tostring(round_timeleft); + subtimer_str = seconds_tostring(round_timeleft); } } @@ -128,7 +125,13 @@ void HUD_Timer() if (STAT(WARMUP_TIMELIMIT) > 0) subtext = _("Warmup"); else - subtext = srv_minplayers ? _("Warmup: too few players") : _("Warmup: no time limit"); + { + Scoreboard_UpdatePlayerTeams(); // ensure numplayers is current + if (srv_minplayers - numplayers > 0) + subtext = _("Warmup: too few players"); + else + subtext = _("Warmup: no time limit"); + } } else if(STAT(TIMEOUT_STATUS) == 2) subtext = _("Timeout"); @@ -142,17 +145,18 @@ void HUD_Timer() subtext_size = vec2(mySize.x, mySize.y / 3); timer_size = vec2(mySize.x, mySize.y - subtext_size.y); subtimer_size = vec2(mySize.x / 3, mySize.y - subtext_size.y); + timer_str = seconds_tostring(timer); panel_size.y -= subtext_size.y; HUD_Panel_DrawBg(); - if(subtimer) { + if(subtimer_str) { float subtimer_padding = subtimer_size.y / 5; timer_size.x -= subtimer_size.x; - drawstring_aspect(pos + eX * timer_size.x + eY * subtimer_padding, (swap ? timer : subtimer), subtimer_size - eY * subtimer_padding * 2, (swap ? timer_color : subtimer_color), panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(pos + eX * timer_size.x + eY * subtimer_padding, (swap ? timer_str : subtimer_str), subtimer_size - eY * subtimer_padding * 2, (swap ? timer_color : subtimer_color), panel_fg_alpha, DRAWFLAG_NORMAL); } - drawstring_aspect(pos, (swap ? subtimer : timer), timer_size, (swap ? subtimer_color : timer_color), panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(pos, (swap ? subtimer_str : timer_str), timer_size, (swap ? subtimer_color : timer_color), panel_fg_alpha, DRAWFLAG_NORMAL); if(subtext) drawstring_aspect(pos + eY * timer_size.y, subtext, subtext_size, '0 1 0', panel_fg_alpha, DRAWFLAG_NORMAL);