-
Notifications
You must be signed in to change notification settings - Fork 4
/
Events.lua
48 lines (38 loc) · 884 Bytes
/
Events.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
local ADDONNAME, ADDONSELF = ...
local f = CreateFrame("Frame")
f:RegisterEvent("ADDON_LOADED")
local m = {}
local a = {}
f:SetScript("OnEvent", function(self, event, ...)
if event == "ADDON_LOADED" then
local name = select(1, ...)
local cbs = a[name]
if cbs then
for _, cb in pairs(cbs) do
cb(...)
end
end
if ADDONNAME ~= name then
return
end
end
local cbs = m[event]
if cbs then
for _, cb in pairs(cbs) do
cb(...)
end
end
end)
ADDONSELF.regevent = function(event, cb)
if not m[event] then
m[event] = {}
end
f:RegisterEvent(event)
table.insert(m[event] , cb)
end
ADDONSELF.regaddonloaded = function(addon, cb)
if not a[addon] then
a[addon] = {}
end
table.insert(a[addon] , cb)
end