ElvUI/Media/SharedMedia.lua

239 lines
6.9 KiB
Lua
Raw Permalink Normal View History

2020-11-13 14:27:50 -05:00
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local LSM = E.Libs.LSM
E.Media = {
Fonts = {},
Sounds = {},
ChatEmojis = {},
ChatLogos = {},
Textures = {}
}
local format, ipairs, type, pcall = format, ipairs, type, pcall
local westAndRU = LSM.LOCALE_BIT_ruRU + LSM.LOCALE_BIT_western
do
local t, d = '|T%s%s|t', ''
function E:TextureString(texture, data)
return format(t, texture, data or d)
end
end
local MediaKey = {
font = 'Fonts',
sound = 'Sounds',
emoji = 'ChatEmojis',
logo = 'ChatLogos',
texture = 'Textures'
}
local MediaPath = {
font = [[Interface\AddOns\ElvUI\Media\Fonts\]],
sound = [[Interface\AddOns\ElvUI\Media\Sounds\]],
emoji = [[Interface\AddOns\ElvUI\Media\ChatEmojis\]],
logo = [[Interface\AddOns\ElvUI\Media\ChatLogos\]],
texture = [[Interface\AddOns\ElvUI\Media\Textures\]]
}
local function AddMedia(Type, File, Name, CustomType, Mask)
local path = MediaPath[Type]
if path then
local key = File:gsub('%.%w-$','')
local file = path .. File
local pathKey = MediaKey[Type]
if pathKey then E.Media[pathKey][key] = file end
if Name then -- Register to LSM
local nameKey = (Name == true and key) or Name
if type(CustomType) == 'table' then
for _, name in ipairs(CustomType) do
LSM:Register(name, nameKey, file, Mask)
end
else
LSM:Register(CustomType or Type, nameKey, file, Mask)
end
end
end
end
-- Name as true will add the Key as it's name
AddMedia('font','ActionMan.ttf', 'Action Man')
AddMedia('font','ContinuumMedium.ttf', 'Continuum Medium')
AddMedia('font','DieDieDie.ttf', 'Die Die Die!')
AddMedia('font','PTSansNarrow.ttf', 'PT Sans Narrow', nil, westAndRU)
AddMedia('font','Expressway.ttf', true, nil, westAndRU)
AddMedia('font','Homespun.ttf', true, nil, westAndRU)
AddMedia('font','Invisible.ttf')
AddMedia('sound','AwwCrap.ogg', 'Awww Crap')
AddMedia('sound','BbqAss.ogg', 'BBQ Ass')
AddMedia('sound','DumbShit.ogg', 'Dumb Shit')
AddMedia('sound','MamaWeekends.ogg', 'Mama Weekends')
AddMedia('sound','RunFast.ogg', 'Runaway Fast')
AddMedia('sound','StopRunningSlimeBall.ogg', 'Stop Running')
AddMedia('sound','Whisper.ogg', 'Whisper Alert')
AddMedia('sound','YankieBangBang.ogg', 'Big Yankie Devil')
AddMedia('sound','HelloKitty.ogg')
AddMedia('sound','HarlemShake.ogg')
AddMedia('texture','GlowTex', 'ElvUI GlowBorder', 'border')
AddMedia('texture','NormTex', 'ElvUI Gloss', 'statusbar')
AddMedia('texture','NormTex2', 'ElvUI Norm', 'statusbar')
AddMedia('texture','White8x8', 'ElvUI Blank', {'statusbar','background'})
AddMedia('texture','Minimalist', true, 'statusbar')
AddMedia('texture','Melli', true, 'statusbar')
AddMedia('texture','Arrow')
AddMedia('texture','ArrowRight')
AddMedia('texture','ArrowUp')
AddMedia('texture','Arrow1')
AddMedia('texture','Arrow2')
AddMedia('texture','BagNewItemGlow')
AddMedia('texture','BagQuestIcon')
AddMedia('texture','BagUpgradeIcon')
AddMedia('texture','Black8x8')
AddMedia('texture','BubbleTex')
AddMedia('texture','ChatEmojis')
AddMedia('texture','ChatLogos')
AddMedia('texture','Close')
AddMedia('texture','Combat')
AddMedia('texture','Copy')
AddMedia('texture','Cross')
AddMedia('texture','DPS')
AddMedia('texture','ExitVehicle')
AddMedia('texture','Healer')
AddMedia('texture','HelloKitty')
AddMedia('texture','HelloKittyChat')
AddMedia('texture','Help')
AddMedia('texture','Highlight')
AddMedia('texture','LeaderHQ')
AddMedia('texture','LogoTop')
AddMedia('texture','LogoTopSmall')
AddMedia('texture','LogoBottom')
AddMedia('texture','LogoBottomSmall')
AddMedia('texture','Mail')
AddMedia('texture','Minus')
AddMedia('texture','MinusButton')
AddMedia('texture','Pause')
AddMedia('texture','PhaseBorder')
AddMedia('texture','PhaseCenter')
AddMedia('texture','Play')
AddMedia('texture','Plus')
AddMedia('texture','PlusButton')
AddMedia('texture','Reset')
AddMedia('texture','Resting')
AddMedia('texture','Resting1')
AddMedia('texture','RolesHQ')
AddMedia('texture','RoleIcons')
AddMedia('texture','SkullIcon')
AddMedia('texture','Smooth')
AddMedia('texture','Spark')
AddMedia('texture','Tank')
AddMedia('texture','TukuiLogo')
AddMedia('emoji','Angry')
AddMedia('emoji','Blush')
AddMedia('emoji','BrokenHeart')
AddMedia('emoji','CallMe')
AddMedia('emoji','Cry')
AddMedia('emoji','Facepalm')
AddMedia('emoji','Grin')
AddMedia('emoji','Heart')
AddMedia('emoji','HeartEyes')
AddMedia('emoji','Joy')
AddMedia('emoji','Kappa')
AddMedia('emoji','Meaw')
AddMedia('emoji','MiddleFinger')
AddMedia('emoji','Murloc')
AddMedia('emoji','OkHand')
AddMedia('emoji','OpenMouth')
AddMedia('emoji','Poop')
AddMedia('emoji','Rage')
AddMedia('emoji','SadKitty')
AddMedia('emoji','Scream')
AddMedia('emoji','ScreamCat')
AddMedia('emoji','SemiColon')
AddMedia('emoji','SlightFrown')
AddMedia('emoji','Smile')
AddMedia('emoji','Smirk')
AddMedia('emoji','Sob')
AddMedia('emoji','StuckOutTongue')
AddMedia('emoji','StuckOutTongueClosedEyes')
AddMedia('emoji','Sunglasses')
AddMedia('emoji','Thinking')
AddMedia('emoji','ThumbsUp')
AddMedia('emoji','Wink')
AddMedia('emoji','ZZZ')
AddMedia('logo','ElvRainbow')
AddMedia('logo','ElvSimpy')
AddMedia('logo','ElvBlue')
AddMedia('logo','ElvGreen')
AddMedia('logo','ElvOrange')
AddMedia('logo','ElvPink')
AddMedia('logo','ElvPurple')
AddMedia('logo','ElvYellow')
AddMedia('logo','ElvRed')
AddMedia('logo','Bathrobe')
AddMedia('logo','HelloKitty')
AddMedia('logo','Illuminati')
AddMedia('logo','MrHankey')
AddMedia('logo','Rainbow')
AddMedia('logo','TyroneBiggums')
AddMedia('logo','Burger')
AddMedia('logo','Clover')
AddMedia('logo','Cupcake')
AddMedia('logo','Hibiscus')
AddMedia('logo','Lion')
AddMedia('logo','Skull')
AddMedia('logo','Unicorn')
AddMedia('logo','FoxDeathKnight')
AddMedia('logo','FoxDemonHunter')
AddMedia('logo','FoxDruid')
AddMedia('logo','FoxHunter')
AddMedia('logo','FoxMage')
AddMedia('logo','FoxMonk')
AddMedia('logo','FoxPaladin')
AddMedia('logo','FoxPriest')
AddMedia('logo','FoxRogue')
AddMedia('logo','FoxShaman')
AddMedia('logo','FoxWarlock')
AddMedia('logo','FoxWarrior')
AddMedia('logo','DeathlyHallows')
AddMedia('logo','GoldShield')
AddMedia('logo','Gem')
do -- LSM Font Preloader ~Simpy
local preloader = CreateFrame('Frame')
preloader:SetPoint('TOP', UIParent, 'BOTTOM', 0, -500)
preloader:SetSize(100, 100)
local cacheFont = function(key, data)
local loadFont = preloader:CreateFontString()
loadFont:SetAllPoints()
if pcall(loadFont.SetFont, loadFont, data, 14) then
pcall(loadFont.SetText, loadFont, 'cache')
end
end
-- Preload ElvUI Invisible
cacheFont('Invisible', E.Media.Fonts.Invisible)
-- Lets load all the fonts in LSM to prevent fonts not being ready
local sharedFonts = LSM:HashTable('font')
for key, data in next, sharedFonts do
cacheFont(key, data)
end
-- Now lets hook it so we can preload any other AddOns add to LSM
hooksecurefunc(LSM, 'Register', function(_, mediatype, key, data)
if not mediatype or type(mediatype) ~= 'string' then return end
if mediatype:lower() == 'font' then
cacheFont(key, data)
end
end)
end