mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
102 lines
2.4 KiB
Lua
102 lines
2.4 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
-- Version of DProgressBar I can mess around with
|
||
|
|
|
||
|
|
local PANEL = {}
|
||
|
|
|
||
|
|
AccessorFunc( PANEL, "m_iMin", "Min" )
|
||
|
|
AccessorFunc( PANEL, "m_iMax", "Max" )
|
||
|
|
AccessorFunc( PANEL, "m_iValue", "Value" )
|
||
|
|
AccessorFunc( PANEL, "m_Color", "Color" )
|
||
|
|
|
||
|
|
function PANEL:Init()
|
||
|
|
self.Label = vgui.Create( "DLabel", self )
|
||
|
|
self.Label:SetFont( "DefaultSmall" )
|
||
|
|
self.Label:SetColor( Color( 0, 0, 0 ) )
|
||
|
|
|
||
|
|
self:SetMin( 0 )
|
||
|
|
self:SetMax( 1000 )
|
||
|
|
self:SetValue( 253 )
|
||
|
|
self:SetColor( Color( 50, 205, 255, 255 ) )
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:LabelAsPercentage()
|
||
|
|
self.m_bLabelAsPercentage = true
|
||
|
|
self:UpdateText()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:SetMin( i )
|
||
|
|
self.m_iMin = i
|
||
|
|
self:UpdateText()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:SetMax( i )
|
||
|
|
self.m_iMax = i
|
||
|
|
self:UpdateText()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:SetValue( i )
|
||
|
|
self.m_iValue = i
|
||
|
|
self:UpdateText()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:UpdateText()
|
||
|
|
if ( !self.m_iMax ) then return end
|
||
|
|
if ( !self.m_iMin ) then return end
|
||
|
|
if ( !self.m_iValue ) then return end
|
||
|
|
|
||
|
|
local fDelta = 0;
|
||
|
|
|
||
|
|
if ( self.m_iMax-self.m_iMin != 0 ) then
|
||
|
|
fDelta = ( self.m_iValue - self.m_iMin ) / (self.m_iMax-self.m_iMin)
|
||
|
|
end
|
||
|
|
|
||
|
|
if ( self.m_bLabelAsPercentage ) then
|
||
|
|
self.Label:SetText( Format( "%.2f%%", fDelta * 100 ) )
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
if ( self.m_iMin == 0 ) then
|
||
|
|
|
||
|
|
self.Label:SetText( Format( "%i / %i", self.m_iValue, self.m_iMax ) )
|
||
|
|
|
||
|
|
else
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:PerformLayout()
|
||
|
|
self.Label:SizeToContents()
|
||
|
|
self.Label:AlignRight( 5 )
|
||
|
|
self.Label:CenterVertical()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Paint()
|
||
|
|
|
||
|
|
local fDelta = 0;
|
||
|
|
|
||
|
|
if ( self.m_iMax-self.m_iMin != 0 ) then
|
||
|
|
fDelta = ( self.m_iValue - self.m_iMin ) / (self.m_iMax-self.m_iMin)
|
||
|
|
end
|
||
|
|
|
||
|
|
local Width = self:GetWide()
|
||
|
|
|
||
|
|
surface.SetDrawColor( 0, 0, 0, 170 )
|
||
|
|
surface.DrawRect( 0, 0, Width, self:GetTall() )
|
||
|
|
|
||
|
|
surface.SetDrawColor( self.m_Color.r, self.m_Color.g, self.m_Color.b, self.m_Color.a * 0.5 )
|
||
|
|
surface.DrawRect( 2, 2, Width - 4, self:GetTall() - 4 )
|
||
|
|
surface.SetDrawColor( self.m_Color.r, self.m_Color.g, self.m_Color.b, self.m_Color.a )
|
||
|
|
surface.DrawRect( 2, 2, Width * fDelta - 4, self:GetTall() - 4 )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
vgui.Register( "TTTProgressBar", PANEL, "DPanel" )
|