86 lines
1.2 KiB
Lua
86 lines
1.2 KiB
Lua
|
|
local PANEL = {}
|
|
|
|
function PANEL:Init()
|
|
|
|
self.ConVars = {}
|
|
self.Options = {}
|
|
|
|
end
|
|
|
|
function PANEL:AddOption( strName, tabConVars )
|
|
|
|
self:AddChoice( strName, tabConVars )
|
|
|
|
for k, v in pairs( tabConVars ) do
|
|
self.ConVars[ k ] = 1
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:OnSelect( index, value, data )
|
|
|
|
for k, v in pairs( data ) do
|
|
|
|
RunConsoleCommand( k, tostring( v ) )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:Think()
|
|
|
|
self:CheckConVarChanges()
|
|
|
|
end
|
|
|
|
function PANEL:ConVarsChanged()
|
|
|
|
for k, v in pairs( self.ConVars ) do
|
|
|
|
if ( self[ k ] == nil ) then return true end
|
|
if ( self[ k ] != GetConVarString( k ) ) then return true end
|
|
|
|
end
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
function PANEL:CheckForMatch( cvars )
|
|
|
|
if ( table.IsEmpty( cvars ) ) then return false end
|
|
|
|
for k, v in pairs( cvars ) do
|
|
|
|
if ( tostring(v) != GetConVarString( k ) ) then
|
|
return false
|
|
end
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
function PANEL:CheckConVarChanges()
|
|
|
|
if (!self:ConVarsChanged()) then return end
|
|
|
|
for k, v in pairs( self.ConVars ) do
|
|
self[ k ] = GetConVarString( k )
|
|
end
|
|
|
|
for k, v in pairs( self.Data ) do
|
|
|
|
if ( self:CheckForMatch( v ) ) then
|
|
self:SetText( self:GetOptionText(k) )
|
|
return
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
vgui.Register( "CtrlListBox", PANEL, "DComboBox" )
|