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.
66 lines
1.8 KiB
66 lines
1.8 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";
|
|
local function OnEvent_Debugging(self, e, ...)
|
|
app.PrintDebug(e,...);
|
|
events[e](...);
|
|
app.PrintDebugPrior(e);
|
|
end
|
|
local function OnEvent(self, e, ...) events[e](...) end
|
|
frame:SetScript("OnEvent", app.DebuggingEvents and OnEvent_Debugging or OnEvent);
|
|
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
|
|
app.DebugEvents = function()
|
|
app.DebuggingEvents = not app.DebuggingEvents
|
|
frame:SetScript("OnEvent", app.DebuggingEvents and OnEvent_Debugging or OnEvent);
|
|
end
|
|
|
|
-- Simple Events
|
|
app:RegisterFuncEvent("PLAYER_LEVEL_UP", function(newLevel)
|
|
app.Level = newLevel;
|
|
app.HandleEvent("OnPlayerLevelUp");
|
|
end)
|