zzAddOn.lua: Skip NewAddOn when already added

This commit is contained in:
rilgamon 2021-03-22 18:59:44 +01:00
parent ff7780f346
commit b5adbf315d
1 changed files with 12 additions and 2 deletions

View File

@ -1,4 +1,4 @@
local lib = LibStub:NewLibrary("zzAddOn", 4)
local lib = LibStub:NewLibrary("zzAddOn", 5)
if not lib then return end
local config = LibStub:GetLibrary("zzConfig")
lib['callbacks'] = lib['callbacks'] or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
@ -90,6 +90,16 @@ end
function lib:NewAddOn(addonName, addonTable)
local specs = self['specs']
local childName = specs['name']
if(lib['addons'][childName]) then
local oldchild = lib['addons'][childName]
local parent = oldchild:GetParent()
if(parent) then
print(format("Error: %s already loaded by %s", childName, parent['specs']['name']))
else
print(format("Error: %s already loaded", childName))
end
return
end
if(type(childName) == 'string') then
self.GetAddOnTable = function() return addonTable end
lib['addons'][childName] = self
@ -113,7 +123,7 @@ function lib:Embed(target)
target[name] = lib[name]
end
end
for target, _ in pairs(lib['addons']) do
for _, target in pairs(lib['addons']) do
lib:Embed(target)
end
lib['events']:RegisterEvent('ADDON_LOADED')