Advertisement
GlorifiedPig

Untitled

Mar 19th, 2021
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.26 KB | None | 0 0
  1.  
  2. GlorifiedLeveling.Themes = {}
  3.  
  4. local registeredThemes = {}
  5. local defaultTheme = "Default"
  6. local selectedTheme
  7.  
  8. function GlorifiedLeveling.Themes.Register( id, name, data )
  9.     if not registeredThemes[id] then
  10.         registeredThemes[id] = {}
  11.     end
  12.  
  13.     registeredThemes[id].DisplayName = name
  14.     registeredThemes[id].Data = id == defaultTheme and data or table.Merge( GlorifiedLeveling.Themes.Get( defaultTheme ).Data, data )
  15. end
  16.  
  17. function GlorifiedLeveling.Themes.Get( id )
  18.     return registeredThemes[id] or registeredThemes[defaultTheme] or false
  19. end
  20.  
  21. function GlorifiedLeveling.Themes.GetCurrent()
  22.     return GlorifiedLeveling.Themes.Get( selectedTheme )
  23. end
  24.  
  25. function GlorifiedLeveling.Themes.GetAll()
  26.     return registeredThemes
  27. end
  28.  
  29. function GlorifiedLeveling.Themes.GetByName( name )
  30.     local returnedTheme = registeredThemes[defaultTheme]
  31.     for k, v in pairs( registeredThemes ) do
  32.         if v.DisplayName == name then returnedTheme = v break end
  33.     end
  34.     return returnedTheme
  35. end
  36.  
  37. function GlorifiedLeveling.Themes.GenerateFonts()
  38.     local fontsTable = GlorifiedLeveling.Themes.GetCurrent().Data.Fonts
  39.     if fontsTable then
  40.         for k, v in pairs( fontsTable ) do
  41.             if isfunction( v.size ) then
  42.                 v.size = v.size()
  43.             end
  44.  
  45.             surface.CreateFont( "GlorifiedLeveling." .. k, v )
  46.         end
  47.     end
  48. end
  49.  
  50. function GlorifiedLeveling.Themes.Select( id )
  51.     if registeredThemes[id] then
  52.         GlorifiedLeveling.Themes.GenerateFonts()
  53.  
  54.         cookie.Set( "GlorifiedLeveling.Theme", tostring( id ) )
  55.         selectedTheme = tostring( id )
  56.  
  57.         hook.Run( "GlorifiedLeveling.ThemeUpdated", GlorifiedLeveling.Themes.GetCurrent() )
  58.     end
  59. end
  60.  
  61. hook.Add( "OnScreenSizeChanged", "GlorifiedLeveling.Themes.OnScreenSizeChanged", function()
  62.     GlorifiedLeveling.Themes.GenerateFonts()
  63. end )
  64.  
  65. hook.Add( "InitPostEntity", "GlorifiedLeveling.Themes.InitPostEntity", function()
  66.     GlorifiedLeveling.Themes.Select( cookie.GetString( "GlorifiedLeveling.Theme", defaultTheme ) )
  67. end )
  68.  
  69. concommand.Add( "glorifiedleveling_theme", function( ply, args )
  70.     if ply != LocalPlayer() then return end
  71.     local theme = string.lower( args[1] )
  72.     GlorifiedLeveling.Themes.Select( theme )
  73. end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement