1#include "timer.qh"
2
3// Timer (#5)
4
5void HUD_Timer()
6{
7	if(!autocvar__hud_configure)
8	{
9		if(!autocvar_hud_panel_timer) return;
10	}
11
12	HUD_Panel_LoadCvars();
13
14	draw_beginBoldFont();
15
16	vector pos, mySize;
17	pos = panel_pos;
18	mySize = panel_size;
19
20	if (autocvar_hud_panel_timer_dynamichud)
21		HUD_Scale_Enable();
22	else
23		HUD_Scale_Disable();
24	HUD_Panel_DrawBg();
25	if(panel_bg_padding)
26	{
27		pos += '1 1 0' * panel_bg_padding;
28		mySize -= '2 2 0' * panel_bg_padding;
29	}
30
31	string timer;
32	float timelimit, timeleft, minutesLeft;
33
34	timelimit = STAT(TIMELIMIT);
35
36	timeleft = max(0, timelimit * 60 + STAT(GAMESTARTTIME) - time);
37	timeleft = ceil(timeleft);
38
39	minutesLeft = floor(timeleft / 60);
40
41	float warmup_timeleft = 0;
42	if(warmup_stage)
43	{
44		float warmup_timelimit = STAT(WARMUP_TIMELIMIT);
45		if(warmup_timelimit > 0)
46			warmup_timeleft = max(0, warmup_timelimit - time);
47		else if(warmup_timelimit == 0)
48			warmup_timeleft = timeleft;
49		warmup_timeleft = ceil(warmup_timeleft);
50	}
51
52	vector timer_color;
53	if(intermission_time || minutesLeft >= 5 || warmup_stage || timelimit == 0)
54		timer_color = '1 1 1'; //white
55	else if(minutesLeft >= 1)
56		timer_color = '1 1 0'; //yellow
57	else
58		timer_color = '1 0 0'; //red
59
60	if (intermission_time) {
61		timer = seconds_tostring(max(0, floor(intermission_time - STAT(GAMESTARTTIME))));
62	} else if (autocvar_hud_panel_timer_increment || (!warmup_stage && timelimit == 0) || (warmup_stage && warmup_timeleft <= 0)) {
63		if (time < STAT(GAMESTARTTIME))
64			timer = seconds_tostring(0); //while restart is still active, show 00:00
65		else
66			timer = seconds_tostring(floor(time - STAT(GAMESTARTTIME)));
67	} else {
68		if(warmup_stage)
69			timer = seconds_tostring(warmup_timeleft);
70		else
71			timer = seconds_tostring(timeleft);
72	}
73
74	drawstring_aspect(pos, timer, mySize, timer_color, panel_fg_alpha, DRAWFLAG_NORMAL);
75
76	draw_endBoldFont();
77}
78