mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
616
lua/simfphys/client/tab.lua
Normal file
616
lua/simfphys/client/tab.lua
Normal file
@@ -0,0 +1,616 @@
|
||||
--[[
|
||||
| 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 auto = CreateClientConVar( "cl_simfphys_auto", 1 , true, true )
|
||||
local sport = CreateClientConVar( "cl_simfphys_sport", 0 , true, true )
|
||||
local sanic = CreateClientConVar( "cl_simfphys_sanic", 0 , true, true )
|
||||
local ctenable = CreateClientConVar( "cl_simfphys_ctenable", 1 , true, true )
|
||||
local ctmul = CreateClientConVar( "cl_simfphys_ctmul", 0.7 , true, true )
|
||||
local ctang = CreateClientConVar( "cl_simfphys_ctang", 15 , true, true )
|
||||
local hud = CreateClientConVar( "cl_simfphys_hud", "1", true, false )
|
||||
local alt_hud = CreateClientConVar( "cl_simfphys_althud", "1", true, false )
|
||||
|
||||
local hud_x = CreateClientConVar( "cl_simfphys_hud_offset_x", "0", true, false )
|
||||
local hud_y = CreateClientConVar( "cl_simfphys_hud_offset_y", "0", true, false )
|
||||
local hud_mph = CreateClientConVar( "cl_simfphys_hudmph", "0", true, false )
|
||||
local hud_mpg = CreateClientConVar( "cl_simfphys_hudmpg", "0", true, false )
|
||||
local hud_realspeed = CreateClientConVar( "cl_simfphys_hudrealspeed", "0", true, false )
|
||||
local autostart = CreateClientConVar( "cl_simfphys_autostart", "1", true, true )
|
||||
|
||||
local overwrite = CreateClientConVar( "cl_simfphys_overwrite", 0, true, true )
|
||||
local smoothsteer = CreateClientConVar( "cl_simfphys_smoothsteer", 0, true, true )
|
||||
local steerspeed = CreateClientConVar( "cl_simfphys_steerspeed", 8, true, true )
|
||||
local faststeerang = CreateClientConVar( "cl_simfphys_steerangfast", 10, true, true )
|
||||
local fadespeed = CreateClientConVar( "cl_simfphys_fadespeed", 535, true, true )
|
||||
|
||||
CreateClientConVar( "cl_simfphys_hidesprites", "0", true, false )
|
||||
CreateClientConVar( "cl_simfphys_frontlamps", "1", true, false )
|
||||
CreateClientConVar( "cl_simfphys_rearlamps", "1", true, false )
|
||||
CreateClientConVar( "cl_simfphys_shadows", "0", true, false )
|
||||
|
||||
local function simplebinder( x, y, tbl, num, parent)
|
||||
local sizex = 500
|
||||
local sizey = 40
|
||||
|
||||
local kentry = tbl[num]
|
||||
local key = kentry[1]
|
||||
local setdefault = key:GetInt()
|
||||
|
||||
local Shape = vgui.Create( "DShape", parent)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( x, y )
|
||||
Shape:SetSize( 175, sizey )
|
||||
Shape:SetColor( Color( 0, 0, 0, 255 ) )
|
||||
|
||||
local Shape = vgui.Create( "DShape", parent)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( x + 1, y + 1 )
|
||||
Shape:SetSize( 173 - 2, sizey - 2 )
|
||||
Shape:SetColor( Color( 241, 241, 241, 255 ) )
|
||||
|
||||
local binder = vgui.Create( "DBinder", parent)
|
||||
binder:SetPos( 175 + x, y )
|
||||
binder:SetSize( 500 - 175, sizey )
|
||||
binder:SetValue( setdefault )
|
||||
function binder:SetSelectedNumber( num )
|
||||
self.m_iSelectedNumber = num
|
||||
self:ConVarChanged( num )
|
||||
self:UpdateText()
|
||||
self:OnChange( num )
|
||||
key:SetInt( num )
|
||||
end
|
||||
|
||||
local TextLabel = vgui.Create( "DPanel", parent)
|
||||
TextLabel:SetPos( x, y )
|
||||
TextLabel:SetSize( 175, sizey )
|
||||
TextLabel.Paint = function()
|
||||
draw.SimpleText( kentry[3], "DSimfphysFont", 175 * 0.5, sizey * 0.5, Color( 100, 100, 100, 255 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
|
||||
end
|
||||
return binder
|
||||
end
|
||||
|
||||
local function simplebinder_old( x, y, tbl, num, parent, sizex, sizey)
|
||||
local kentry = tbl[num]
|
||||
local key = kentry[1]
|
||||
local setdefault = key:GetInt()
|
||||
|
||||
local sizex = sizex or 400
|
||||
local sizey = sizey or 40
|
||||
|
||||
local Shape = vgui.Create( "DShape", parent)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( x, y )
|
||||
Shape:SetSize( sizex, sizey )
|
||||
Shape:SetColor( Color( 0, 0, 0, 255 ) )
|
||||
|
||||
local Shape = vgui.Create( "DShape", parent)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( x + 1, y + 1 )
|
||||
Shape:SetSize( sizex - 2, sizey - 2 )
|
||||
Shape:SetColor( Color( 241, 241, 241, 255 ) )
|
||||
|
||||
local binder = vgui.Create( "DBinder", parent)
|
||||
binder:SetPos( sizex * 0.5 + x, y )
|
||||
binder:SetSize( sizex * 0.5, sizey )
|
||||
binder:SetValue( setdefault )
|
||||
function binder:SetSelectedNumber( num )
|
||||
self.m_iSelectedNumber = num
|
||||
self:ConVarChanged( num )
|
||||
self:UpdateText()
|
||||
self:OnChange( num )
|
||||
|
||||
key:SetInt( num )
|
||||
end
|
||||
|
||||
local TextLabel = vgui.Create( "DPanel", parent)
|
||||
TextLabel:SetPos( x, y )
|
||||
TextLabel:SetSize( sizex * 0.5, sizey )
|
||||
TextLabel.Paint = function()
|
||||
draw.SimpleText( kentry[3], "DSimfphysFont", sizex * 0.25, 20, Color( 100, 100, 100, 255 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
|
||||
end
|
||||
return binder
|
||||
end
|
||||
|
||||
local function createcheckbox(x, y, label, command, parent, default)
|
||||
local boxy = vgui.Create( "DCheckBoxLabel", parent)
|
||||
boxy:SetParent( parent )
|
||||
boxy:SetPos( x, y )
|
||||
boxy:SetText( label )
|
||||
boxy:SetConVar( command )
|
||||
boxy:SetValue( default )
|
||||
boxy:SizeToContents()
|
||||
return boxy
|
||||
end
|
||||
|
||||
local function createslider(x, y, sizex, sizey, label, command, parent,min,max,default)
|
||||
local slider = vgui.Create( "DNumSlider", parent)
|
||||
slider:SetPos( x, y )
|
||||
slider:SetSize( sizex, sizey )
|
||||
slider:SetText( label )
|
||||
slider:SetMin( min )
|
||||
slider:SetMax( max )
|
||||
slider:SetDecimals( 2 )
|
||||
slider:SetConVar( command )
|
||||
slider:SetValue( default )
|
||||
return slider
|
||||
end
|
||||
|
||||
local function buildclientsettingsmenu( self )
|
||||
local Shape = vgui.Create( "DShape", self.PropPanel)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( 20, 20 )
|
||||
Shape:SetSize( 350, 180 )
|
||||
Shape:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
createcheckbox(25,25,"Show Hud","cl_simfphys_hud",self.PropPanel,hud:GetInt())
|
||||
createcheckbox(210,25,"Racing Hud","cl_simfphys_althud",self.PropPanel,alt_hud:GetInt())
|
||||
createcheckbox(25,45,"MPH instead of KMH","cl_simfphys_hudmph",self.PropPanel,hud_mph:GetInt())
|
||||
createcheckbox(25,65,"Speed relative to \nplayersize instead \nworldsize","cl_simfphys_hudrealspeed",self.PropPanel,hud_realspeed:GetInt())
|
||||
createcheckbox(25,110,"Fuel consumption \nin MPG instead \nof L/100KM","cl_simfphys_hudmpg",self.PropPanel,hud_mpg:GetInt())
|
||||
createslider(30,155,345,20,"Hud offset X","cl_simfphys_hud_offset_x",self.PropPanel,-1,1,hud_x:GetFloat())
|
||||
createslider(30,175,345,20,"Hud offset Y","cl_simfphys_hud_offset_y",self.PropPanel,-1,1,hud_y:GetFloat())
|
||||
|
||||
local Shape = vgui.Create( "DShape", self.PropPanel)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( 20, 210 )
|
||||
Shape:SetSize( 350, 85 )
|
||||
Shape:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
createcheckbox(25,215,"Hide Sprites","cl_simfphys_hidesprites",self.PropPanel,0)
|
||||
createcheckbox(25,235,"Front Projected Textures","cl_simfphys_frontlamps",self.PropPanel,0)
|
||||
createcheckbox(25,255,"Rear Projected Textures","cl_simfphys_rearlamps",self.PropPanel,0)
|
||||
createcheckbox(25,275,"Enable Shadows","cl_simfphys_shadows",self.PropPanel,0)
|
||||
|
||||
local Shape = vgui.Create( "DShape", self.PropPanel)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( 20, 305 )
|
||||
Shape:SetSize( 350, 85 )
|
||||
Shape:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
createcheckbox(25,310,"Always Fullthrottle","cl_simfphys_sanic",self.PropPanel,sanic:GetInt())
|
||||
createcheckbox(25,330,"Engine Auto Start/Stop","cl_simfphys_autostart",self.PropPanel,autostart:GetInt())
|
||||
createcheckbox(25,350,"Automatic Transmission","cl_simfphys_auto",self.PropPanel,auto:GetInt())
|
||||
createcheckbox(25,370,"Automatic Sportmode (late up and downshifts)","cl_simfphys_sport",self.PropPanel,sport:GetInt())
|
||||
|
||||
local Shape = vgui.Create( "DShape", self.PropPanel)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( 20, 400 )
|
||||
Shape:SetSize( 350, 115 )
|
||||
Shape:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
|
||||
local ctitem_1 = createcheckbox(25,405,"Enable Countersteer","cl_simfphys_ctenable",self.PropPanel,ctenable:GetInt())
|
||||
local ctitem_2 = createslider(30,425,345,40,"Countersteer Mul","cl_simfphys_ctmul",self.PropPanel,0.1,2,ctmul:GetFloat())
|
||||
local ctitem_3 = createslider(30,445,345,40,"Countersteer MaxAng","cl_simfphys_ctang",self.PropPanel,1,90,ctang:GetFloat())
|
||||
|
||||
local Reset = vgui.Create( "DButton" )
|
||||
Reset:SetParent( self.PropPanel )
|
||||
Reset:SetText( "Reset" )
|
||||
Reset:SetPos( 25, 485 )
|
||||
Reset:SetSize( 340, 25 )
|
||||
Reset.DoClick = function()
|
||||
ctitem_1:SetValue( 1 )
|
||||
ctitem_2:SetValue( 0.7 )
|
||||
ctitem_3:SetValue( 15 )
|
||||
ctenable:SetInt( 1 )
|
||||
ctmul:SetFloat( 0.7 )
|
||||
ctang:SetFloat( 15 )
|
||||
end
|
||||
|
||||
local Shape = vgui.Create( "DShape", self.PropPanel)
|
||||
Shape:SetType( "Rect" )
|
||||
Shape:SetPos( 20, 525 )
|
||||
Shape:SetSize( 350, 165 )
|
||||
Shape:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
|
||||
local st_item_1 = createcheckbox(25,530,"Use these settings\n(you need to re-enter the vehicle)","cl_simfphys_overwrite",self.PropPanel,overwrite:GetInt())
|
||||
local st_item_2 = createslider(30,550,345,40,"steer speed","cl_simfphys_steerspeed",self.PropPanel,1,16,steerspeed:GetFloat())
|
||||
local st_item_3 = createslider(30,570,345,40,"fast speed steer angle","cl_simfphys_steerangfast",self.PropPanel,0,90,faststeerang:GetFloat())
|
||||
local st_item_4 = createslider(30,595,345,40,"fade speed(units/seconds)\nfor fast speed steer angle","cl_simfphys_fadespeed",self.PropPanel,1,5000,fadespeed:GetFloat())
|
||||
local st_item_5 = createcheckbox(25,635,"extra smooth steering","cl_simfphys_smoothsteer",self.PropPanel,smoothsteer:GetInt())
|
||||
|
||||
local Reset = vgui.Create( "DButton" )
|
||||
Reset:SetParent( self.PropPanel )
|
||||
Reset:SetText( "Reset" )
|
||||
Reset:SetPos( 25, 660 )
|
||||
Reset:SetSize( 340, 25 )
|
||||
Reset.DoClick = function()
|
||||
st_item_1:SetValue( 0 )
|
||||
st_item_2:SetValue( 8 )
|
||||
st_item_3:SetValue( 10 )
|
||||
st_item_4:SetValue( 535 )
|
||||
st_item_5:SetValue( 0 )
|
||||
|
||||
overwrite:SetInt( 0 )
|
||||
steerspeed:SetFloat( 8 )
|
||||
faststeerang:SetFloat( 10 )
|
||||
fadespeed:SetFloat( 535 )
|
||||
smoothsteer:SetInt( 0 )
|
||||
end
|
||||
end
|
||||
|
||||
local function buildserversettingsmenu( self )
|
||||
local Background = vgui.Create( "DShape", self.PropPanel)
|
||||
Background:SetType( "Rect" )
|
||||
Background:SetPos( 20, 20 )
|
||||
Background:SetColor( Color( 0, 0, 0, 200 ) )
|
||||
local y = 0
|
||||
|
||||
if LocalPlayer():IsSuperAdmin() then
|
||||
y = y + 25
|
||||
local CheckBoxDamage = vgui.Create( "DCheckBoxLabel", self.PropPanel)
|
||||
CheckBoxDamage:SetPos( 25, y )
|
||||
CheckBoxDamage:SetText( "Enable Damage" )
|
||||
CheckBoxDamage:SetValue( GetConVar( "sv_simfphys_enabledamage" ) :GetInt() )
|
||||
CheckBoxDamage:SizeToContents()
|
||||
|
||||
y = y + 18
|
||||
local DamageMul = vgui.Create( "DNumSlider", self.PropPanel)
|
||||
DamageMul:SetPos( 30, y )
|
||||
DamageMul:SetSize( 345, 30 )
|
||||
DamageMul:SetText( "Damage Multiplicator" )
|
||||
DamageMul:SetMin( 0 )
|
||||
DamageMul:SetMax( 10 )
|
||||
DamageMul:SetDecimals( 3 )
|
||||
DamageMul:SetValue( GetConVar( "sv_simfphys_damagemultiplicator" ):GetFloat() )
|
||||
|
||||
y = y + 32
|
||||
local CheckBoxpDamage = vgui.Create( "DCheckBoxLabel", self.PropPanel)
|
||||
CheckBoxpDamage:SetPos( 25, y )
|
||||
CheckBoxpDamage:SetText( "Enable Player Damage (On Collision)" )
|
||||
CheckBoxpDamage:SetValue( GetConVar( "sv_simfphys_playerdamage" ) :GetInt() )
|
||||
CheckBoxpDamage:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local GibRemoveTimer = vgui.Create( "DNumSlider", self.PropPanel)
|
||||
GibRemoveTimer:SetPos( 30, y )
|
||||
GibRemoveTimer:SetSize( 345, 30 )
|
||||
GibRemoveTimer:SetText( "Gib Lifetime\n(0 = never remove)" )
|
||||
GibRemoveTimer:SetMin( 0 )
|
||||
GibRemoveTimer:SetMax( 3600 )
|
||||
GibRemoveTimer:SetDecimals( 0 )
|
||||
GibRemoveTimer:SetValue( GetConVar( "sv_simfphys_gib_lifetime" ):GetInt() )
|
||||
|
||||
y = y + 45
|
||||
local CheckBoxFuel = vgui.Create( "DCheckBoxLabel", self.PropPanel)
|
||||
CheckBoxFuel:SetPos( 25, y )
|
||||
CheckBoxFuel:SetText( "Enable Fuelsystem" )
|
||||
CheckBoxFuel:SetValue( GetConVar( "sv_simfphys_fuel" ) :GetInt() )
|
||||
CheckBoxFuel:SizeToContents()
|
||||
|
||||
y = y + 18
|
||||
local ScaleFuel = vgui.Create( "DNumSlider", self.PropPanel)
|
||||
ScaleFuel:SetPos( 30, y )
|
||||
ScaleFuel:SetSize( 345, 30 )
|
||||
ScaleFuel:SetText( "Fuel tank size multiplier" )
|
||||
ScaleFuel:SetMin( 0 )
|
||||
ScaleFuel:SetMax( 1 )
|
||||
ScaleFuel:SetDecimals( 2 )
|
||||
ScaleFuel:SetValue( GetConVar( "sv_simfphys_fuelscale" ):GetFloat() )
|
||||
|
||||
y = y + 45
|
||||
local tractionLabel = vgui.Create( "DLabel", self.PropPanel )
|
||||
tractionLabel:SetPos( 25, y )
|
||||
tractionLabel:SetText( "Traction Multiplicator for:" )
|
||||
tractionLabel:SizeToContents()
|
||||
|
||||
local NewTractionData = {}
|
||||
local DemSliders = {}
|
||||
y = y + 15
|
||||
for k, v in pairs( simfphys.TractionData ) do
|
||||
DemSliders[k] = vgui.Create( "DNumSlider", self.PropPanel)
|
||||
DemSliders[k]:SetPos( 30, y )
|
||||
DemSliders[k]:SetSize( 345, 30 )
|
||||
DemSliders[k]:SetText( k )
|
||||
DemSliders[k]:SetMin( 0 )
|
||||
DemSliders[k]:SetMax( 2 )
|
||||
DemSliders[k]:SetDecimals( 2 )
|
||||
DemSliders[k]:SetValue( simfphys[k]:GetFloat() )
|
||||
DemSliders[k].OnValueChanged = function( item, value )
|
||||
NewTractionData[ k ] = value
|
||||
end
|
||||
y = y + 25
|
||||
end
|
||||
|
||||
y = y + 30
|
||||
local DermaButton = vgui.Create( "DButton" )
|
||||
DermaButton:SetParent( self.PropPanel )
|
||||
DermaButton:SetText( "Apply" )
|
||||
DermaButton:SetPos( 25, y - 10 )
|
||||
DermaButton:SetSize( 340, 25 )
|
||||
DermaButton.DoClick = function()
|
||||
net.Start("simfphys_settings")
|
||||
net.WriteBool( CheckBoxDamage:GetChecked() )
|
||||
net.WriteFloat( GibRemoveTimer:GetValue() )
|
||||
net.WriteFloat( DamageMul:GetValue() )
|
||||
net.WriteBool( CheckBoxpDamage:GetChecked() )
|
||||
net.WriteBool( CheckBoxFuel:GetChecked() )
|
||||
net.WriteFloat( ScaleFuel:GetValue() )
|
||||
net.WriteTable( NewTractionData )
|
||||
net.SendToServer()
|
||||
end
|
||||
|
||||
y = y + 30
|
||||
local DermaButton = vgui.Create( "DButton" )
|
||||
DermaButton:SetParent( self.PropPanel )
|
||||
DermaButton:SetText( "Reset" )
|
||||
DermaButton:SetPos( 25, y - 10 )
|
||||
DermaButton:SetSize( 340, 25 )
|
||||
DermaButton.DoClick = function()
|
||||
|
||||
NewTractionData["ice"] = 0.35
|
||||
NewTractionData["gmod_ice"] = 0.1
|
||||
NewTractionData["slipperyslime"] = 0.2
|
||||
NewTractionData["snow"] = 0.7
|
||||
NewTractionData["grass"] = 1
|
||||
NewTractionData["sand"] = 1
|
||||
NewTractionData["dirt"] = 1
|
||||
NewTractionData["concrete"] = 1
|
||||
NewTractionData["metal"] = 1
|
||||
NewTractionData["glass"] = 1
|
||||
NewTractionData["gravel"] = 1
|
||||
NewTractionData["rock"] = 1
|
||||
NewTractionData["wood"] = 1
|
||||
|
||||
for k, v in pairs( NewTractionData ) do
|
||||
DemSliders[k]:SetValue( v )
|
||||
end
|
||||
|
||||
CheckBoxDamage:SetValue( 1 )
|
||||
GibRemoveTimer:SetValue( 120 )
|
||||
DamageMul:SetValue( 1 )
|
||||
CheckBoxpDamage:SetValue( 1 )
|
||||
CheckBoxFuel:SetValue( 1 )
|
||||
ScaleFuel:SetValue( 0.1 )
|
||||
|
||||
net.Start("simfphys_settings")
|
||||
net.WriteBool( true )
|
||||
net.WriteFloat( 120 )
|
||||
net.WriteFloat( 1 )
|
||||
net.WriteBool( true )
|
||||
net.WriteBool( true )
|
||||
net.WriteFloat( 0.1 )
|
||||
net.WriteTable( NewTractionData )
|
||||
net.SendToServer()
|
||||
end
|
||||
else
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Damage is "..((GetConVar( "sv_simfphys_enabledamage" ):GetInt() > 0) and "enabled" or "disabled") )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Damage Multiplicator is: "..GetConVar( "sv_simfphys_damagemultiplicator" ):GetFloat() )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local yes = "Players can take damage from collisions"
|
||||
local no = "Players can't take damage from collisions"
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( GetConVar( "sv_simfphys_playerdamage" ):GetBool() and yes or no )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
local lifetime = GetConVar( "sv_simfphys_gib_lifetime" ):GetInt()
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( (lifetime > 0) and ("Gib Lifetime = "..lifetime.." seconds") or "Gibs never despawn" )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Vehicles "..(GetConVar( "sv_simfphys_fuel" ):GetBool() and "are running on fuel" or "don't use fuel") )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
local fuelscale = math.Round( GetConVar( "sv_simfphys_fuelscale" ):GetFloat() , 3 )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Fuel tank size multiplier is: "..fuelscale )
|
||||
Label:SizeToContents()
|
||||
|
||||
if GetConVar( "sv_simfphys_teampassenger" ):GetBool() then
|
||||
y = y + 25
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Only players of the same team can enter the same vehicle" )
|
||||
Label:SizeToContents()
|
||||
end
|
||||
|
||||
y = y + 40
|
||||
local Label = vgui.Create( "DLabel", self.PropPanel )
|
||||
Label:SetPos( 30, y )
|
||||
Label:SetText( "Traction multiplier for..." )
|
||||
Label:SizeToContents()
|
||||
|
||||
y = y + 15
|
||||
for k, v in pairs( simfphys.TractionData ) do
|
||||
local tractionLabel = vgui.Create( "DLabel", self.PropPanel )
|
||||
tractionLabel:SetPos( 105, y )
|
||||
tractionLabel:SetText( k )
|
||||
tractionLabel:SizeToContents()
|
||||
|
||||
local tractionLabel = vgui.Create( "DLabel", self.PropPanel )
|
||||
tractionLabel:SetPos( 170, y )
|
||||
tractionLabel:SetText( "=" )
|
||||
tractionLabel:SizeToContents()
|
||||
|
||||
local tractionLabel = vgui.Create( "DLabel", self.PropPanel )
|
||||
tractionLabel:SetPos( 185, y )
|
||||
tractionLabel:SetText( math.Round(v,2) )
|
||||
tractionLabel:SizeToContents()
|
||||
|
||||
y = y + 25
|
||||
end
|
||||
y = y - 25
|
||||
end
|
||||
|
||||
Background:SetSize( 350, y )
|
||||
end
|
||||
|
||||
hook.Add( "LVS.PopulateVehicles", "!!!add_simfphys_vehicles", function( node, pnlContent, _ )
|
||||
|
||||
local tree = node:AddNode( "simfphys", "icon16/simfphys.png" )
|
||||
|
||||
local Categorised = {}
|
||||
|
||||
-- Add this list into the tormoil
|
||||
local Vehicles = list.Get( "simfphys_vehicles" )
|
||||
if Vehicles then
|
||||
for k, v in pairs( Vehicles ) do
|
||||
|
||||
v.Category = v.Category or "Other"
|
||||
Categorised[ v.Category ] = Categorised[ v.Category ] or {}
|
||||
v.ClassName = k
|
||||
v.PrintName = v.Name
|
||||
table.insert( Categorised[ v.Category ], v )
|
||||
|
||||
end
|
||||
end
|
||||
--
|
||||
-- Add a tree node for each category
|
||||
--
|
||||
|
||||
local IconList = list.Get( "ContentCategoryIcons" )
|
||||
|
||||
for CategoryName, v in SortedPairs( Categorised ) do
|
||||
local node
|
||||
|
||||
if CategoryName == "Base" then
|
||||
node = tree
|
||||
else
|
||||
local Icon = "icon16/simfphys_noicon.png"
|
||||
|
||||
if IconList and IconList[ "[simfphys] - "..CategoryName ] then
|
||||
Icon = IconList[ "[simfphys] - "..CategoryName ]
|
||||
end
|
||||
|
||||
-- Add a node to the tree
|
||||
node = tree:AddNode( CategoryName, Icon )
|
||||
end
|
||||
|
||||
-- When we click on the node - populate it using this function
|
||||
node.DoPopulate = function( self )
|
||||
|
||||
-- If we've already populated it - forget it.
|
||||
if self.PropPanel then return end
|
||||
|
||||
-- Create the container panel
|
||||
self.PropPanel = vgui.Create( "ContentContainer", pnlContent )
|
||||
self.PropPanel:SetVisible( false )
|
||||
self.PropPanel:SetTriggerSpawnlistChange( false )
|
||||
|
||||
for k, ent in SortedPairsByMemberValue( v, "PrintName" ) do
|
||||
|
||||
spawnmenu.CreateContentIcon( "simfphys_vehicles", self.PropPanel, {
|
||||
nicename = ent.PrintName or ent.ClassName,
|
||||
spawnname = ent.ClassName,
|
||||
material = "entities/"..ent.ClassName..".png",
|
||||
admin = ent.AdminOnly
|
||||
} )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- If we click on the node populate it and switch to it.
|
||||
node.DoClick = function( self )
|
||||
|
||||
self:DoPopulate()
|
||||
pnlContent:SwitchPanel( self.PropPanel )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- JOYSTICK
|
||||
if istable( jcon ) and file.Exists("lua/bin/gmcl_joystick_win32.dll", "GAME") then
|
||||
|
||||
local node = tree:AddNode( "Joystick Configuration", "icon16/joystick.png" )
|
||||
node.DoClick = function( self )
|
||||
RunConsoleCommand("joyconfig")
|
||||
end
|
||||
end
|
||||
|
||||
-- CLIENT SETTINGS
|
||||
local node = tree:AddNode( "Preferences", "icon16/ruby.png" )
|
||||
node.DoPopulate = function( self )
|
||||
if self.PropPanel then return end
|
||||
|
||||
self.PropPanel = vgui.Create( "ContentContainer", pnlContent )
|
||||
self.PropPanel:SetVisible( false )
|
||||
self.PropPanel:SetTriggerSpawnlistChange( false )
|
||||
|
||||
buildclientsettingsmenu( self )
|
||||
end
|
||||
node.DoClick = function( self )
|
||||
self:DoPopulate()
|
||||
pnlContent:SwitchPanel( self.PropPanel )
|
||||
end
|
||||
|
||||
-- SERVER SETTINGS
|
||||
local node = tree:AddNode( "Settings", "icon16/shield.png" )
|
||||
node.DoPopulate = function( self )
|
||||
self.PropPanel = vgui.Create( "ContentContainer", pnlContent )
|
||||
self.PropPanel:SetVisible( false )
|
||||
self.PropPanel:SetTriggerSpawnlistChange( false )
|
||||
|
||||
buildserversettingsmenu( self )
|
||||
end
|
||||
node.DoClick = function( self )
|
||||
self:DoPopulate()
|
||||
pnlContent:SwitchPanel( self.PropPanel )
|
||||
end
|
||||
|
||||
-- call original hook
|
||||
hook.Run( "SimfphysPopulateVehicles", pnlContent, tree, node )
|
||||
end )
|
||||
|
||||
|
||||
spawnmenu.AddContentType( "simfphys_vehicles", function( container, obj )
|
||||
if not obj.material then return end
|
||||
if not obj.nicename then return end
|
||||
if not obj.spawnname then return end
|
||||
|
||||
local icon = vgui.Create( "ContentIcon", container )
|
||||
icon:SetContentType( "simfphys_vehicles" )
|
||||
icon:SetSpawnName( obj.spawnname )
|
||||
icon:SetName( obj.nicename )
|
||||
icon:SetMaterial( obj.material )
|
||||
icon:SetAdminOnly( obj.admin )
|
||||
icon:SetColor( Color( 0, 0, 0, 255 ) )
|
||||
icon.DoClick = function()
|
||||
RunConsoleCommand( "simfphys_spawnvehicle", obj.spawnname )
|
||||
surface.PlaySound( "ui/buttonclickrelease.wav" )
|
||||
end
|
||||
icon.OpenMenu = function( icon )
|
||||
|
||||
local menu = DermaMenu()
|
||||
menu:AddOption( "Copy to Clipboard", function() SetClipboardText( obj.spawnname ) end )
|
||||
--menu:AddSpacer()
|
||||
--menu:AddOption( "Delete", function() icon:Remove() hook.Run( "SpawnlistContentChanged", icon ) end )
|
||||
menu:Open()
|
||||
|
||||
end
|
||||
|
||||
if IsValid( container ) then
|
||||
container:Add( icon )
|
||||
end
|
||||
|
||||
return icon
|
||||
|
||||
end )
|
||||
|
||||
list.Set( "ContentCategoryIcons", "simfphys", "icon16/simfphys.png" )
|
||||
list.Set( "ContentCategoryIcons", "[simfphys]", "icon16/simfphys.png" )
|
||||
list.Set( "ContentCategoryIcons", "[simfphys] - Half Life 2 - Prewar", "icon16/simfphys_prewar.png" )
|
||||
list.Set( "ContentCategoryIcons", "[simfphys] - Half Life 2 / Synergy", "icon16/simfphys_hl2.png" )
|
||||
list.Set( "ContentCategoryIcons", "[simfphys] - Armed Vehicles", "icon16/simfphys_armed.png" )
|
||||
Reference in New Issue
Block a user