mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
include( "preset_editor.lua" )
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self.DropDown = vgui.Create( "DComboBox", self )
|
||||
self.DropDown.OnSelect = function( dropdown, index, value, data ) self:OnSelect( index, value, data ) end
|
||||
self.DropDown:SetText( "Presets" )
|
||||
self.DropDown:Dock( FILL )
|
||||
|
||||
self.Button = vgui.Create( "DImageButton", self )
|
||||
self.Button.DoClick = function() self:OpenPresetEditor() end
|
||||
self.Button:Dock( RIGHT )
|
||||
self.Button:SetToolTip( "#preset.edit" )
|
||||
self.Button:SetImage( "icon16/wrench.png" )
|
||||
self.Button:SetStretchToFit( false )
|
||||
self.Button:SetSize( 20, 20 )
|
||||
self.Button:DockMargin( 0, 0, 0, 0 )
|
||||
|
||||
self.AddButton = vgui.Create( "DImageButton", self )
|
||||
self.AddButton.DoClick = function()
|
||||
if ( !IsValid( self ) ) then return end
|
||||
|
||||
self:QuickSavePreset()
|
||||
end
|
||||
self.AddButton:Dock( RIGHT )
|
||||
self.AddButton:SetToolTip( "#preset.add" )
|
||||
self.AddButton:SetImage( "icon16/add.png" )
|
||||
self.AddButton:SetStretchToFit( false )
|
||||
self.AddButton:SetSize( 20, 20 )
|
||||
self.AddButton:DockMargin( 2, 0, 0, 0 )
|
||||
|
||||
self:SetTall( 20 )
|
||||
|
||||
self.Options = {}
|
||||
self.ConVars = {}
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetLabel( strName )
|
||||
|
||||
self.Label:SetText( strName )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:AddOption( strName, data )
|
||||
|
||||
self.DropDown:AddChoice( strName, data )
|
||||
|
||||
self.Options[ strName ] = data
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetOptions( Options )
|
||||
if ( Options ) then
|
||||
table.Merge( self.Options, Options )
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:OnSelect( index, value, data )
|
||||
|
||||
if ( !data ) then return end
|
||||
|
||||
for k, v in pairs( data ) do
|
||||
RunConsoleCommand( k, v )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:QuickSaveInternal( text )
|
||||
local tabValues = {}
|
||||
for k, v in pairs( self:GetConVars() ) do
|
||||
tabValues[ v ] = GetConVarString( v )
|
||||
end
|
||||
|
||||
presets.Add( self.m_strPreset, text, tabValues )
|
||||
self:Update()
|
||||
end
|
||||
|
||||
function PANEL:QuickSavePreset()
|
||||
Derma_StringRequest( "#preset.saveas_title", "#preset.saveas_desc", "", function( text )
|
||||
if ( !text || text:Trim() == "" ) then presets.BadNameAlert() return end
|
||||
|
||||
if ( presets.Exists( self.m_strPreset, text ) ) then
|
||||
presets.OverwritePresetPrompt( function()
|
||||
self:QuickSaveInternal( text )
|
||||
end )
|
||||
return
|
||||
end
|
||||
|
||||
self:QuickSaveInternal( text )
|
||||
end )
|
||||
end
|
||||
|
||||
function PANEL:OpenPresetEditor()
|
||||
|
||||
if ( !self.m_strPreset ) then return end
|
||||
|
||||
self.Window = vgui.Create( "PresetEditor" )
|
||||
self.Window:MakePopup()
|
||||
self.Window:Center()
|
||||
self.Window:SetType( self.m_strPreset )
|
||||
self.Window:SetConVars( self:GetConVars() )
|
||||
self.Window:SetPresetControl( self )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:AddConVar( convar )
|
||||
|
||||
table.insert( self.ConVars, convar )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:GetConVars()
|
||||
|
||||
return self.ConVars
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetPreset( strName )
|
||||
|
||||
self.m_strPreset = strName
|
||||
self:ReloadPresets()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ReloadPresets()
|
||||
|
||||
self:Clear()
|
||||
|
||||
for name, data in pairs( self.Options ) do
|
||||
self:AddOption( name, data )
|
||||
end
|
||||
|
||||
local Presets = presets.GetTable( self.m_strPreset )
|
||||
local sortedPresets, i = {}, 1
|
||||
for name in pairs( Presets ) do
|
||||
sortedPresets[ i ] = name
|
||||
i = i + 1
|
||||
end
|
||||
table.sort( sortedPresets )
|
||||
|
||||
for _, name in ipairs( sortedPresets ) do
|
||||
self.DropDown:AddChoice( name, Presets[ name ] )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Update()
|
||||
|
||||
self:ReloadPresets()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Clear()
|
||||
|
||||
self.DropDown:Clear()
|
||||
|
||||
end
|
||||
|
||||
vgui.Register( "ControlPresets", PANEL, "Panel" )
|
||||
59
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrlcolor.lua
Normal file
59
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrlcolor.lua
Normal file
@@ -0,0 +1,59 @@
|
||||
--[[
|
||||
| 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 = {}
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self.Mixer = vgui.Create( "DColorMixer", self )
|
||||
self.Mixer:Dock( FILL )
|
||||
|
||||
self:SetTall( 245 )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PerformLayout( x, y )
|
||||
|
||||
-- Magic number, the target width for self.Mixer
|
||||
-- Number picked to that Palette would not have a gap, at button size 17
|
||||
local targetWidth = 272
|
||||
|
||||
-- Don't scale the Mixer in width, keep it to the target width
|
||||
local s = math.max( ( self:GetWide() - targetWidth ) / 2, 0 )
|
||||
self.Mixer:DockMargin( s, 8, s, 0 )
|
||||
|
||||
-- Ugly hack, because of the docking system
|
||||
self.OldMixerW = self.OldMixerW or self.Mixer:GetWide()
|
||||
|
||||
-- Number of panels in one row
|
||||
local ColorRows = math.ceil( #self.Mixer.Palette:GetChildren() / 3 )
|
||||
|
||||
-- Set the button size closest to fill the Mixer width
|
||||
local bSize = math.floor( self:GetWide() / ColorRows )
|
||||
self.Mixer.Palette:SetButtonSize( math.min( bSize, 17 ) )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Paint()
|
||||
-- Invisible background!
|
||||
end
|
||||
|
||||
function PANEL:SetLabel( text ) self.Mixer:SetLabel( text ) end
|
||||
function PANEL:SetConVarR( cvar ) self.Mixer:SetConVarR( cvar ) end
|
||||
function PANEL:SetConVarG( cvar ) self.Mixer:SetConVarG( cvar ) end
|
||||
function PANEL:SetConVarB( cvar ) self.Mixer:SetConVarB( cvar ) end
|
||||
function PANEL:SetConVarA( cvar ) self.Mixer:SetConVarA( cvar ) end
|
||||
function PANEL:GetConVarR() return self.Mixer:GetConVarR() end
|
||||
function PANEL:GetConVarG() return self.Mixer:GetConVarG() end
|
||||
function PANEL:GetConVarB() return self.Mixer:GetConVarB() end
|
||||
function PANEL:GetConVarA() return self.Mixer:GetConVarA() end
|
||||
|
||||
vgui.Register( "CtrlColor", PANEL, "DPanel" )
|
||||
118
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrllistbox.lua
Normal file
118
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrllistbox.lua
Normal file
@@ -0,0 +1,118 @@
|
||||
--[[
|
||||
| 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" )
|
||||
117
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrlnumpad.lua
Normal file
117
gamemodes/sandbox/gamemode/spawnmenu/controls/ctrlnumpad.lua
Normal file
@@ -0,0 +1,117 @@
|
||||
--[[
|
||||
| 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_ConVar1", "ConVar1" )
|
||||
AccessorFunc( PANEL, "m_ConVar2", "ConVar2" )
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: Init
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:Init()
|
||||
|
||||
self.NumPad1 = vgui.Create( "DBinder", self )
|
||||
self.Label1 = vgui.Create( "DLabel", self )
|
||||
self.Label1:SetDark( true )
|
||||
|
||||
self.NumPad2 = vgui.Create( "DBinder", self )
|
||||
self.Label2 = vgui.Create( "DLabel", self )
|
||||
self.Label2:SetDark( true )
|
||||
|
||||
self:SetPaintBackground( false )
|
||||
|
||||
self:SetHeight( 200 )
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: SetLabel1
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:SetLabel1( txt )
|
||||
if ( !txt ) then return end
|
||||
self.Label1:SetText( txt )
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: SetLabel2
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:SetLabel2( txt )
|
||||
if ( !txt ) then return end
|
||||
self.Label2:SetText( txt )
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: SetConVar1
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:SetConVar1( cvar )
|
||||
self.NumPad1:SetConVar( cvar )
|
||||
self.m_ConVar1 = cvar
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: SetConVar2
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:SetConVar2( cvar )
|
||||
self.NumPad2:SetConVar( cvar )
|
||||
self.m_ConVar2 = cvar
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: Init
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:PerformLayout()
|
||||
|
||||
self:SetTall( 70 )
|
||||
|
||||
self.NumPad1:InvalidateLayout( true )
|
||||
self.NumPad1:SetSize( 100, 50 )
|
||||
|
||||
if ( self.m_ConVar2 ) then
|
||||
self.NumPad2:InvalidateLayout( true )
|
||||
self.NumPad2:SetSize( 100, 50 )
|
||||
end
|
||||
|
||||
if ( !self.m_ConVar2 ) then
|
||||
|
||||
self.Label1:SizeToContents()
|
||||
|
||||
self.NumPad2:SetVisible( false )
|
||||
self.Label2:SetVisible( false )
|
||||
|
||||
self.NumPad1:CenterHorizontal( 0.5 )
|
||||
self.NumPad1:AlignTop( 20 )
|
||||
|
||||
self.Label1:CenterHorizontal()
|
||||
self.Label1:AlignTop( 0 )
|
||||
|
||||
else
|
||||
|
||||
self.Label1:SizeToContents()
|
||||
self.Label2:SizeToContents()
|
||||
|
||||
self.NumPad2:SetVisible( true )
|
||||
self.Label2:SetVisible( true )
|
||||
|
||||
self.NumPad1:CenterHorizontal( 0.25 )
|
||||
self.Label1:CenterHorizontal( 0.25 )
|
||||
self.NumPad1:AlignTop( 20 )
|
||||
|
||||
self.NumPad2:CenterHorizontal( 0.75 )
|
||||
self.Label2:CenterHorizontal( 0.75 )
|
||||
self.NumPad2:AlignTop( 20 )
|
||||
self.Label2:AlignTop( 0 )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
vgui.Register( "CtrlNumPad", PANEL, "DPanel" )
|
||||
17
gamemodes/sandbox/gamemode/spawnmenu/controls/manifest.lua
Normal file
17
gamemodes/sandbox/gamemode/spawnmenu/controls/manifest.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
include( "control_presets.lua" )
|
||||
include( "ropematerial.lua" )
|
||||
|
||||
include( "ctrlnumpad.lua" )
|
||||
include( "ctrlcolor.lua" )
|
||||
include( "ctrllistbox.lua" )
|
||||
272
gamemodes/sandbox/gamemode/spawnmenu/controls/preset_editor.lua
Normal file
272
gamemodes/sandbox/gamemode/spawnmenu/controls/preset_editor.lua
Normal file
@@ -0,0 +1,272 @@
|
||||
--[[
|
||||
| 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_strType", "Type" )
|
||||
AccessorFunc( PANEL, "m_ConVars", "ConVars" )
|
||||
AccessorFunc( PANEL, "m_PresetControl", "PresetControl" )
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self:SetSize( 450, 350 )
|
||||
self:SetMinWidth( 450 )
|
||||
self:SetMinHeight( 350 )
|
||||
self:SetSizable( true )
|
||||
self:SetTitle( "#preset.editor" )
|
||||
self:DockPadding( 6, 29, 6, 6 )
|
||||
|
||||
local pnlTop = vgui.Create( "Panel", self )
|
||||
pnlTop:Dock( FILL )
|
||||
pnlTop:DockMargin( 0, 0, 0, 5 )
|
||||
|
||||
self.PresetList = vgui.Create( "DListView", pnlTop )
|
||||
self.PresetList:Dock( LEFT )
|
||||
self.PresetList:DockMargin( 0, 0, 5, 0 )
|
||||
self.PresetList:SetWide( 150 )
|
||||
self.PresetList:SetMultiSelect( false )
|
||||
self.PresetList:SetSortable( false )
|
||||
self.PresetList.OnRowSelected = function( s, idx, pnl ) self:OnPresetSelected( pnl ) end
|
||||
|
||||
local pnlEditor = vgui.Create( "DPanel", pnlTop )
|
||||
pnlEditor:Dock( FILL )
|
||||
|
||||
self.pnlDetails = vgui.Create( "DProperties", pnlEditor )
|
||||
self.pnlDetails:Dock( FILL )
|
||||
self.pnlDetails:DockMargin( 5, 5, 5, 5 )
|
||||
|
||||
----------
|
||||
|
||||
local pnlModify = vgui.Create( "Panel", pnlEditor )
|
||||
pnlModify:Dock( BOTTOM )
|
||||
pnlModify:SetTall( 20 )
|
||||
pnlModify:DockMargin( 5, 0, 5, 5 )
|
||||
|
||||
local btnDelete = vgui.Create( "DButton", pnlModify )
|
||||
btnDelete.DoClick = function() self:Delete() end
|
||||
btnDelete:SetTooltip( "#preset.delete" )
|
||||
btnDelete:SetImage( "icon16/bin.png" )
|
||||
btnDelete:SetText( "" )
|
||||
btnDelete:Dock( RIGHT )
|
||||
btnDelete:SetWide( 25 )
|
||||
btnDelete:SetEnabled( false )
|
||||
|
||||
self.txtRename = vgui.Create( "DTextEntry", pnlModify )
|
||||
self.txtRename:Dock( FILL )
|
||||
self.txtRename:SetEnabled( false )
|
||||
self.txtRename:SetTooltip( "#preset.rename" )
|
||||
|
||||
local btnRename = vgui.Create( "DButton", pnlModify )
|
||||
btnRename:SetTooltip( "#preset.save" )
|
||||
btnRename:SetImage( "icon16/disk.png" )
|
||||
btnRename:SetText( "" )
|
||||
btnRename:Dock( RIGHT )
|
||||
btnRename:DockMargin( 5, 0, 5, 0 )
|
||||
btnRename:SetWide( 24 )
|
||||
btnRename.DoClick = function() self:SaveChanges() end
|
||||
btnRename:SetEnabled( false )
|
||||
|
||||
----------
|
||||
|
||||
local bottom = vgui.Create( "Panel", self )
|
||||
bottom:Dock( BOTTOM )
|
||||
bottom:SetTall( 30 )
|
||||
|
||||
self.pnlAdd = vgui.Create( "DPanel", bottom )
|
||||
self.pnlAdd:Dock( FILL )
|
||||
self.pnlAdd:DockPadding( 5, 5, 5, 5 )
|
||||
self.pnlAdd:DockMargin( 0, 0, 5, 0 )
|
||||
|
||||
self.txtName = vgui.Create( "DTextEntry", self.pnlAdd )
|
||||
self.txtName:SetTooltip( "#preset.addnew_field" )
|
||||
self.txtName:Dock( FILL )
|
||||
self.txtName:DockMargin( 0, 0, 5, 0 )
|
||||
self.txtName.OnChange = function( s ) self.btnAdd:SetEnabled( s:GetText():Trim() != "" ) end
|
||||
|
||||
self.btnAdd = vgui.Create( "DButton", self.pnlAdd )
|
||||
self.btnAdd:SetText( "#preset.addnew" )
|
||||
self.btnAdd:Dock( RIGHT )
|
||||
self.btnAdd:SetEnabled( false )
|
||||
self.btnAdd.DoClick = function() self:Add() end
|
||||
|
||||
----------
|
||||
|
||||
local pnlClose = vgui.Create( "DPanel", bottom )
|
||||
pnlClose:Dock( RIGHT )
|
||||
pnlClose:SetWide( 100 )
|
||||
pnlClose:DockPadding( 5, 5, 5, 5 )
|
||||
|
||||
local btnCloseIt = vgui.Create( "DButton", pnlClose )
|
||||
btnCloseIt:SetText( "#preset.close" )
|
||||
btnCloseIt:Dock( FILL )
|
||||
btnCloseIt.DoClick = function() self:Remove() end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetType( strType )
|
||||
|
||||
self.m_strType = strType
|
||||
|
||||
self.PresetList:AddColumn( self:GetType() )
|
||||
self:Update()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:OnPresetSelected( item )
|
||||
|
||||
local name = item:GetValue( 1 )
|
||||
|
||||
self.txtRename:SetText( name )
|
||||
for id, pnl in ipairs( self.txtRename:GetParent():GetChildren() ) do pnl:SetEnabled( true ) end
|
||||
|
||||
self.pnlDetails:Clear()
|
||||
for cvar, val in SortedPairs( item:GetTable().Data ) do
|
||||
local Row = self.pnlDetails:CreateRow( name, cvar:lower() )
|
||||
|
||||
if ( tonumber( val ) != nil && false ) then
|
||||
Row:Setup( "Float", { min = 0, max = 1000 } )
|
||||
Row:SetValue( val )
|
||||
else
|
||||
Row:Setup( "Generic" )
|
||||
end
|
||||
|
||||
Row:SetValue( val )
|
||||
Row.__Value = val
|
||||
Row.DataChanged = function( s, value ) Row.__Value = value end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Update()
|
||||
|
||||
self.PresetList:Clear()
|
||||
self.pnlDetails:Clear()
|
||||
self.txtRename:SetText( "" )
|
||||
|
||||
local Presets = presets.GetTable( self:GetType() )
|
||||
local sortedPresets, i = {}, 1
|
||||
for name in pairs( Presets ) do
|
||||
sortedPresets[i] = name
|
||||
i = i + 1
|
||||
end
|
||||
table.sort( sortedPresets )
|
||||
|
||||
for _, name in ipairs( sortedPresets ) do
|
||||
local item = self.PresetList:AddLine( name )
|
||||
item.Data = Presets[ name ]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SelectPresetByName( name )
|
||||
|
||||
for id, line in pairs( self.PresetList:GetLines() ) do
|
||||
if ( line:GetValue( 1 ) != name ) then continue end
|
||||
self.PresetList:SelectItem( line )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Delete()
|
||||
|
||||
if ( !self.PresetList:GetSelectedLine() || !IsValid( self.PresetList:GetLine( self.PresetList:GetSelectedLine() ) ) ) then return end
|
||||
|
||||
local Selected = self.PresetList:GetLine( self.PresetList:GetSelectedLine() ):GetValue( 1 ):Trim()
|
||||
if ( Selected == "" ) then return end
|
||||
|
||||
presets.Remove( self:GetType(), Selected )
|
||||
self:Update()
|
||||
|
||||
if ( self:GetPresetControl() ) then self:GetPresetControl():Update() end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SaveChangesInternal( Selected, ToName )
|
||||
|
||||
local tabValues = {}
|
||||
local cat = self.pnlDetails:GetCategory( Selected )
|
||||
|
||||
-- WARNING: This will discard ConVars in the preset that no longer exist on the tool/whatever this preset is for
|
||||
for k, v in pairs( self:GetConVars() ) do
|
||||
if ( cat:GetRow( v:lower() ) ) then
|
||||
tabValues[ v:lower() ] = cat:GetRow( v:lower() ).__Value
|
||||
end
|
||||
end
|
||||
|
||||
presets.Rename( self:GetType(), Selected, ToName ) -- Raname the preset if necessary
|
||||
presets.Add( self:GetType(), ToName, tabValues ) -- Update the values
|
||||
|
||||
self:Update()
|
||||
|
||||
self.txtRename:SetText( "" )
|
||||
self:SelectPresetByName( ToName )
|
||||
|
||||
if ( self:GetPresetControl() ) then self:GetPresetControl():Update() end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SaveChanges()
|
||||
|
||||
if ( !self.PresetList:GetSelectedLine() || !IsValid( self.PresetList:GetLine( self.PresetList:GetSelectedLine() ) ) ) then return end
|
||||
|
||||
local Selected = self.PresetList:GetLine( self.PresetList:GetSelectedLine() ):GetValue( 1 ):Trim()
|
||||
if ( Selected == "" ) then return end
|
||||
|
||||
local ToName = self.txtRename:GetValue():Trim()
|
||||
if ( !ToName || ToName == "" ) then presets.BadNameAlert() return end
|
||||
|
||||
if ( presets.Exists( self:GetType(), ToName ) && Selected != ToName ) then
|
||||
presets.OverwritePresetPrompt( function()
|
||||
self:SaveChangesInternal( Selected, ToName )
|
||||
end )
|
||||
return
|
||||
end
|
||||
|
||||
self:SaveChangesInternal( Selected, ToName )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:InternalAdd( ToName )
|
||||
|
||||
local tabValues = {}
|
||||
for k, v in pairs( self:GetConVars() ) do
|
||||
tabValues[ v ] = GetConVarString( v:lower() )
|
||||
end
|
||||
|
||||
presets.Add( self:GetType(), ToName, tabValues )
|
||||
self:Update()
|
||||
|
||||
self.txtName:SetText( "" )
|
||||
self:SelectPresetByName( ToName )
|
||||
|
||||
if ( self:GetPresetControl() ) then self:GetPresetControl():Update() end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Add()
|
||||
|
||||
if ( !self:GetConVars() ) then return end
|
||||
|
||||
local ToName = self.txtName:GetValue():Trim()
|
||||
if ( !ToName || ToName == "" ) then presets.BadNameAlert() return end
|
||||
|
||||
if ( presets.Exists( self:GetType(), ToName ) ) then
|
||||
presets.OverwritePresetPrompt( function()
|
||||
self:InternalAdd( ToName )
|
||||
end )
|
||||
return
|
||||
end
|
||||
|
||||
self:InternalAdd( ToName )
|
||||
|
||||
end
|
||||
|
||||
vgui.Register( "PresetEditor", PANEL, "DFrame" )
|
||||
@@ -0,0 +1,46 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
list.Set( "RopeMaterials", "#ropematerial.rope", "cable/rope" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.cable", "cable/cable2" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.xbeam", "cable/xbeam" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.laser", "cable/redlaser" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.electric", "cable/blue_elec" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.physbeam", "cable/physbeam" )
|
||||
list.Set( "RopeMaterials", "#ropematerial.hydra", "cable/hydra" )
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: Paint
|
||||
-----------------------------------------------------------]]
|
||||
function PANEL:Init()
|
||||
|
||||
self:SetItemWidth( 0.14 )
|
||||
self:SetItemHeight( 0.3 )
|
||||
self:SetAutoHeight( true )
|
||||
|
||||
local mats = list.Get( "RopeMaterials" )
|
||||
for k, v in pairs( mats ) do
|
||||
|
||||
self:AddMaterial( k, v )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Paint( w, h )
|
||||
|
||||
draw.RoundedBox( 4, 0, 0, w, h, Color( 128, 128, 128, 255 ) )
|
||||
|
||||
end
|
||||
|
||||
vgui.Register( "RopeMaterial", PANEL, "MatSelect" )
|
||||
Reference in New Issue
Block a user