You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
63 lines
1.4 KiB
|
5 years ago
|
local _, Loader = ...
|
||
|
|
|
||
|
|
Loader.eventFrame = CreateFrame("frame");
|
||
|
|
Loader.dbVersion = 90100;
|
||
|
|
|
||
|
|
Loader.eventCallback = {};
|
||
|
|
Loader.initCallback = {};
|
||
|
|
|
||
|
|
function Loader:Release()
|
||
|
|
self.eventFrame:Hide();
|
||
|
|
|
||
|
|
wipe(self);
|
||
|
|
_ = nil;
|
||
|
|
Loader = nil;
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:RegisterEvent(event)
|
||
|
|
self.eventFrame:RegisterEvent(event);
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:UnregisterEvent(event)
|
||
|
|
self.eventFrame:UnregisterEvent(event);
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:SetScript(scriptName, func)
|
||
|
|
self.eventFrame:SetScript(scriptName, func);
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:Check()
|
||
|
|
for event, callback in pairs(self.eventCallback) do
|
||
|
|
if callback then
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
self:Release();
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:OnEvent(event, ...)
|
||
|
|
C_Timer.After(0.5, function()
|
||
|
|
Loader:Check();
|
||
|
|
end);
|
||
|
|
|
||
|
|
if Loader.eventCallback[event] then
|
||
|
|
Loader:UnregisterEvent(event);
|
||
|
|
local tempCallback = Loader.eventCallback[event];
|
||
|
|
Loader.eventCallback[event] = nil;
|
||
|
|
tempCallback(self, ...);
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:AddInitCallback(callback)
|
||
|
|
tinsert(self.initCallback, callback);
|
||
|
|
end
|
||
|
|
|
||
|
|
function Loader:NewMsg(pattern, ...)
|
||
|
|
if pattern then
|
||
|
|
pattern = "|cFFFFD100"..pattern;
|
||
|
|
pattern = string.gsub(pattern, ":", ":|r");
|
||
|
|
pattern = (NARCI_GRADIENT or "[Narcissus]") .." ".. pattern;
|
||
|
|
print(string.format(pattern, ...));
|
||
|
|
end
|
||
|
|
end
|