new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / menu / map_options.lua

  1. //=============================================================================//
  2. //  ___  ___   _   _   _    __   _   ___ ___ __ __
  3. // |_ _|| __| / \ | \_/ |  / _| / \ | o \ o \\ V /
  4. //  | | | _| | o || \_/ | ( |_n| o ||   /   / \ /
  5. //  |_| |___||_n_||_| |_|  \__/|_n_||_|\\_|\\ |_|  2007
  6. //                                                                               
  7. //=============================================================================//
  8.  
  9. language.Add( "Server_Settings", "Server Settings" )
  10. language.Add( "Server_Name:", "Server Name:" )
  11.  
  12. language.Add( "GameModeChoice", "Gamemode Choice" )
  13. language.Add( "Override:", "Override:" )
  14. language.Add( "Default:", "Default:" )
  15. language.Add( "defaultgamemodehelp", "If a map doesn't have a gamemode set, we will use this gamemode. This should be 'sandbox' unless you have a good reason for changing it." )
  16. language.Add( "overridegamemodehelp", "If this isn't blank we will always use this gamemode, no matter what. This should be blank unless you have a good reason for changing it." )
  17.  
  18. language.Add( "Max_Players:", "Max Players:" )
  19. language.Add( "Lan_Game", "Local Network Game" )
  20.  
  21.  
  22. local PANEL = {}
  23.  
  24. /*---------------------------------------------------------
  25.  
  26. ---------------------------------------------------------*/
  27. function PANEL:Init()
  28.  
  29.         self:EnableVerticalScrollbar( true )
  30.        
  31.         self:SetSpacing( 10 )
  32.         self:SetPadding( 10 )
  33.  
  34. end
  35.  
  36. function PANEL:SetupSinglePlayer()
  37.  
  38.         local GameModes = GetGamemodes()
  39.  
  40.         local GameModeSettings = vgui.Create( "DForm", self )
  41.                 GameModeSettings:SetName( "#GameModeChoice" )
  42.        
  43.                 // Default Gamemode
  44.                 local mc = GameModeSettings:MultiChoice( "#Default:", "sv_defaultgamemode" )
  45.                 for k, v in ipairs( GameModes ) do
  46.                         mc:AddChoice( v.Name )
  47.                 end
  48.                
  49.                 GameModeSettings:Help( "#defaultgamemodehelp" )
  50.                        
  51.                 // Gamemode Override
  52.                 local mc = GameModeSettings:MultiChoice( "#Override:", "sv_gamemodeoverride" )
  53.                 mc:AddChoice( "" )
  54.                 for k, v in ipairs( GameModes ) do
  55.                         mc:AddChoice( v.Name )
  56.                 end
  57.                
  58.                 GameModeSettings:Help( "#overridegamemodehelp" )
  59.                
  60.         self:AddItem( GameModeSettings )
  61.        
  62.         self:AddGamemodeSettings()
  63.        
  64. end
  65.  
  66.  
  67. function PANEL:SetupMultiPlayer()
  68.  
  69.         local ServerSettings = vgui.Create( "DForm", self )
  70.                 ServerSettings:SetName( "#Server_Settings" )
  71.        
  72.                 ServerSettings:TextEntry( "#Server_Name:", "hostname" )
  73.                 ServerSettings:NumberWang( "#Max_Players:", "sv_maxplayers", 2, 64, 0 )
  74.                 ServerSettings:CheckBox( "#Lan_Game", "sv_lan" )
  75.                
  76.         self:AddItem( ServerSettings )
  77.                
  78.         // Add the gamemode options
  79.         self:SetupSinglePlayer()
  80.                
  81. end
  82.  
  83. function PANEL:AddGamemodeSettings()
  84.  
  85.         local files = file.Find( "../settings/server_settings/*.txt" )
  86.         for k, filename in pairs( files ) do
  87.        
  88.                 local settings_file = file.Read( "../settings/server_settings/"..filename )
  89.                
  90.                 if ( settings_file ) then
  91.                         local Settings = KeyValuesToTable( settings_file )
  92.                         self:AddSettings( Settings )
  93.                 end
  94.        
  95.         end
  96.  
  97. end
  98.  
  99. function PANEL:AddSettings( tab )
  100.  
  101.         if ( !tab ) then return end
  102.         if ( !tab.title ) then return end
  103.        
  104.         local Form = vgui.Create( "DForm", self )
  105.                 self:AddItem( Form )
  106.                 Form:SetName( tab.title )
  107.        
  108.         // This multiple looping stuff kinda sucks
  109.         // But I want to group the different controls
  110.         // without breaking backwards compatibility
  111.        
  112.         // Checkbox
  113.         for k, v in pairs( tab.settings ) do
  114.        
  115.                 if ( v.type == "CheckBox" ) then
  116.                         Form:CheckBox( v.text, k )
  117.                         tab.settings[ k ] = nil
  118.                 end
  119.        
  120.         end
  121.        
  122.         // Numeric
  123.         for k, v in pairs( tab.settings ) do
  124.        
  125.                 if ( v.type == "Numeric" ) then
  126.                         Form:NumberWang( v.text, k, v.low or 0, v.high or 200, v.decimals or 0 )
  127.                         tab.settings[ k ] = nil
  128.                 end
  129.        
  130.         end
  131.        
  132.         // Text
  133.         for k, v in pairs( tab.settings ) do
  134.        
  135.                 Form:TextEntry( v.text, k )
  136.        
  137.         end
  138.  
  139. end
  140.  
  141. vgui.Register( "MapListOptions", PANEL, "DPanelList" )
  142.