forked from oUF-wow/oUF
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfactory.lua
48 lines (37 loc) · 893 Bytes
/
factory.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 parent, ns = ...
local oUF = ns.oUF
local Private = oUF.Private
local argcheck = Private.argcheck
local _QUEUE = {}
local _FACTORY = CreateFrame'Frame'
_FACTORY:SetScript('OnEvent', function(self, event, ...)
return self[event](self, event, ...)
end)
_FACTORY:RegisterEvent'PLAYER_LOGIN'
_FACTORY.active = true
function _FACTORY:PLAYER_LOGIN()
if(not self.active) then return end
for _, func in next, _QUEUE do
func(oUF)
end
-- Avoid creating dupes.
wipe(_QUEUE)
end
function oUF:Factory(func)
argcheck(func, 2, 'function')
-- Call the function directly if we're active and logged in.
if(IsLoggedIn() and _FACTORY.active) then
return func(self)
else
table.insert(_QUEUE, func)
end
end
function oUF:EnableFactory()
_FACTORY.active = true
end
function oUF:DisableFactory()
_FACTORY.active = nil
end
function oUF:RunFactoryQueue()
_FACTORY:PLAYER_LOGIN()
end