Files
wnsrc/gamemodes/sandbox/gamemode/spawnmenu/controls/ctrllistbox.lua
lifestorm 73479cff9e Upload
2024-08-04 22:55:00 +03:00

119 lines
2.5 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/
--]]
local PANEL = {}
--AccessorFunc( PANEL, "m_ConVarR", "ConVarR" )
--[[---------------------------------------------------------
Name: Init
-----------------------------------------------------------]]
function PANEL:Init()
self.ConVars = {}
self.Options = {}
end
--[[---------------------------------------------------------
Name: AddOption
-----------------------------------------------------------]]
function PANEL:AddOption( strName, tabConVars )
self:AddChoice( strName, tabConVars )
for k, v in pairs( tabConVars ) do
self.ConVars[ k ] = 1
end
end
--[[---------------------------------------------------------
Name: OnSelect
-----------------------------------------------------------]]
function PANEL:OnSelect( index, value, data )
for k, v in pairs( data ) do
RunConsoleCommand( k, tostring( v ) )
end
end
--[[---------------------------------------------------------
Name: Think
-----------------------------------------------------------]]
function PANEL:Think( CheckConvarChanges )
self:CheckConVarChanges()
end
--[[---------------------------------------------------------
Name: ConVarsChanged
-----------------------------------------------------------]]
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
--[[---------------------------------------------------------
Name: CheckForMatch
-----------------------------------------------------------]]
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
--[[---------------------------------------------------------
Name: CheckConVarChanges
-----------------------------------------------------------]]
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" )