140 lines
4.1 KiB
Lua
140 lines
4.1 KiB
Lua
|
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")
|