new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / autorun / options_menu.lua

  1.  
  2. //
  3. // The server only runs this file so it can send it to the client
  4. //
  5.  
  6. if ( SERVER ) then AddCSLuaFile( "options_menu.lua" ) return end
  7.  
  8. //
  9. // The PlayerOptionsModel defines which models will
  10. // appear on the player model menu. It doesn't define
  11. // which models are valid. Just which choices will appear.
  12. //
  13. // Look at player_manager to see how to define which models
  14. // are valid.
  15. //
  16.  
  17. list.Set( "PlayerOptionsModel", "kleiner",              "models/player/Kleiner.mdl" )
  18. list.Set( "PlayerOptionsModel", "mossman",              "models/player/mossman.mdl" )
  19. list.Set( "PlayerOptionsModel", "alyx",                 "models/player/alyx.mdl" )
  20. list.Set( "PlayerOptionsModel", "barney",               "models/player/barney.mdl" )
  21. list.Set( "PlayerOptionsModel", "breen",                "models/player/breen.mdl" )
  22. list.Set( "PlayerOptionsModel", "odessa",               "models/player/odessa.mdl" )
  23. list.Set( "PlayerOptionsModel", "zombie",               "models/player/classic.mdl" )
  24. list.Set( "PlayerOptionsModel", "charple",              "models/player/charple01.mdl" )
  25. list.Set( "PlayerOptionsModel", "combine",              "models/player/combine_soldier.mdl" )
  26. list.Set( "PlayerOptionsModel", "prison",               "models/player/combine_soldier_prisonguard.mdl" )
  27. list.Set( "PlayerOptionsModel", "super",                "models/player/combine_super_soldier.mdl" )
  28. list.Set( "PlayerOptionsModel", "police",               "models/player/police.mdl" )
  29. list.Set( "PlayerOptionsModel", "gman",                 "models/player/gman_high.mdl" )
  30. list.Set( "PlayerOptionsModel", "stripped",     "models/player/soldier_stripped.mdl" )
  31. list.Set( "PlayerOptionsModel", "fzombie",              "models/player/Zombiefast.mdl" )
  32.  
  33. list.Set( "PlayerOptionsModel",  "female1",             "models/player/Group01/female_01.mdl" )
  34. list.Set( "PlayerOptionsModel",  "female2",             "models/player/Group01/female_02.mdl" )
  35. list.Set( "PlayerOptionsModel",  "female3",             "models/player/Group01/female_03.mdl" )
  36. list.Set( "PlayerOptionsModel",  "female4",             "models/player/Group01/female_04.mdl" )
  37. list.Set( "PlayerOptionsModel",  "female5",             "models/player/Group01/female_06.mdl" )
  38. list.Set( "PlayerOptionsModel", "female6",              "models/player/Group01/female_07.mdl" )
  39. list.Set( "PlayerOptionsModel", "female7",              "models/player/Group03/female_01.mdl" )
  40. list.Set( "PlayerOptionsModel", "female8",              "models/player/Group03/female_02.mdl" )
  41. list.Set( "PlayerOptionsModel", "female9",              "models/player/Group03/female_03.mdl" )
  42. list.Set( "PlayerOptionsModel", "female10",             "models/player/Group03/female_04.mdl" )
  43. list.Set( "PlayerOptionsModel", "female11",             "models/player/Group03/female_06.mdl" )
  44. list.Set( "PlayerOptionsModel", "female12",             "models/player/Group03/female_07.mdl" )
  45.  
  46. list.Set( "PlayerOptionsModel", "male1",                "models/player/Group01/male_01.mdl" )
  47. list.Set( "PlayerOptionsModel", "male2",                "models/player/Group01/male_02.mdl" )
  48. list.Set( "PlayerOptionsModel", "male3",                "models/player/Group01/male_03.mdl" )
  49. list.Set( "PlayerOptionsModel", "male4",                "models/player/Group01/male_04.mdl" )
  50. list.Set( "PlayerOptionsModel", "male5",                "models/player/Group01/male_05.mdl" )
  51. list.Set( "PlayerOptionsModel", "male6",                "models/player/Group01/male_06.mdl" )
  52. list.Set( "PlayerOptionsModel", "male7",                "models/player/Group01/male_07.mdl" )
  53. list.Set( "PlayerOptionsModel",  "male8",               "models/player/Group01/male_08.mdl" )
  54. list.Set( "PlayerOptionsModel",  "male9",               "models/player/Group01/male_09.mdl" )
  55.  
  56. list.Set( "PlayerOptionsModel", "male10",               "models/player/Group03/male_01.mdl" )
  57. list.Set( "PlayerOptionsModel", "male11",               "models/player/Group03/male_02.mdl" )
  58. list.Set( "PlayerOptionsModel", "male12",               "models/player/Group03/male_03.mdl" )
  59. list.Set( "PlayerOptionsModel", "male13",               "models/player/Group03/male_04.mdl" )
  60. list.Set( "PlayerOptionsModel", "male14",               "models/player/Group03/male_05.mdl" )
  61. list.Set( "PlayerOptionsModel", "male15",               "models/player/Group03/male_06.mdl" )
  62. list.Set( "PlayerOptionsModel", "male16",               "models/player/Group03/male_07.mdl" )
  63. list.Set( "PlayerOptionsModel", "male17",               "models/player/Group03/male_08.mdl" )
  64. list.Set( "PlayerOptionsModel", "male18",               "models/player/Group03/male_09.mdl" )
  65.  
  66. // Todo: If owns ep1 or 2
  67. list.Set( "PlayerOptionsModel", "zombine",              "models/player/zombie_soldier.mdl" )
  68.  
  69. // Todo: If owns ep2 (Fix eyes first)
  70. //list.Set( "PlayerOptionsModel", "magnusson",          "models/player/magnusson.mdl" )
  71.  
  72. //
  73. //
  74. //
  75. local function PlayerModel( CPanel )
  76.  
  77.         local PanelSelect = CPanel:PanelSelect()
  78.         PanelSelect:SetAutoSize( true )
  79.        
  80.         for name, model in pairs( list.Get( "PlayerOptionsModel" ) ) do
  81.        
  82.                 local icon = vgui.Create( "SpawnIcon" )
  83.                 icon:SetModel( model )
  84.                 icon:SetSize( 64, 64 )
  85.                 icon:SetTooltip( name )
  86.                
  87.                 PanelSelect:AddPanel( icon, { cl_playermodel = name } )
  88.        
  89.         end
  90.  
  91.         // Work it out so we have 2 per row
  92.         //local NumRows = Format( "%i", (table.Count(ModelList)+1) / 2 )
  93.        
  94.         //local params = { Options = {}, ConVar = "cl_playermodel", Label = "#PlayerModel", Height = "100", Width = "100", Rows = NumRows }
  95.        
  96.         //for k, v in pairs( ModelList ) do
  97.         //      params.Options[ k ] = { Material = v, Value = k, cl_playermodel = k }
  98.         //end
  99.        
  100.         //CPanel:AddControl( "MaterialGallery", params )
  101.  
  102. end
  103.  
  104.  
  105. local function PlayerSettings( CPanel )
  106.  
  107.         CPanel:AddControl( "Header", { Text = "#Player Settings" }  )
  108.  
  109.         // Name is now set via Steam Community
  110.         //CPanel:AddControl( "TextBox", { Label = "#Name",                      Command = "name",                       WaitForEnter = "1" }  )
  111.        
  112.         CPanel:AddControl( "TextBox", { Label = "#Location",            Command = "cl_location",        WaitForEnter = "1" }  )
  113.         CPanel:AddControl( "TextBox", { Label = "#Website",             Command = "cl_website",         WaitForEnter = "1" }  )
  114.         CPanel:AddControl( "TextBox", { Label = "#EmailAddress",        Command = "cl_email",           WaitForEnter = "1" }  )
  115.         CPanel:AddControl( "TextBox", { Label = "#AIMName",             Command = "cl_aim",             WaitForEnter = "1" }  )
  116.         CPanel:AddControl( "TextBox", { Label = "#MSNName",             Command = "cl_msn",             WaitForEnter = "1" }  )
  117.         CPanel:AddControl( "TextBox", { Label = "#GTalkName",           Command = "cl_gtalk",           WaitForEnter = "1" }  )
  118.         CPanel:AddControl( "TextBox", { Label = "#XFireName",           Command = "cl_xfire",           WaitForEnter = "1" }  )
  119.        
  120.         CPanel:AddControl( "Slider", { Label = "#Screenshot Quality",   Type = "Integer",       Command = "jpeg_quality",       Min = "0",              Max = "100" }  )
  121.        
  122.         CPanel:AddControl( "CheckBox", { Label = "#ShowHints",          Command = "cl_showhints" }  )
  123.        
  124. end
  125.  
  126.  
  127. local function PerformanceOptions( CPanel )
  128.  
  129.         CPanel:AddControl( "Header", { Text = "#Performance Tweaks" }  )
  130.        
  131.         CPanel:AddControl( "Slider",    { Label = "#Max Decals",        Type = "Integer",       Command = "r_decals",   Min = "0",              Max = "4096" }  )
  132.         CPanel:AddControl( "Slider",    { Label = "#Model LOD", Type = "Integer",       Command = "r_lod",      Min = "-1",     Max = "5" }  )
  133.        
  134.         CPanel:AddControl( "CheckBox",  { Label = "#Shadows",   Command = "r_shadows" }  )     
  135.        
  136.         CPanel:AddControl( "CheckBox",  { Label = "#DrawDetailProps",   Command = "r_drawdetailprops" }  )     
  137.         CPanel:AddControl( "Slider",    { Label = "#DetailDistance",    Type = "Integer",       Command = "cl_detaildist",      Min = "64",     Max = "4096" }  )      
  138.  
  139. end
  140.  
  141. local function HideOptions( CPanel )
  142.  
  143.         CPanel:AddControl( "Header", { Text = "#Hide Options" }  )
  144.  
  145.         CPanel:AddControl( "CheckBox", { Label = "#DrawThrusterEffects",        Command = "cl_drawthrusterseffects" }  )
  146.         CPanel:AddControl( "CheckBox", { Label = "#DrawHoverBalls",             Command = "cl_drawhoverballs" }  )
  147.         CPanel:AddControl( "CheckBox", { Label = "#DrawCameras",                        Command = "cl_drawcameras" }  )
  148.         CPanel:AddControl( "CheckBox", { Label = "#DrawPhysgunBeams",           Command = "physgun_drawbeams" }  )
  149.  
  150. end
  151.  
  152. local function VisualOptions( CPanel )
  153.  
  154.         CPanel:AddControl( "Header", { Text = "#Visual Tweaks" }  )
  155.  
  156.         CPanel:AddControl( "Slider", { Label = "#Net Graph",    Type = "Integer",       Command = "net_graph",          Min = "0",              Max = "3" }  )
  157.         CPanel:AddControl( "Slider", { Label = "#Show FPS",             Type = "Integer",       Command = "cl_showfps",         Min = "0",              Max = "2" }  )
  158.  
  159.         CPanel:AddControl( "CheckBox", { Label = "#Show_Low_Res_Textures",      Command = "mat_showlowresimage" }  )   
  160.         CPanel:AddControl( "CheckBox", { Label = "#Wireframe",                          Command = "mat_wireframe" }  ) 
  161.  
  162. end
  163.        
  164. local function FogOptions( CPanel )
  165.  
  166.         CPanel:AddControl( "Header", { Text = "#Fog Options" }  )
  167.        
  168.         local params = { Label = "#Fog_Presets", MenuButton = "1", Folder = "fog", Options = {}, CVars = {} }
  169.        
  170.         params.Options[ "#Default" ] = {        fog_start =                             "-1",
  171.                                                                 fog_startskybox =               "-1",
  172.                                                                 fog_end =                               "-1",
  173.                                                                 fog_endskybox =                 "-1",
  174.                                                                 fog_color_r =                   "255",
  175.                                                                 fog_color_g =                   "255",
  176.                                                                 fog_color_b =                   "255" }
  177.                                                                
  178.         params.CVars = { "fog_start",
  179.                                                 "fog_startskybox",
  180.                                                 "fog_end",
  181.                                                 "fog_endskybox",
  182.                                                 "fog_color_r",
  183.                                                 "fog_color_g",
  184.                                                 "fog_color_b" }
  185.        
  186.         CPanel:AddControl( "ComboBox", params )
  187.        
  188.         CPanel:AddControl( "CheckBox", { Label = "#Fog_Override",       Command = "fog_override" }  )  
  189.         local Slider = CPanel:AddControl( "Slider", { Label = "#Fog_Start", Type = "Float", Command = "fog_start", Min = "0", Max = "10000" }  )
  190.        
  191.         // Update the skybox convar too
  192.         function Slider:OnValueChanged( newval )
  193.                 RunConsoleCommand( "fog_startskybox", newval )
  194.         end
  195.        
  196.         local Slider = CPanel:AddControl( "Slider", { Label = "#Fog_End", Type = "Float", Command = "fog_end", Min = "0", Max = "10000" }  )
  197.        
  198.         // Update the skybox convar too
  199.         function Slider:OnValueChanged( newval )
  200.                 RunConsoleCommand( "fog_endskybox", newval )
  201.         end
  202.        
  203.         CPanel:AddControl( "Color", { Label = "#Fog_Color", Red = "fog_color_r", Green = "fog_color_g", Blue = "fog_color_b", ShowAlpha = "0", ShowHSV = "1", ShowRGB = "1", Multiplier = "255" }  )
  204.  
  205. end
  206.        
  207. /*
  208. // Tool Menu
  209. */
  210. local function PopulateOptionMenus()
  211.  
  212.         spawnmenu.AddToolMenuOption( "Options", "Player", "Settings", "#Settings", "", "", PlayerSettings )
  213.         spawnmenu.AddToolMenuOption( "Options", "Player", "Model", "#Model", "", "", PlayerModel )
  214.        
  215.         spawnmenu.AddToolMenuOption( "Options", "Performance", "Tweaks", "#Tweaks", "", "", PerformanceOptions )
  216.        
  217.         spawnmenu.AddToolMenuOption( "Options", "Visuals",      "Hiding",       "#Hiding",      "", "", HideOptions )
  218.         spawnmenu.AddToolMenuOption( "Options", "Visuals",      "Fog",          "#Fog",         "", "", FogOptions )
  219.  
  220. end
  221.  
  222. hook.Add( "PopulateToolMenu", "PopulateOptionMenus", PopulateOptionMenus )
  223.  
  224. /*
  225. // Categories
  226. */
  227. local function CreateOptionsCategories()
  228.  
  229.         spawnmenu.AddToolCategory( "Options",   "Player",               "#Player" )
  230.         spawnmenu.AddToolCategory( "Options",   "Performance",  "#Performance" )
  231.         spawnmenu.AddToolCategory( "Options",   "Visuals",              "#Visuals" )
  232.  
  233. end    
  234.  
  235. hook.Add( "AddToolMenuCategories", "CreateOptionsCategories", CreateOptionsCategories )
  236.  
  237.