-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinit.lua
90 lines (79 loc) · 2.63 KB
/
init.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-----------------------------------------------------------------------------------------------
--
-- KiwiPlates addon @2012-2018 MiCHaeL
--
-----------------------------------------------------------------------------------------------
local GetAddOnMetadata = C_AddOns and C_AddOns.GetAddOnMetadata or GetAddOnMetadata
local addon = CreateFrame('Frame')
addon.addonName = ...
local versionCli = select(4,GetBuildInfo())
addon.isClassic = versionCli<50000 -- vanilla or tbc or wrath or cata
addon.isVanilla = versionCli<20000
addon.isTBC = versionCli>=20000 and versionCli<30000
addon.isWrath = versionCli>=30000 and versionCli<40000
addon.isCata = versionCli>=40000 and versionCli<50000
addon.isWoW90 = versionCli>=90000
local versionToc = GetAddOnMetadata(addon.addonName,'Version')
addon.versionToc = versionToc=='\@project-version\@' and 'Dev' or 'v'..versionToc
----------------------------------------------------------------
-- Messages management
----------------------------------------------------------------
do
local type = type
local tremove = table.remove
local messages = {}
function addon:SendMessage(msg, ...)
local registry = messages[msg]
if registry then
for i=#registry,1,-1 do
registry[i](...)
end
end
end
function addon:RegisterMessage(msg, callback)
local registry = messages[msg]
if not registry then
registry = {}
messages[msg] = registry
end
registry[#registry+1] = type(callback)=="function" and callback or self[callback]
end
function addon:UnregisterMessage(msg, callback)
local registry = messages[msg]
if registry then
if type(callback)~="function" then
callback = self[callback]
end
for i=#registry,1,-1 do
if registry[i] == callback then
tremove(registry, i)
return
end
end
else
messages[msg] = nil
end
end
end
----------------------------------------------------------------
-- Run Addon
----------------------------------------------------------------
addon:RegisterEvent("ADDON_LOADED")
addon:RegisterEvent("PLAYER_LOGIN")
addon:SetScript("OnEvent", function(frame, event, name)
if event == "ADDON_LOADED" and name == addon.addonName then
addon.__loaded = true
end
if addon.__loaded and IsLoggedIn() then
addon:UnregisterAllEvents()
addon:SetScript("OnEvent", function(f, e, ...) local c=f[e]; if c then c(f,...) end end)
addon:SendMessage('INITIALIZE')
addon:UnregisterMessage('INITIALIZE')
addon:SendMessage('ENABLE')
addon:UnregisterMessage('ENABLE')
end
end)
----------------------------------------------------------------
-- Publish
----------------------------------------------------------------
_G[addon.addonName] = addon