rendered paste bodyinclude( "player_countcard.lua" )
include( "player_ratecard.lua" )
surface.CreateFont( "verdana", 16, 400, true, false, "SuiScoreboardPlayerName" )
local texGradient = surface.GetTextureID( "gui/center_gradient" )
local texRatings = {}
texRatings[ 'none' ] = surface.GetTextureID( "gui/silkicons/user" )
texRatings[ 'smile' ] = surface.GetTextureID( "gui/silkicons/emoticon_smile" )
texRatings[ 'lol' ] = surface.GetTextureID( "gui/silkicons/emoticon_smile" )
texRatings[ 'gay' ] = surface.GetTextureID( "gui/gmod_logo" )
texRatings[ 'stunter' ] = surface.GetTextureID( "gui/inv_corner16" )
texRatings[ 'king' ] = surface.GetTextureID( "gui/gmod_logo" )
texRatings[ 'god' ] = surface.GetTextureID( "gui/gmod_logo" )
texRatings[ 'best_landvehicle' ] = surface.GetTextureID( "gui/faceposer_indicator" )
texRatings[ 'best_airvehicle' ] = surface.GetTextureID( "gui/arrow" )
texRatings[ 'best_hovervehicle' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'best_bike' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'best_robot' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'best_boat' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'best_spaceship' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'best_alternativevehicle' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'naughty' ] = surface.GetTextureID( "gui/silkicons/exclamation" )
texRatings[ 'friendly' ] = surface.GetTextureID( "gui/silkicons/user" )
texRatings[ 'informative' ] = surface.GetTextureID( "gui/info" )
texRatings[ 'love' ] = surface.GetTextureID( "gui/silkicons/heart" )
texRatings[ 'artistic' ] = surface.GetTextureID( "gui/silkicons/palette" )
texRatings[ 'silver_star' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'gold_star' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'zing' ] = surface.GetTextureID( "gui/silkicons/star" )
texRatings[ 'good_builder' ] = surface.GetTextureID( "gui/silkicons/wrench" )
texRatings[ 'pro_builder' ] = surface.GetTextureID( "gui/silkicons/star" )
surface.GetTextureID( "gui/silkicons/emoticon_smile" )
local PANEL = {}
/*---------------------------------------------------------
Name: Paint
---------------------------------------------------------*/
function PANEL:Paint()
local color = Color( 100, 100, 100, 255 )
if ( self.Armed ) then
color = Color( 125, 125, 125, 255 )
end
if ( self.Selected ) then
color = Color( 125, 125, 125, 255 )
end
if ( self.Player:Team() == TEAM_CONNECTING ) then
color = Color( 100, 100, 100, 155 )
elseif ( self.Player:IsValid() ) then
//if ( team.GetName(self.Player:Team() ) == Unassigned) then
if ( tostring(self.Player:Team()) == tostring("1001") ) then
color = Color( 100, 100, 100, 255 )
else
tcolor = team.GetColor(self.Player:Team())
color = Color(tcolor.r,tcolor.g,tcolor.b,225)
end
elseif ( self.Player:IsAdmin() ) then
color = Color( 255, 155, 0, 255 )
end
if ( self.Player == LocalPlayer() ) then
tcolor = team.GetColor(self.Player:Team())
color = Color(tcolor.r,tcolor.g,tcolor.b,255)
end
if ( self.Open || self.Size != self.TargetSize ) then
draw.RoundedBox( 4, 18, 16, self:GetWide()-36, self:GetTall() - 16, color )
draw.RoundedBox( 4, 20, 16, self:GetWide()-40, self:GetTall() - 16 - 2, Color( 225, 225, 225, 150 ) )
surface.SetTexture( texGradient )
surface.SetDrawColor( 255, 255, 255, 100 )
surface.DrawTexturedRect( 20, 16, self:GetWide()-40, self:GetTall() - 16 - 2 )
end
draw.RoundedBox( 4, 18, 0, self:GetWide()-36, 24, color )
surface.SetTexture( texGradient )
surface.SetDrawColor( 255, 255, 255, 150 )
surface.DrawTexturedRect( 0, 0, self:GetWide()-36, 24 )
surface.SetTexture( self.texRating )
surface.SetDrawColor( 255, 255, 255, 255 )
surface.DrawTexturedRect( 20, 4, 16, 16 )
return true
end
/*---------------------------------------------------------
Name: UpdatePlayerData
---------------------------------------------------------*/
function PANEL:SetPlayer( ply )
self.Player = ply
self.CountCard:SetPlayer( ply )
self.RateCard:SetPlayer( ply )
self:UpdatePlayerData()
end
function PANEL:CheckRating( name, count )
if ( self.Player:GetNetworkedInt( "SuiRating."..name, 0 ) > count ) then
count = self.Player:GetNetworkedInt( "SuiRating."..name, 0 )
self.texRating = texRatings[ name ]
end
return count
end
/*---------------------------------------------------------
Name: UpdatePlayerData
---------------------------------------------------------*/
function PANEL:UpdatePlayerData()
if ( !self.Player ) then return end
if ( !self.Player:IsValid() ) then return end
// self.lblName:SetText( team.GetName(self.Player:Team()) .." - ".. self.Player:Nick() )
self.lblName:SetText( self.Player:Nick() )
self.lblTeam:SetText( team.GetName(self.Player:Team()) )
self.lblHealth:SetText( self.Player:Health() )
self.lblFrags:SetText( self.Player:Frags() )
self.lblDeaths:SetText( self.Player:Deaths() )
self.lblPing:SetText( self.Player:Ping() )
local k = self.Player:Frags()
local d = self.Player:Deaths()
local kdr = "-- "
if d != 0 then
kdr = k/d
local y,z = math.modf(kdr)
z = string.sub(z, 1, 5)
if y != 0 then kdr = string.sub(y+z,1,5) else kdr = z end
kdr = kdr .. ":1"
if k == 0 then kdr = k .. ":" .. d end
end
self.lblRatio:SetText( kdr )
// Work out what icon to draw
self.texRating = surface.GetTextureID( "gui/silkicons/emoticon_smile" )
self.texRating = texRatings[ 'none' ]
local count = 0
count = self:CheckRating( 'smile', count )
count = self:CheckRating( 'lol', count )
count = self:CheckRating( 'gay', count )
count = self:CheckRating( 'stunter', count )
count = self:CheckRating( 'king', count )
count = self:CheckRating( 'god', count )
count = self:CheckRating( 'best_landvehicle', count )
count = self:CheckRating( 'best_airvehicle', count )
count = self:CheckRating( 'best_hovervehicle', count )
count = self:CheckRating( 'best_bike', count )
count = self:CheckRating( 'best_robot', count )
count = self:CheckRating( 'best_boat', count )
count = self:CheckRating( 'best_spaceship', count )
count = self:CheckRating( 'best_alternativevehicle', count )
count = self:CheckRating( 'naughty', count )
count = self:CheckRating( 'friendly', count )
count = self:CheckRating( 'informative', count )
count = self:CheckRating( 'love', count )
count = self:CheckRating( 'artistic', count )
count = self:CheckRating( 'silver_star', count )
count = self:CheckRating( 'gold_star', count )
count = self:CheckRating( 'zing', count )
count = self:CheckRating( 'good_builder', count )
count = self:CheckRating( 'pro_builder', count )
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:Init()
self.Size = 24
self:OpenInfo( false )
self.CountCard = vgui.Create( "SuiScorePlayerCountCard", self )
self.RateCard = vgui.Create( "SuiScorePlayerRateCard", self )
--self.CountCard = vgui.Create( "SuiScorePlayerCountCard", self )
--self.CountCard = vgui.Create( "SuiScorePlayerCountCard", self )
self.lblName = vgui.Create( "Label", self )
self.lblTeam = vgui.Create( "Label", self )
self.lblHealth = vgui.Create( "Label", self )
self.lblFrags = vgui.Create( "Label", self )
self.lblDeaths = vgui.Create( "Label", self )
self.lblRatio = vgui.Create( "Label", self )
self.lblPing = vgui.Create( "Label", self )
// If you don't do this it'll block your clicks
self.lblName:SetMouseInputEnabled( false )
self.lblTeam:SetMouseInputEnabled( false )
self.lblHealth:SetMouseInputEnabled( false )
self.lblFrags:SetMouseInputEnabled( false )
self.lblDeaths:SetMouseInputEnabled( false )
self.lblRatio:SetMouseInputEnabled( false )
self.lblPing:SetMouseInputEnabled( false )
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:ApplySchemeSettings()
self.lblName:SetFont( "SuiScoreboardPlayerName" )
self.lblTeam:SetFont( "SuiScoreboardPlayerName" )
self.lblHealth:SetFont( "SuiScoreboardPlayerName" )
self.lblFrags:SetFont( "SuiScoreboardPlayerName" )
self.lblDeaths:SetFont( "SuiScoreboardPlayerName" )
self.lblRatio:SetFont( "SuiScoreboardPlayerName" )
self.lblPing:SetFont( "SuiScoreboardPlayerName" )
self.lblName:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblTeam:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblHealth:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblFrags:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblDeaths:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblRatio:SetFGColor( Color( 0, 0, 0, 255 ) )
self.lblPing:SetFGColor( Color( 0, 0, 0, 255 ) )
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:DoClick()
if ( self.Open ) then
surface.PlaySound( "ui/buttonclickrelease.wav" )
else
surface.PlaySound( "ui/buttonclick.wav" )
end
self:OpenInfo( !self.Open )
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:OpenInfo( bool )
if ( bool ) then
self.TargetSize = 140
else
self.TargetSize = 24
end
self.Open = bool
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:Think()
if ( self.Size != self.TargetSize ) then
self.Size = math.Approach( self.Size, self.TargetSize, (math.abs( self.Size - self.TargetSize ) + 1) * 10 * FrameTime() )
self:PerformLayout()
SCOREBOARD:InvalidateLayout()
// self:GetParent():InvalidateLayout()
end
if ( !self.PlayerUpdate || self.PlayerUpdate < CurTime() ) then
self.PlayerUpdate = CurTime() + 0.5
self:UpdatePlayerData()
end
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:PerformLayout()
self:SetSize( self:GetWide(), self.Size )
self.lblName:SizeToContents()
self.lblName:SetPos( 38, 3 )
self.lblTeam:SizeToContents()
//self.lblRatio:SizeToContents()
local COLUMN_SIZE = 45
self.lblPing:SetPos( self:GetWide() - COLUMN_SIZE * 1, 0 )
self.lblRatio:SetPos( self:GetWide() - COLUMN_SIZE * 2.6, 0 )
self.lblDeaths:SetPos( self:GetWide() - COLUMN_SIZE * 3.4, 0 )
self.lblFrags:SetPos( self:GetWide() - COLUMN_SIZE * 4.4, 0 )
self.lblHealth:SetPos( self:GetWide() - COLUMN_SIZE * 5.4, 0 )
self.lblTeam:SetPos( self:GetWide() - COLUMN_SIZE * 8.2, 3 )
if ( self.Open || self.Size != self.TargetSize ) then
self.CountCard:SetVisible( true )
self.CountCard:SetPos( 18, self.lblName:GetTall() + 10 )
self.CountCard:SetSize( self:GetWide() - 36, self:GetTall() - self.lblName:GetTall() - 10 )
self.RateCard:SetVisible( false )
self.RateCard:SetPos( 18, self.lblName:GetTall() + 10 )
self.RateCard:SetSize( self:GetWide() - 36, self:GetTall() - self.lblName:GetTall() - 10 )
else
self.CountCard:SetVisible( false )
self.RateCard:SetVisible( false )
end
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:HigherOrLower( row )
if ( self.Player:Team() == TEAM_CONNECTING ) then return false end
if ( row.Player:Team() == TEAM_CONNECTING ) then return true end
--if ( self.Player:Frags() == row.Player:Frags() ) then
--return self.Player:Deaths() < row.Player:Deaths()
--end
if ( self.Player:Team() == row.Player:Team() ) then
return self.Player:Team() > row.Player:Team()
end
--return self.Player:Frags() > row.Player:Frags()
return self.Player:Team() < row.Player:Team()
end
vgui.Register( "SuiScorePlayerRow", PANEL, "Button" )