v9.7.2: Ebonhold Database integration and core logic refinements
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
---@class QuestieCombatQueue
|
||||
local QuestieCombatQueue = QuestieLoader:CreateModule("QuestieCombatQueue")
|
||||
|
||||
---@type QuestieLib
|
||||
local QuestieLib = QuestieLoader:CreateModule("QuestieLib")
|
||||
|
||||
--- COMPATIBILITY ---
|
||||
local C_Timer = QuestieCompat.C_Timer
|
||||
|
||||
local tpack = QuestieLib.tpack
|
||||
local tunpack = QuestieLib.tunpack
|
||||
|
||||
local _Queue = {}
|
||||
local started = false
|
||||
|
||||
-- This will limit the amount of updates Questie does to the UI and will reduce the chance to lag the game
|
||||
local maxUpdatesPerCircle = 5
|
||||
|
||||
function QuestieCombatQueue.Initialize()
|
||||
C_Timer.NewTicker(0.1, function()
|
||||
if InCombatLockdown() then
|
||||
return
|
||||
end
|
||||
|
||||
local entry = tremove(_Queue, 1)
|
||||
local count = 0
|
||||
while entry do
|
||||
entry.func(tunpack(entry.args))
|
||||
|
||||
if InCombatLockdown() or count >= maxUpdatesPerCircle then
|
||||
break
|
||||
end
|
||||
entry = tremove(_Queue, 1)
|
||||
count = count + 1
|
||||
end
|
||||
end)
|
||||
started = true
|
||||
end
|
||||
|
||||
function QuestieCombatQueue:Queue(func, ...)
|
||||
if started then
|
||||
tinsert(_Queue, {func=func, args=tpack(...)})
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user