ph-enhanced/gamemodes/fretta/gamemode/vgui/vgui_gamenotice.lua

111 lines
2.6 KiB
Lua
Raw Normal View History

2019-05-28 09:16:53 +02:00
-- client cvars to control deathmsgs
local hud_deathnotice_time = CreateClientConVar( "hud_deathnotice_time", "6", true, false )
local hud_deathnotice_limit = CreateClientConVar( "hud_deathnotice_limit", "5", true, false )
/*
This is the player death panel. This should be parented to a DeathMessage_Panel. The DeathMessage_Panel that
it's parented to controls aspects such as the position on screen. All this panel's job is to print the
specific death it's been given and fade out before its RetireTime.
*/
local PANEL = {}
Derma_Hook( PANEL, "Paint", "Paint", "GameNotice" )
Derma_Hook( PANEL, "ApplySchemeSettings", "Scheme", "GameNotice" )
Derma_Hook( PANEL, "PerformLayout", "Layout", "GameNotice" )
function PANEL:Init()
self.m_bHighlight = false
self.Padding = 8
self.Spacing = 8
self.Items = {}
end
function PANEL:AddEntityText( txt )
if ( type( txt ) == "string" ) then return false end
if ( type( txt ) == "Player" ) then
self:AddText( txt:Nick(), GAMEMODE:GetTeamColor( txt ) )
if ( txt == LocalPlayer() ) then self.m_bHighlight = true end
return true
end
if( txt:IsValid() ) then
self:AddText( txt:GetClass(), GAMEMODE.DeathNoticeDefaultColor )
else
self:AddText( tostring( txt ) )
end
end
function PANEL:AddItem( item )
table.insert( self.Items, item )
self:InvalidateLayout( true )
end
function PANEL:AddText( txt, color )
if ( self:AddEntityText( txt ) ) then return end
local txt = tostring( txt )
local lbl = vgui.Create( "DLabel", self )
Derma_Hook( lbl, "ApplySchemeSettings", "Scheme", "GameNoticeLabel" )
lbl:ApplySchemeSettings()
lbl:SetText( txt )
if( string.Left( txt , 1 ) == "#" && !color ) then color = GAMEMODE.DeathNoticeDefaultColor end // localised ent death
if( GAMEMODE.DeathNoticeTextColor && !color ) then color = GAMEMODE.DeathNoticeTextColor end // something else
if ( !color ) then color = color_white end
lbl:SetTextColor( color )
self:AddItem( lbl )
end
function PANEL:AddIcon( txt )
if ( killicon.Exists( txt ) ) then
local icon = vgui.Create( "DKillIcon", self )
icon:SetName( txt )
icon:SizeToContents()
self:AddItem( icon )
else
self:AddText( "killed" )
end
end
function PANEL:PerformLayout()
local x = self.Padding
local height = self.Padding * 0.5
for k, v in pairs( self.Items ) do
v:SetPos( x, self.Padding * 0.5 )
v:SizeToContents()
x = x + v:GetWide() + self.Spacing
height = math.max( height, v:GetTall() + self.Padding )
end
self:SetSize( x + self.Padding, height )
end
derma.DefineControl( "GameNotice", "", PANEL, "DPanel" )