2014-10-02 08:49:54 +08:00
|
|
|
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")
|
|
|
|
|
2018-05-02 06:32:59 +08:00
|
|
|
self:RefreshContents()
|
2014-10-02 08:49:54 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
function PANEL:Paint()
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
function PANEL:Think()
|
|
|
|
if RealTime() >= self.NextRefresh then
|
|
|
|
self.NextRefresh = RealTime() + 1
|
2018-05-02 06:32:59 +08:00
|
|
|
self:RefreshContents()
|
2014-10-02 08:49:54 +08:00
|
|
|
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
|
|
|
|
|
2018-05-02 06:32:59 +08:00
|
|
|
function PANEL:RefreshContents()
|
2014-10-02 08:49:54 +08:00
|
|
|
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")
|