new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / menu / getmaps.lua

  1.  
  2. if ( g_MapList ) then return end
  3.  
  4. local MapPatterns = {}
  5.  
  6. MapPatterns[ "^de_" ] = "Counter-Strike"
  7. MapPatterns[ "^cs_" ] = "Counter-Strike"
  8. MapPatterns[ "^es_" ] = "Counter-Strike"
  9.  
  10. MapPatterns[ "^cp_" ] = "Team Fortress 2"
  11. MapPatterns[ "^ctf_" ] = "Team Fortress 2"
  12. MapPatterns[ "^tc_" ] = "Team Fortress 2"
  13. MapPatterns[ "^pl_" ] = "Team Fortress 2"
  14. MapPatterns[ "^arena_" ] = "Team Fortress 2"
  15. MapPatterns[ "^koth_" ] = "Team Fortress 2"
  16.  
  17. MapPatterns[ "^dod_" ] = "Day Of Defeat"
  18.  
  19. MapPatterns[ "^d1_" ] = "Half-Life 2"
  20. MapPatterns[ "^d2_" ] = "Half-Life 2"
  21. MapPatterns[ "^d3_" ] = "Half-Life 2"
  22. MapPatterns[ "credits" ] = "Half-Life 2"
  23.  
  24. MapPatterns[ "^ep1_" ] = "Half-Life 2: Episode 1"
  25. MapPatterns[ "^ep2_" ] = "Half-Life 2: Episode 2"
  26. MapPatterns[ "^ep3_" ] = "Half-Life 2: Episode 3"
  27.  
  28. MapPatterns[ "^escape_" ] = "Portal"
  29. MapPatterns[ "^testchmb_" ] = "Portal"
  30.  
  31. MapPatterns[ "^gm_" ] = "Garry's Mod"
  32.  
  33. MapPatterns[ "^c0a" ] = "Half-Life: Source"
  34. MapPatterns[ "^c1a" ] = "Half-Life: Source"
  35. MapPatterns[ "^c2a" ] = "Half-Life: Source"
  36. MapPatterns[ "^c3a" ] = "Half-Life: Source"
  37. MapPatterns[ "^c4a" ] = "Half-Life: Source"
  38. MapPatterns[ "^c5a" ] = "Half-Life: Source"
  39. MapPatterns[ "^t0a" ] = "Half-Life: Source"
  40.  
  41. MapPatterns[ "boot_camp" ] = "Half-Life: Source Deathmatch"
  42. MapPatterns[ "bounce" ] = "Half-Life: Source Deathmatch"
  43. MapPatterns[ "crossfire" ] = "Half-Life: Source Deathmatch"
  44. MapPatterns[ "datacore" ] = "Half-Life: Source Deathmatch"
  45. MapPatterns[ "frenzy" ] = "Half-Life: Source Deathmatch"
  46. MapPatterns[ "rapidcore" ] = "Half-Life: Source Deathmatch"
  47. MapPatterns[ "stalkyard" ] = "Half-Life: Source Deathmatch"
  48. MapPatterns[ "snarkpit" ] = "Half-Life: Source Deathmatch"
  49. MapPatterns[ "subtransit" ] = "Half-Life: Source Deathmatch"
  50. MapPatterns[ "undertow" ] = "Half-Life: Source Deathmatch"
  51. MapPatterns[ "lambda_bunker" ] = "Half-Life: Source Deathmatch"
  52.  
  53. MapPatterns[ "dm_" ] = "Half-Life 2 Deathmatch"
  54.  
  55. //
  56. // Load patterns from the gamemodes
  57. //
  58. local GameModes = GetGamemodes()
  59.  
  60. for k, gm in pairs( GetGamemodes() ) do
  61.  
  62.         local info = file.Read( "../gamemodes/"..gm.Name.."/info.txt" )
  63.         local info = KeyValuesToTable( info )
  64.         local Name = info.name or "Unnammed Gamemode"
  65.         local Patterns = info.mappattern or {}
  66.        
  67.         for k, pattern in pairs( Patterns ) do
  68.                 MapPatterns[ pattern ] = Name
  69.         end
  70.        
  71. end
  72.  
  73. local IgnoreMaps = { "background", "^test_", "^styleguide", "^devtest" }
  74.  
  75. matNoIcon = Material( "maps/noicon" )
  76.  
  77. g_MapList = {}
  78. g_MapListCategorised = {}
  79.  
  80. for k, v in pairs( file.Find( "../maps/*.bsp" ) ) do
  81.  
  82.         local Ignore = false
  83.         for _, ignore in pairs( IgnoreMaps ) do
  84.                 if ( string.find( v, ignore ) ) then
  85.                         Ignore = true
  86.                 end
  87.         end
  88.        
  89.         // Don't add useless maps
  90.         if ( !Ignore ) then
  91.        
  92.                 local Mat = nil
  93.                 local Category = "Other"
  94.                 local name = string.gsub( v, ".bsp", "" )
  95.                 local lowername = string.lower( v )
  96.        
  97.                 Mat = "maps/"..name..".vmt"
  98.                
  99.                 for pattern, category in pairs( MapPatterns ) do
  100.                         if ( string.find( lowername, pattern ) ) then
  101.                                 Category = category
  102.                         end
  103.                 end
  104.  
  105.                 g_MapList[ v ] = { Material = Mat, Name = name, Category = Category }
  106.                                          
  107.         end
  108.  
  109. end
  110.  
  111. for k, v in pairs( g_MapList ) do
  112.  
  113.         g_MapListCategorised[ v.Category ] = g_MapListCategorised[ v.Category ] or {}
  114.         g_MapListCategorised[ v.Category ][ v.Name ] = v
  115.  
  116. end
  117.