Files
wnsrc/gamemodes/sandbox/gamemode/spawnmenu/creationmenu/content/postprocessicon.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

193 lines
3.6 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 = {}
--[[---------------------------------------------------------
Name: Paint
-----------------------------------------------------------]]
function PANEL:Init()
self:SetPaintBackground( false )
self:SetSize( 128, 128 )
self:SetText( "" )
end
function PANEL:OnDepressionChanged( b )
if ( IsValid( self.checkbox ) ) then
self.checkbox:SetVisible( !b )
end
end
function PANEL:Setup( name, icon, label )
self.label = label
self.name = name
self.icon = icon
self:SetMaterial( icon )
self:SetName( label or name )
self.PP = list.Get( "PostProcess" )[ name ]
if ( !self.PP ) then return end
self.DoClick = function()
if ( self.PP.onclick ) then
return self.PP.onclick()
end
if ( !self.PP.cpanel ) then return end
if ( !IsValid( self.cp ) ) then
self.cp = vgui.Create( "ControlPanel" )
self.cp:SetName( name )
self.PP.cpanel( self.cp )
end
spawnmenu.ActivateToolPanel( 1, self.cp )
end
if ( self.PP.convar ) then
self.checkbox = self:Add( "DCheckBox" )
self.checkbox:SetConVar( self.PP.convar )
self.checkbox:SetSize( 20, 20 )
self.checkbox:SetPos( self:GetWide() - 20 - 8, 8 )
self.Enabled = function() return self.checkbox:GetChecked() end
elseif ( self.ConVars ) then
self.checkbox = self:Add( "DCheckBox" )
self.checkbox:SetSize( 20, 20 )
self.checkbox:SetPos( self:GetWide() - 20 - 8, 8 )
self.checkbox.OnChange = function( pnl, on )
for k, v in pairs( self.ConVars ) do
if ( on ) then
RunConsoleCommand( k, v.on )
else
RunConsoleCommand( k, v.off or "" )
end
end
end
self.checkbox.Think = function( pnl, on )
local good = true
for k, v in pairs( self.ConVars ) do
if ( GetConVarString( k ) != v.on ) then
good = false
end
end
pnl:SetChecked( good )
end
self.Enabled = function() return self.checkbox:GetChecked() end
end
end
function PANEL:DoRightClick()
local pCanvas = self:GetSelectionCanvas()
if ( IsValid( pCanvas ) && pCanvas:NumSelectedChildren() > 0 && self:IsSelected() ) then
return hook.Run( "SpawnlistOpenGenericMenu", pCanvas )
end
self:OpenMenu()
end
function PANEL:DoClick()
end
function PANEL:OpenMenu()
-- Do not allow removal from read only panels
if ( IsValid( self:GetParent() ) && self:GetParent().GetReadOnly && self:GetParent():GetReadOnly() ) then return end
local menu = DermaMenu()
menu:AddOption( "#spawnmenu.menu.delete", function()
self:Remove()
hook.Run( "SpawnlistContentChanged" )
end ):SetIcon( "icon16/bin_closed.png" )
menu:Open()
end
function PANEL:Enabled()
return false
end
function PANEL:ToTable( bigtable )
local tab = {}
tab.type = "postprocess"
tab.name = self.name
tab.label = self.label
tab.icon = self.icon
tab.convars = self.ConVars
table.insert( bigtable, tab )
end
function PANEL:Copy()
local copy = vgui.Create( "PostProcessIcon", self:GetParent() )
copy:CopyBounds( self )
copy.ConVars = self.ConVars
copy:Setup( self.name, self.icon, self.label )
return copy
end
vgui.Register( "PostProcessIcon", PANEL, "ContentIcon" )
spawnmenu.AddContentType( "postprocess", function( container, obj )
if ( !obj.name ) then return end
if ( !obj.icon ) then return end
local icon = vgui.Create( "PostProcessIcon", container )
if ( obj.convars ) then
icon.ConVars = obj.convars
end
icon:Setup( obj.name, obj.icon, obj.label )
container:Add( icon )
return icon
end )