X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fpanel%2Ftimer.qc;h=269d12b5edc800f9f2d50df6e7e70faad317bbb2;hb=d0b3cee6dc12e62e7db192356fe17614ad1e650d;hp=68e7312c7a5ba881ee1f45a000e91f64219ea7fb;hpb=54c73db251372d28956d780656c4a0a78a2e54ca;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/panel/timer.qc b/qcsrc/client/hud/panel/timer.qc index 68e7312c7..269d12b5e 100644 --- a/qcsrc/client/hud/panel/timer.qc +++ b/qcsrc/client/hud/panel/timer.qc @@ -1,4 +1,5 @@ #include "timer.qh" +#include "scoreboard.qh" #include #include @@ -61,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; @@ -72,16 +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); - if(timelimit == 0) - timelimit = STAT(TIMELIMIT) * 60; - } - 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); @@ -92,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; @@ -119,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); } } @@ -129,7 +121,18 @@ void HUD_Timer() int overtimes = STAT(OVERTIMES); if(warmup_stage || autocvar__hud_configure) - subtext = _("Warmup"); + { + if (STAT(WARMUP_TIMELIMIT) > 0) + subtext = _("Warmup"); + else + { + 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"); else if (overtimes == -1) @@ -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);