zombiesurvival-evolved/gamemodes/zombiesurvival/gamemode/vgui/dteamcounter.lua
2014-10-01 20:49:54 -04:00

71 lines
1.5 KiB
Lua

local PANEL = {}
PANEL.m_Team = 0
PANEL.NextRefresh = 0
local function ImageThink(self)
self:SetRotation(math.sin((RealTime() + self.Seed) * 0.5) * 25)
self:OldPaint()
end
function PANEL:Init()
self.m_Image = vgui.Create("DEXRotatedImage", self)
self.m_Image:SetImage("icon16/check_off.png")
self.m_Image.Seed = math.Rand(0, 1000)
self.m_Image.OldPaint = self.m_Image.Paint
self.m_Image.Paint = ImageThink
self.m_Counter = vgui.Create("DLabel", self)
self.m_Counter:SetFont("ZSHUDFontSmaller")
self:Refresh()
end
function PANEL:Paint()
return true
end
function PANEL:Think()
if RealTime() >= self.NextRefresh then
self.NextRefresh = RealTime() + 1
self:Refresh()
end
end
function PANEL:SetTeam(teamid)
self.m_Team = teamid
self.m_Counter:SetTextColor(team.GetColor(teamid))
end
function PANEL:SetImage(mat)
self.m_Image:SetImage(mat)
self:InvalidateLayout()
end
function PANEL:PerformLayout()
self.m_Image:SetSize(self:GetSize())
self.m_Counter:AlignBottom()
self.m_Counter:AlignRight()
end
function PANEL:Refresh()
local numplayers = team.NumPlayers(self.m_Team)
self.m_PrevPlayers = self.m_PrevPlayers or numplayers
self.m_Counter:SetText(numplayers)
self.m_Counter:SizeToContents()
if self.m_PrevPlayers ~= numplayers then
self.m_Counter:Stop()
self.m_Counter:SetColor(numplayers > self.m_PrevPlayers and color_white or COLOR_RED)
self.m_Counter:ColorTo(team.GetColor(self.m_Team), 2)
self.m_PrevPlayers = numplayers
end
self:InvalidateLayout()
end
vgui.Register("DTeamCounter", PANEL, "DPanel")