local NAME, ADDON = ... local eventFrame = CreateFrame("FRAME", "DJBagsEventsFrame", nil) eventFrame:Hide() eventFrame.types = {} function eventFrame:FireEvent(event, ...) if not self.types[event] then return end for k, _ in pairs(self.types[event]) do if k[event] then k[event](k, ...) end end end eventFrame:SetScript("OnEvent", eventFrame.FireEvent) function eventFrame:AddEvent(obj, event) if not obj[event] then return end if not self.types[event] then self.types[event] = {} self:RegisterEvent(event) end self.types[event][obj] = true end function eventFrame:RemoveEvent(obj, event) if not self.types[event] and not self.types[event][obj] then return end self.types[event][obj] = nil end ADDON.eventManager = eventFrame