Compare commits

...

3 Commits

Author SHA1 Message Date
6a73506161 Bump version number to 0.1.1
Some checks failed
Test Commit / create-release (push) Failing after 1m0s
Create Release / create-release (push) Failing after 9s
2023-11-24 21:58:42 +01:00
999de90942 Auto format the code 2023-11-24 21:33:43 +01:00
5a3f29344b Fix compatibility issue with LibSharedMedia
It appears LibSharedMedia does not always initialize the media lists from
the media tables. To fix this we make sure the media lists match the
media tables when the table already exists upon addon initialization.
2023-11-24 21:26:25 +01:00
2 changed files with 44 additions and 34 deletions

View File

@@ -1,47 +1,48 @@
local lib = LibStub:NewLibrary("LibFreeMedia", 100) local lib = LibStub:NewLibrary("LibFreeMedia", 101)
if not lib then if not lib then
return return
end end
local DEFAULT_MEDIA_TABLE = { local DEFAULT_MEDIA_TABLE = {
background = { background = {
["Blizzard Dialog Background"] = "Interfacee\\DialogFrame\\UI-DialogBox-Background", ["Blizzard Dialog Background"] = "Interfacee\\DialogFrame\\UI-DialogBox-Background",
["Blizzard Dialog Background Dark"] = "Interfacee\\DialogFrame\\UI-DialogBox-Background-Dark", ["Blizzard Dialog Background Dark"] = "Interfacee\\DialogFrame\\UI-DialogBox-Background-Dark",
["Blizzard Dialog Background Gold"] = "Interfacee\\DialogFrame\\UI-DialogBox-Gold-Background", ["Blizzard Dialog Background Gold"] = "Interfacee\\DialogFrame\\UI-DialogBox-Gold-Background",
["Blizzard Low Health"] = "Interfacee\\FullScreenTextures\\LowHealth", ["Blizzard Low Health"] = "Interfacee\\FullScreenTextures\\LowHealth",
["Blizzard Marble"] = "Interfacee\\FrameGeneral\\UI-Background-Marble", ["Blizzard Marble"] = "Interfacee\\FrameGeneral\\UI-Background-Marble",
["Blizzard Out of Control"] = "Interfacee\\FullScreenTextures\\OutOfControl", ["Blizzard Out of Control"] = "Interfacee\\FullScreenTextures\\OutOfControl",
["Blizzard Parchment"] = "Interfacee\\AchievementFrame\\UI-Achievement-Parchment-Horizontal", ["Blizzard Parchment"] = "Interfacee\\AchievementFrame\\UI-Achievement-Parchment-Horizontal",
["Blizzard Parchment 2"] = "Interfacee\\AchievementFrame\\UI-GuildAchievement-Parchment-Horizontal", ["Blizzard Parchment 2"] = "Interfacee\\AchievementFrame\\UI-GuildAchievement-Parchment-Horizontal",
["Blizzard Rock"] = "Interfacee\\FrameGeneral\\UI-Background-Rock", ["Blizzard Rock"] = "Interfacee\\FrameGeneral\\UI-Background-Rock",
["Blizzard Tabard Background"] = "Interfacee\\TabardFrame\\TabardFrameBackground", ["Blizzard Tabard Background"] = "Interfacee\\TabardFrame\\TabardFrameBackground",
["Blizzard Tooltip"] = "Interfacee\\Tooltips\\UI-Tooltip-Background", ["Blizzard Tooltip"] = "Interfacee\\Tooltips\\UI-Tooltip-Background",
["Solid"] = "Interfacee\\Buttons\\WHITE8X8", ["Solid"] = "Interfacee\\Buttons\\WHITE8X8",
}, },
font = { font = {
["Arial Narrow"] = "Fonts\\ARIALN.TTF", ["Arial Narrow"] = "Fonts\\ARIALN.TTF",
["Friz Quadrata TT"] = "Fonts\\FRIZQT__.TTF", ["Friz Quadrata TT"] = "Fonts\\FRIZQT__.TTF",
["Morpheus"] = "Fonts\\MORPHEUS.TTF", ["Morpheus"] = "Fonts\\MORPHEUS.TTF",
["Skurri"] = "Fonts\\SKURRI.TTF", ["Skurri"] = "Fonts\\SKURRI.TTF",
}, },
border = { border = {
["None"] = "Interface\\None", ["None"] = "Interface\\None",
["Achievement Wood"] = "Interface\\AchievementFrame\\UI-Achievement-WoodBorder", ["Achievement Wood"] = "Interface\\AchievementFrame\\UI-Achievement-WoodBorder",
["Chat Bubble"] = "Interface\\Tooltips\\ChatBubble-Backdrop", ["Chat Bubble"] = "Interface\\Tooltips\\ChatBubble-Backdrop",
["Blizzard Dialog"] = "Interface\\DialogFrame\\UI-DialogBox-Border", ["Blizzard Dialog"] = "Interface\\DialogFrame\\UI-DialogBox-Border",
["Blizzard Dialog Gold"] = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", ["Blizzard Dialog Gold"] = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border",
["Blizzard Party"] = "Interface\\CHARACTERFRAME\\UI-Party-Border", ["Blizzard Party"] = "Interface\\CHARACTERFRAME\\UI-Party-Border",
["Blizzard Tooltip"] = "Interface\\Tooltips\\UI-Tooltip-Border", ["Blizzard Tooltip"] = "Interface\\Tooltips\\UI-Tooltip-Border",
}, },
statusbar = { statusbar = {
["Blizzard"] = "Interface\\TargetingFrame\\UI-StatusBar", ["Blizzard"] = "Interface\\TargetingFrame\\UI-StatusBar",
["Blizzard Character Skills Bar"] = "Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar", ["Blizzard Character Skills Bar"] = "Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar",
}, },
sound = { sound = {
["None"] = "Interface\\Quiet.ogg", ["None"] = "Interface\\Quiet.ogg",
} }
} }
-- Build default media lists from the default media table
local function MakeDefaultList() local function MakeDefaultList()
local lists = {} local lists = {}
for kind, media in pairs(DEFAULT_MEDIA_TABLE) do for kind, media in pairs(DEFAULT_MEDIA_TABLE) do
@@ -66,11 +67,23 @@ do
libsm = LibStub:NewLibrary("LibSharedMedia-3.0", 0) libsm = LibStub:NewLibrary("LibSharedMedia-3.0", 0)
libsm.MediaTable = DEFAULT_MEDIA_TABLE libsm.MediaTable = DEFAULT_MEDIA_TABLE
libsm.MediaList = DEFAULT_MEDIA_LIST libsm.MediaList = DEFAULT_MEDIA_LIST
else
-- Ensure the lists match the tables if we didn't create them
for kind, media in pairs(libsm.MediaTable) do
if libsm.MediaList[kind] == nil then
local mediaList = {}
for identifier, _ in pairs(media) do
table.insert(mediaList, identifier)
end
table.sort(mediaList)
libsm.MediaList[kind] = mediaList
end
end
end end
---@type table<string, table<string, any>> ---@type table<string, table<string, any>>
lib.media = libsm.MediaTable lib.media = libsm.MediaTable
---@type table<string, string[]> ---@type table<string, string[]>
lib.mediaList = libsm.MediaList lib.mediaList = libsm.MediaList
end end
@@ -94,7 +107,7 @@ local function RegisterOne(kind, identifier, data)
end end
media[identifier] = data media[identifier] = data
table.insert(lib.mediaList[kind], identifier) table.insert(mediaList, identifier)
return true return true
end end
@@ -111,7 +124,6 @@ function lib:Register(kind, identifier, data)
return retval return retval
end end
---Return the media that matches the given kind and identifier. May return nil if the media does not exist. ---Return the media that matches the given kind and identifier. May return nil if the media does not exist.
---@param kind string The kind of media you are requesting. E.g. "font" or "background" ---@param kind string The kind of media you are requesting. E.g. "font" or "background"
---@param identifier string Named identifier for the media ---@param identifier string Named identifier for the media
@@ -123,7 +135,6 @@ function lib:Get(kind, identifier)
end end
end end
---Return a sorted list of identifiers. May return nil if there is no media of that kind. ---Return a sorted list of identifiers. May return nil if there is no media of that kind.
---@param kind string The kind of media you are requesting. E.g. "font" or "background" ---@param kind string The kind of media you are requesting. E.g. "font" or "background"
---@return string[] | nil ---@return string[] | nil
@@ -131,7 +142,6 @@ function lib:GetList(kind)
return self.mediaList[kind] return self.mediaList[kind]
end end
---Return a table with identifier keys and media data values ---Return a table with identifier keys and media data values
---@param kind string The kind of media you are requesting. E.g. "font" or "background" ---@param kind string The kind of media you are requesting. E.g. "font" or "background"
---@return table<string,any> | nil ---@return table<string,any> | nil

View File

@@ -1,7 +1,7 @@
## Interface: 100100 ## Interface: 100100
## Title: LibFreeMedia ## Title: LibFreeMedia
## Notes: Freely share media between addons ## Notes: Freely share media between addons
## Version: 0.1.0 ## Version: 0.1.1
libs/LibStub.lua libs/LibStub.lua
LibFreeMedia.lua LibFreeMedia.lua