mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
158 lines
3.7 KiB
Lua
158 lines
3.7 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 table = table
|
|
local type = type
|
|
local istable = istable
|
|
local isstring = isstring
|
|
local assert = assert
|
|
local format = string.format
|
|
local GetConVar = GetConVar
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: cvar
|
|
Desc: Callbacks when cvars change
|
|
-----------------------------------------------------------]]
|
|
module( "cvars" )
|
|
|
|
local ConVars = {}
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: GetConVarCallbacks
|
|
Desc: Returns a table of the given ConVars callbacks
|
|
-----------------------------------------------------------]]
|
|
function GetConVarCallbacks( name, createIfNotFound )
|
|
|
|
local tab = ConVars[ name ]
|
|
if ( createIfNotFound and !tab ) then
|
|
tab = {}
|
|
ConVars[ name ] = tab
|
|
end
|
|
|
|
return tab
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: OnConVarChanged
|
|
Desc: Called by the engine
|
|
-----------------------------------------------------------]]
|
|
function OnConVarChanged( name, old, new )
|
|
|
|
local tab = GetConVarCallbacks( name )
|
|
if ( !tab ) then return end
|
|
|
|
for i = 1, #tab do
|
|
local callback = tab[ i ]
|
|
if ( istable( callback ) ) then
|
|
callback[ 1 ]( name, old, new )
|
|
else
|
|
callback( name, old, new )
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: AddChangeCallback
|
|
Desc: Adds a callback to be called when convar changes
|
|
-----------------------------------------------------------]]
|
|
function AddChangeCallback( name, func, identifier )
|
|
|
|
if ( identifier ) then
|
|
assert( isstring( identifier ), format( "bad argument #%i (string expected, got %s)", 3, type( identifier ) ) )
|
|
end
|
|
|
|
local tab = GetConVarCallbacks( name, true )
|
|
|
|
if ( !identifier ) then
|
|
table.insert( tab, func )
|
|
return
|
|
end
|
|
|
|
for i = 1, #tab do
|
|
local callback = tab[ i ]
|
|
if ( istable( callback ) and callback[ 2 ] == identifier ) then
|
|
callback[ 1 ] = func
|
|
return
|
|
end
|
|
end
|
|
|
|
table.insert( tab, { func, identifier } )
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: RemoveChangeCallback
|
|
Desc: Removes callback with identifier
|
|
-----------------------------------------------------------]]
|
|
function RemoveChangeCallback( name, identifier )
|
|
|
|
if ( identifier ) then
|
|
assert( isstring( identifier ), format( "bad argument #%i (string expected, got %s)", 2, type( identifier ) ) )
|
|
end
|
|
|
|
local tab = GetConVarCallbacks( name, true )
|
|
for i = 1, #tab do
|
|
local callback = tab[ i ]
|
|
if ( istable( callback ) and callback[ 2 ] == identifier ) then
|
|
table.remove( tab, i )
|
|
break
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: String
|
|
Desc: Retrieves console variable as a string
|
|
-----------------------------------------------------------]]
|
|
function String( name, default )
|
|
|
|
local convar = GetConVar( name )
|
|
if ( convar ~= nil ) then
|
|
return convar:GetString()
|
|
end
|
|
|
|
return default
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Number
|
|
Desc: Retrieves console variable as a number
|
|
-----------------------------------------------------------]]
|
|
function Number( name, default )
|
|
|
|
local convar = GetConVar( name )
|
|
if ( convar ~= nil ) then
|
|
return convar:GetFloat()
|
|
end
|
|
|
|
return default
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
Name: Bool
|
|
Desc: Retrieves console variable as a boolean
|
|
-----------------------------------------------------------]]
|
|
function Bool( name, default )
|
|
|
|
local convar = GetConVar( name )
|
|
if ( convar ~= nil ) then
|
|
return convar:GetBool()
|
|
end
|
|
|
|
return default
|
|
|
|
end
|