local PANEL = {}



function PANEL:Init()

	self.m_HumanCount = vgui.Create("DTeamCounter", self)

	self.m_HumanCount:SetTeam(TEAM_HUMAN)

	self.m_HumanCount:SetImage("zombiesurvival/humanhead")



	self.m_ZombieCount = vgui.Create("DTeamCounter", self)

	self.m_ZombieCount:SetTeam(TEAM_UNDEAD)

	self.m_ZombieCount:SetImage("zombiesurvival/zombiehead")



	self.m_Text1 = vgui.Create("DLabel", self)

	self.m_Text2 = vgui.Create("DLabel", self)

	self.m_Text3 = vgui.Create("DLabel", self)

	self:SetTextFont("ZSHUDFontTiny")



	self.m_Text1.Paint = self.Text1Paint

	self.m_Text2.Paint = self.Text2Paint

	self.m_Text3.Paint = self.Text3Paint



	self:InvalidateLayout()

end



function PANEL:SetTextFont(font)

	self.m_Text1.Font = font

	self.m_Text1:SetFont(font)

	self.m_Text2.Font = font

	self.m_Text2:SetFont(font)

	self.m_Text3.Font = font

	self.m_Text3:SetFont(font)



	self:InvalidateLayout()

end



function PANEL:PerformLayout()

	local hs = self:GetTall() * 0.5

	self.m_HumanCount:SetSize(hs, hs)

	self.m_ZombieCount:SetSize(hs, hs)

	self.m_ZombieCount:AlignTop(hs)



	self.m_Text1:SetWide(self:GetWide())

	self.m_Text1:SizeToContentsY()

	self.m_Text1:MoveRightOf(self.m_HumanCount, 12)

	self.m_Text1:AlignTop(4)

	self.m_Text2:SetWide(self:GetWide())

	self.m_Text2:SizeToContentsY()

	self.m_Text2:MoveRightOf(self.m_HumanCount, 12)

	self.m_Text2:CenterVertical()

	self.m_Text3:SetWide(self:GetWide())

	self.m_Text3:SizeToContentsY()

	self.m_Text3:MoveRightOf(self.m_HumanCount, 12)

	self.m_Text3:AlignBottom(4)

end



function PANEL:Text1Paint()

	local text

	local override = MySelf:IsValid() and GetGlobalString("hudoverride"..MySelf:Team(), "")



	if override and #override > 0 then

		text = override

	else

		local wave = GAMEMODE:GetWave()

		if GAMEMODE:IsEscapeSequence() then

			text = translate.Get(MySelf:IsValid() and MySelf:Team() == TEAM_UNDEAD and "prop_obj_exit_z" or "prop_obj_exit_h")

		elseif wave <= 0 then

			text = translate.Get("prepare_yourself")

		elseif GAMEMODE.ZombieEscape then

			text = translate.Get("zombie_escape")

		else

			local maxwaves = GAMEMODE:GetNumberOfWaves()

			if maxwaves ~= -1 then

				text = translate.Format("wave_x_of_y", wave, maxwaves)

				if not GAMEMODE:GetWaveActive() then

					text = translate.Get("intermission").." - "..text

				end

			elseif not GAMEMODE:GetWaveActive() then

				text = translate.Get("intermission")

			end

		end

	end



	if text then

		draw.SimpleText(text, self.Font, 0, 0, COLOR_GRAY)

	end



	return true

end



function PANEL:Text2Paint()

	if GAMEMODE:GetWave() <= 0 then

		local col

		local timeleft = math.max(0, GAMEMODE:GetWaveStart() - CurTime())

		if timeleft < 10 then

			local glow = math.sin(RealTime() * 8) * 200 + 255

			col = Color(255, glow, glow)

		else

			col = COLOR_GRAY

		end



		draw.SimpleText(translate.Format("zombie_invasion_in_x", util.ToMinutesSeconds(timeleft)), self.Font, 0, 0, col)

	elseif GAMEMODE:GetWaveActive() then

		local waveend = GAMEMODE:GetWaveEnd()

		if waveend ~= -1 then

			local timeleft = math.max(0, waveend - CurTime())

			draw.SimpleText(translate.Format("wave_ends_in_x", util.ToMinutesSeconds(timeleft)), self.Font, 0, 0, 10 < timeleft and COLOR_GRAY or Color(255, 0, 0, math.abs(math.sin(RealTime() * 8)) * 180 + 40))

		end

	else

		local wavestart = GAMEMODE:GetWaveStart()

		if wavestart ~= -1 then

			local timeleft = math.max(0, wavestart - CurTime())

			draw.SimpleText(translate.Format("next_wave_in_x", util.ToMinutesSeconds(timeleft)), self.Font, 0, 0, 10 < timeleft and COLOR_GRAY or Color(255, 0, 0, math.abs(math.sin(RealTime() * 8)) * 180 + 40))

		end

	end



	return true

end



function PANEL:Text3Paint()

	if MySelf:IsValid() then

		if MySelf:Team() == TEAM_UNDEAD then

			local toredeem = GAMEMODE:GetRedeemBrains()

			if toredeem > 0 then

				draw.SimpleText(translate.Format("brains_eaten_x", MySelf:Frags().." / "..toredeem), self.Font, 0, 0, COLOR_DARKRED)

			else

				draw.SimpleText(translate.Format("brains_eaten_x", MySelf:Frags()), self.Font, 0, 0, COLOR_DARKRED)

			end

		else

			draw.SimpleText(translate.Format("points_x", MySelf:GetPoints().." / "..MySelf:Frags()), self.Font, 0, 0, COLOR_DARKRED)

		end

	end



	return true

end



function PANEL:Paint()

	return true

end



vgui.Register("DGameState", PANEL, "DPanel")

