from retail

This commit is contained in:
NoM0Re
2025-01-11 17:15:56 +01:00
parent 96c5618c6b
commit 1b50569bcc
10 changed files with 147 additions and 122 deletions
+74
View File
@@ -0,0 +1,74 @@
if not WeakAuras.IsLibsOK() then return end
local AddonName, Private = ...
local WeakAuras = WeakAuras
local L = WeakAuras.L
local SubscribableObject =
{
ClearSubscribers = function(self)
self.events = {}
end,
ClearCallbacks = function(self)
self.callbacks = {}
end,
AddSubscriber = function(self, event, subscriber, highPriority)
if not subscriber[event] then
print("Can't register for ", event, " ", subscriber, subscriber.type)
return
end
self.events[event] = self.events[event] or {}
local pos = highPriority and 1 or (#self.events[event] + 1)
if TableHasAnyEntries(self.events[event]) then
tinsert(self.events[event], pos, subscriber)
else
tinsert(self.events[event], pos, subscriber)
if self.callbacks[event] then
self.callbacks[event]()
end
end
end,
RemoveSubscriber = function(self, event, subscriber)
if self.events[event] then
local index = tIndexOf(self.events[event], subscriber)
if index then
tremove(self.events[event], index)
if not TableHasAnyEntries(self.events[event]) then
if self.callbacks[event] then
self.callbacks[event]()
end
end
end
end
end,
SetOnSubscriptionStatusChanged = function(self, event, cb)
self.callbacks[event] = cb
end,
Notify = function(self, event, ...)
if self.events[event] then
for _, subscriber in ipairs(self.events[event]) do
subscriber[event](subscriber, ...)
end
end
end,
HasSubscribers = function(self, event)
return self.events[event] and TableHasAnyEntries(self.events[event])
end
}
function Private.CreateSubscribableObject()
local system = {}
for f, func in pairs(SubscribableObject) do
system[f] = func
system.events = {}
system.callbacks = {}
end
return system
end