Files
Nanami-UI/Media.lua
2026-03-31 18:03:23 +08:00

87 lines
3.5 KiB
Lua

SFrames.Media = {
-- Default ElvUI-like texture
-- Default ElvUI-like texture
-- Using the standard flat Vanilla UI status bar texture for a clean flat aesthetic
statusbar = "Interface\\TargetingFrame\\UI-StatusBar",
-- Fonts
-- We can use a default WoW font, or eventually load a custom one here.
font = "Fonts\\ARIALN.TTF",
fontOutline = "OUTLINE",
}
-- Built-in font choices (includes Nanami-Plates bundled fonts)
SFrames.FontChoices = {
{ key = "default", label = "默认 (ARIALN)", path = "Fonts\\ARIALN.TTF" },
{ key = "frizqt", label = "FRIZQT", path = "Fonts\\FRIZQT__.TTF" },
{ key = "morpheus", label = "Morpheus", path = "Fonts\\MORPHEUS.TTF" },
{ key = "skurri", label = "Skurri", path = "Fonts\\SKURRI.TTF" },
{ key = "np_handwrite", label = "手写DF+DB", path = "Interface\\AddOns\\Nanami-Plates\\fonts\\手写DF+DB.ttf" },
{ key = "np_pangwa", label = "胖娃方正英文数字", path = "Interface\\AddOns\\Nanami-Plates\\fonts\\胖娃方正英文数字.ttf" },
{ key = "np_yahei_star", label = "雅黑+一星球", path = "Interface\\AddOns\\Nanami-Plates\\fonts\\雅黑+一星球.ttf" },
{ key = "np_yahei_hand", label = "雅黑手写英文", path = "Interface\\AddOns\\Nanami-Plates\\fonts\\雅黑手写英文.ttf" },
}
SFrames._fontLookup = {}
for _, entry in ipairs(SFrames.FontChoices) do
SFrames._fontLookup[entry.key] = entry.path
end
function SFrames:GetSharedMedia()
if LibStub then
local ok, LSM = pcall(function() return LibStub("LibSharedMedia-3.0", true) end)
if ok and LSM then return LSM end
end
return nil
end
SFrames.BarTextures = {
{ key = "default", label = "默认", path = "Interface\\TargetingFrame\\UI-StatusBar" },
{ key = "bar_elvui", label = "ElvUI", path = "Interface\\AddOns\\Nanami-UI\\img\\bar\\bar_elvui.tga" },
{ key = "bar_gradient", label = "渐变", path = "Interface\\AddOns\\Nanami-UI\\img\\bar\\bar_gradient.tga" },
{ key = "bar_tukui", label = "TukUI", path = "Interface\\AddOns\\Nanami-UI\\img\\bar\\bar_tukui.tga" },
{ key = "flat", label = "纯色", path = "Interface\\Buttons\\WHITE8X8" },
}
SFrames._barTextureLookup = {}
for _, entry in ipairs(SFrames.BarTextures) do
SFrames._barTextureLookup[entry.key] = entry.path
end
function SFrames:GetTexture()
if SFramesDB and SFramesDB.barTexture then
local builtin = self._barTextureLookup[SFramesDB.barTexture]
if builtin then return builtin end
local LSM = self:GetSharedMedia()
if LSM then
local path = LSM:Fetch("statusbar", SFramesDB.barTexture, true)
if path then return path end
end
end
return self.Media.statusbar
end
function SFrames:GetFont()
-- 1. Check built-in font key
if SFramesDB and SFramesDB.fontKey then
local builtin = self._fontLookup[SFramesDB.fontKey]
if builtin then return builtin end
end
-- 2. Fallback: LibSharedMedia font name
if SFramesDB and SFramesDB.fontName then
local LSM = self:GetSharedMedia()
if LSM then
local path = LSM:Fetch("font", SFramesDB.fontName, true)
if path then return path end
end
end
return self.Media.font
end
function SFrames:GetSharedMediaList(mediaType)
local LSM = self:GetSharedMedia()
if LSM and LSM.List then return LSM:List(mediaType) end
return nil
end