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.

65 lines
1.7 KiB

-- Registration of Event capture functionality
local _, app = ...;
-- Create an Event Processor.
local events = setmetatable({}, {
-- undefined event handler
__index = function(t, key)
local unhandledEventFunction = function(...)
print("UNHANDLED EVENT",key,...)
end
t[key] = unhandledEventFunction
return unhandledEventFunction
end
});
local frame = CreateFrame("FRAME", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate");
---@diagnostic disable-next-line: inject-field
frame.Suffix = "ATTFRAME";
if app.DebuggingEvents then
frame:SetScript("OnEvent", function(self, e, ...)
app.PrintDebug(e,...);
events[e](...);
app.PrintDebugPrior(e);
end);
else
frame:SetScript("OnEvent", function(self, e, ...) events[e](...); end);
end
frame:SetPoint("BOTTOMLEFT", UIParent, "TOPLEFT", 0, 0);
frame:SetSize(1, 1);
frame:Show();
app.frame = frame;
app.events = events;
app.RegisterEvent = function(self, ...)
frame:RegisterEvent(...);
end
app.RegisterFuncEvent = function(self, event, func)
if func then
frame:RegisterEvent(event);
app.events[event] = func
end
end
app.UnregisterEvent = function(self, event)
frame:UnregisterEvent(event);
end
app.UnregisterEventClean = function(self, event)
frame:UnregisterEvent(event);
app.events[event] = nil
end
app.SetScript = function(self, ...)
local scriptName, method = ...;
if method then
frame:SetScript(scriptName, function(...)
method(app, ...);
end);
else
frame:SetScript(scriptName, nil);
end
end
-- Simple Events
app:RegisterEvent("PLAYER_LEVEL_UP");
app.events.PLAYER_LEVEL_UP = function(newLevel)
app.Level = newLevel;
app.HandleEvent("OnPlayerLevelUp");
end