Progressbar

From GMod Wiki

Jump to: navigation, search

Progressbar addons for Derma

Install in lua/autorun/client

 
//=============================================================================//
//  ___  ___   _   _   _    __   _   ___ ___ __ __
// |_ _|| __| / \ | \_/ |  / _| / \ | o \ o \\ V /
//  | | | _| | o || \_/ | ( |_n| o ||   /   / \ / 
//  |_| |___||_n_||_| |_|  \__/|_n_||_|\\_|\\ |_|  2009
//										 
//=============================================================================//
 
local PANEL = {}
 
AccessorFunc( PANEL, "m_iMin", 	"Min" )
AccessorFunc( PANEL, "m_iMax", 	"Max" )
AccessorFunc( PANEL, "m_iValue", 	"Value" )
AccessorFunc( PANEL, "m_Color", 	"Color" )
 
/*---------------------------------------------------------
	Init
---------------------------------------------------------*/
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:LabelAsPecentage()
	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
 
		// Todo..
 
	end
 
end
 
 
/*---------------------------------------------------------
	PerformLayout
---------------------------------------------------------*/
function PANEL:PerformLayout()
 
	//self.Label:CopyBounds( self )
	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( "DProgressBar", PANEL, "DPanel" )
 
Personal tools
Namespaces
Variants
Actions
Navigation
Lua Scripting
Functions
Hooks
Toolbox