265 lines
7.7 KiB
Lua
265 lines
7.7 KiB
Lua
|
surface.CreateFont("PHE.HealthFont",
|
||
|
{
|
||
|
font = "Roboto",
|
||
|
size = 56,
|
||
|
weight = 650,
|
||
|
antialias = true,
|
||
|
shadow = true
|
||
|
})
|
||
|
|
||
|
surface.CreateFont("PHE.AmmoFont",
|
||
|
{
|
||
|
font = "Roboto",
|
||
|
size = 86,
|
||
|
weight = 500,
|
||
|
antialias = true,
|
||
|
shadow = true
|
||
|
})
|
||
|
|
||
|
surface.CreateFont("PHE.ArmorFont",
|
||
|
{
|
||
|
font = "Roboto",
|
||
|
size = 32,
|
||
|
weight = 500,
|
||
|
antialias = true,
|
||
|
shadow = true
|
||
|
})
|
||
|
|
||
|
surface.CreateFont("PHE.TopBarFont",
|
||
|
{
|
||
|
font = "Roboto",
|
||
|
size = 20,
|
||
|
weight = 500,
|
||
|
antialias = true,
|
||
|
shadow = true
|
||
|
})
|
||
|
surface.CreateFont("PHE.TopBarFontTeam",
|
||
|
{
|
||
|
font = "Roboto",
|
||
|
size = 60,
|
||
|
weight = 650,
|
||
|
antialias = true,
|
||
|
shadow = true
|
||
|
})
|
||
|
|
||
|
-- Hides HUD
|
||
|
local hide = {
|
||
|
["CHudHealth"] = true,
|
||
|
["CHudBattery"] = true,
|
||
|
["CHudAmmo"] = true,
|
||
|
["CHudSecondaryAmmo"] = true
|
||
|
}
|
||
|
hook.Add("HUDShouldDraw", "PHE.ShouldHideHUD", function(hudname)
|
||
|
if GetConVar("ph_hud_use_new"):GetBool() then
|
||
|
if (hide[hudname]) then return false end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
local curteam
|
||
|
local mat = {
|
||
|
[1] = Material("vgui/phehud/res_hp_1"),
|
||
|
[2] = Material("vgui/phehud/res_hp_2"),
|
||
|
}
|
||
|
local indic = {
|
||
|
rotate = { mat = Material("vgui/phehud/i_rotate"), [0] = Color(190,190,190,255), [1] = Color(255,255,0,255) },
|
||
|
halo = { mat = Material("vgui/phehud/i_halo"), [0] = Color(190,190,190,255), [1] = Color(0,255,0,255) },
|
||
|
light = { mat = Material("vgui/phehud/i_light"), [0] = Color(190,190,190,255), [1] = Color(255,255,0,255) },
|
||
|
armor = { mat = Material("vgui/phehud/i_shield"), [0] = Color(190,190,190,255), [1] = Color(80,190,255,255) }
|
||
|
}
|
||
|
local hudtopbar = {
|
||
|
mat = Material("vgui/phehud/hud_topbar"),
|
||
|
x = 0,
|
||
|
y = 60
|
||
|
}
|
||
|
local matw = Material("vgui/phehud/res_wep")
|
||
|
|
||
|
local ava
|
||
|
if (IsValid(ava)) then ava:Remove() ava = nil end
|
||
|
local pos = { x = 0, y = ScrH()-130 }
|
||
|
local posw = { x = ScrW() - 480, y = ScrH()-130 }
|
||
|
local hp
|
||
|
local armor
|
||
|
local hpcolor
|
||
|
|
||
|
local bar = {
|
||
|
hp = { h = 5, col = Color(250,40,10,240) },
|
||
|
am = { h = 5, col = Color(80,190,255,220) }
|
||
|
}
|
||
|
|
||
|
local Rstate = 0
|
||
|
net.Receive("PHE.rotateState", function() Rstate = net.ReadInt(2) end)
|
||
|
|
||
|
local function PopulateAliveTeam(tm)
|
||
|
local tim = team.GetPlayers(tm)
|
||
|
local liveply = liveply or 0
|
||
|
|
||
|
for _,pl in pairs(tim) do
|
||
|
if IsValid(pl) && pl:Alive() then liveply = liveply + 1 end
|
||
|
end
|
||
|
|
||
|
return liveply
|
||
|
end
|
||
|
|
||
|
local state = false
|
||
|
local disabledcolor = Color(100,100,100,255)
|
||
|
|
||
|
hook.Add("HUDPaint", "PHE.MainHUD", function()
|
||
|
|
||
|
if GetConVar("ph_hud_use_new"):GetBool() then state = true else state = false end;
|
||
|
|
||
|
if IsValid(LocalPlayer()) && LocalPlayer():Alive() && state && (LocalPlayer():Team() == TEAM_HUNTERS or LocalPlayer():Team() == TEAM_PROPS) then
|
||
|
-- Begin Player Info
|
||
|
if not IsValid(ava) then
|
||
|
ava = vgui.Create("AvatarMask")
|
||
|
ava:SetPos(16, pos.y+18)
|
||
|
ava:SetSize(86,86)
|
||
|
ava:SetPlayer(LocalPlayer(),128)
|
||
|
ava:SetVisible(true)
|
||
|
end
|
||
|
|
||
|
-- Player Info
|
||
|
curteam = LocalPlayer():Team()
|
||
|
hp = LocalPlayer():Health()
|
||
|
armor = LocalPlayer():Armor()
|
||
|
|
||
|
surface.SetDrawColor( 255, 255, 255, 255 )
|
||
|
surface.SetMaterial( mat[curteam] )
|
||
|
surface.DrawTexturedRect( pos.x, pos.y, 480, 120 )
|
||
|
|
||
|
draw.DrawText( "HEALTH", "Trebuchet24", pos.x + 175, pos.y + 14, color_white, TEXT_ALIGN_LEFT )
|
||
|
|
||
|
if hp < 0 then hp = 0 end
|
||
|
if armor < 0 then armor = 0 end
|
||
|
|
||
|
if hp < 30 then
|
||
|
hpcolor = Color( 255, 1 * (hp*8), 1 * (hp*8), 255 )
|
||
|
else
|
||
|
hpcolor = Color( 255, 255, 255, 255 )
|
||
|
end
|
||
|
|
||
|
-- hp bar
|
||
|
if hp > 100 then hpx = 100 else hpx = hp end
|
||
|
if armor > 100 then armx = 100 else armx = armor end
|
||
|
|
||
|
surface.SetDrawColor(bar.hp.col)
|
||
|
surface.DrawRect(pos.x + 175, pos.y + 57, 1*(hpx*2.9), bar.hp.h)
|
||
|
|
||
|
surface.SetDrawColor(bar.am.col)
|
||
|
surface.DrawRect(pos.x + 175, pos.y + 62, 1*(armx*2.9), bar.am.h)
|
||
|
|
||
|
draw.DrawText( hp, "PHE.HealthFont", pos.x + 350, pos.y - 4, hpcolor, TEXT_ALIGN_RIGHT )
|
||
|
draw.DrawText( " / "..armor, "PHE.ArmorFont", pos.x + 350, pos.y + 14, Color( 255,255,255,255 ), TEXT_ALIGN_LEFT )
|
||
|
|
||
|
if LocalPlayer():Team() == TEAM_HUNTERS then
|
||
|
surface.SetDrawColor(disabledcolor)
|
||
|
else
|
||
|
surface.SetDrawColor( indic.rotate[Rstate] )
|
||
|
end
|
||
|
surface.SetMaterial( indic.rotate.mat )
|
||
|
surface.DrawTexturedRect( pos.x + (168), pos.y + 74, 32, 32 )
|
||
|
|
||
|
if LocalPlayer():Team() == TEAM_HUNTERS then
|
||
|
surface.SetDrawColor(disabledcolor)
|
||
|
else
|
||
|
surface.SetDrawColor( indic.light[CL_GLOBAL_LIGHT_STATE] )
|
||
|
end
|
||
|
surface.SetMaterial( indic.light.mat )
|
||
|
surface.DrawTexturedRect( pos.x + (216), pos.y + 74, 32, 32 )
|
||
|
|
||
|
if LocalPlayer():Team() == TEAM_HUNTERS then
|
||
|
surface.SetDrawColor(disabledcolor)
|
||
|
else
|
||
|
surface.SetDrawColor( indic.halo[tonumber(GetConVar("ph_cl_halos"):GetInt())])
|
||
|
end
|
||
|
surface.SetMaterial( indic.halo.mat )
|
||
|
surface.DrawTexturedRect( pos.x + (264), pos.y + 74, 32, 32 )
|
||
|
|
||
|
if LocalPlayer():Armor() < 10 then
|
||
|
surface.SetDrawColor( indic.armor[0] )
|
||
|
else
|
||
|
surface.SetDrawColor( indic.armor[1] )
|
||
|
end
|
||
|
surface.SetMaterial( indic.armor.mat )
|
||
|
surface.DrawTexturedRect (pos.x + (312), pos.y + (2*37), 32, 32 )
|
||
|
end
|
||
|
|
||
|
-- Weapon HUD
|
||
|
if IsValid(LocalPlayer()) && LocalPlayer():Alive() && state && LocalPlayer():Team() == TEAM_HUNTERS then
|
||
|
surface.SetDrawColor( 255, 255, 255, 255 )
|
||
|
surface.SetMaterial( matw )
|
||
|
surface.DrawTexturedRect( posw.x, posw.y, 480, 120 )
|
||
|
|
||
|
local curWep = LocalPlayer():GetActiveWeapon()
|
||
|
|
||
|
local clip
|
||
|
local maxclip
|
||
|
local mag
|
||
|
local mag2
|
||
|
local name
|
||
|
local percent
|
||
|
|
||
|
draw.DrawText( "AMMO", "Trebuchet24", posw.x + (256), posw.y + 14, color_white, TEXT_ALIGN_LEFT )
|
||
|
|
||
|
if IsValid(curWep) then
|
||
|
clip = curWep:Clip1()
|
||
|
maxclip = curWep:GetMaxClip1()
|
||
|
mag = LocalPlayer():GetAmmoCount(curWep:GetPrimaryAmmoType())
|
||
|
mag2 = LocalPlayer():GetAmmoCount(curWep:GetSecondaryAmmoType())
|
||
|
name = language.GetPhrase(curWep:GetPrintName())
|
||
|
|
||
|
if clip < 0 then clip = 0 end
|
||
|
if maxclip < 0 then maxclip = 0 end
|
||
|
|
||
|
if (clip < 0 || maxclip < 0) then
|
||
|
percent = 0
|
||
|
else
|
||
|
percent = math.Round(clip / maxclip * 300)
|
||
|
end
|
||
|
|
||
|
surface.SetDrawColor(255,200,15,255)
|
||
|
surface.DrawRect(posw.x + 8, posw.y + 58, percent, 8)
|
||
|
|
||
|
draw.DrawText( clip, "PHE.HealthFont", posw.x + 136, posw.y -4, color_white, TEXT_ALIGN_RIGHT )
|
||
|
draw.DrawText( " / "..mag, "PHE.ArmorFont", posw.x + 136, posw.y + 14, color_white, TEXT_ALIGN_LEFT )
|
||
|
draw.DrawText( mag2, "PHE.AmmoFont", ScrW()-58, posw.y + 14, color_white, TEXT_ALIGN_CENTER )
|
||
|
draw.DrawText( name, "PHE.TopBarFont", posw.x + 136, posw.y + 80, color_white, TEXT_ALIGN_LEFT )
|
||
|
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if IsValid(LocalPlayer()) && !LocalPlayer():Alive() then
|
||
|
if IsValid(ava) then
|
||
|
ava:SetVisible(false)
|
||
|
ava:Remove()
|
||
|
end
|
||
|
end
|
||
|
if IsValid(LocalPlayer()) && !state then
|
||
|
if IsValid(ava) then
|
||
|
ava:SetVisible(false)
|
||
|
ava:Remove()
|
||
|
end
|
||
|
end
|
||
|
if IsValid(LocalPlayer()) && (LocalPlayer():Team() == TEAM_SPECTATOR or LocalPlayer():Team() == TEAM_UNASSIGNED) then
|
||
|
if IsValid(ava) then
|
||
|
ava:SetVisible(false)
|
||
|
ava:Remove()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- the Team Bar. This requires at least 4 players to get this displayed.
|
||
|
if GetConVar("ph_show_team_topbar"):GetBool() then
|
||
|
if ((player.GetCount() >= 4 && LocalPlayer():Alive()) && (LocalPlayer():Team() != TEAM_UNASSIGNED && LocalPlayer():Team() != TEAM_SPECTATOR)) then
|
||
|
surface.SetDrawColor( 255, 255, 255, 255 )
|
||
|
surface.SetMaterial( hudtopbar.mat )
|
||
|
surface.DrawTexturedRect( hudtopbar.x, hudtopbar.y, 400, 50 )
|
||
|
|
||
|
-- Draw Props
|
||
|
draw.DrawText( "Props", "PHE.TopBarFont", 4, hudtopbar.y + 2, Color(255,255,255,255), TEXT_ALIGN_LEFT )
|
||
|
draw.DrawText( tostring(PopulateAliveTeam(TEAM_PROPS)), "PHE.TopBarFontTeam", 96, hudtopbar.y - 8, Color(255,255,255,255), TEXT_ALIGN_LEFT )
|
||
|
|
||
|
-- Draw Hunters
|
||
|
draw.DrawText( "Hunter", "PHE.TopBarFont", 300, hudtopbar.y + 22, Color(255,255,255,255), TEXT_ALIGN_LEFT )
|
||
|
draw.DrawText( tostring(PopulateAliveTeam(TEAM_HUNTERS)), "PHE.TopBarFontTeam", 220, hudtopbar.y - 8, Color(255,255,255,255), TEXT_ALIGN_LEFT )
|
||
|
end
|
||
|
end
|
||
|
end)
|