69 lines
2.8 KiB
Lua
69 lines
2.8 KiB
Lua
local ADDON_NAME = "HailMaryGuildTools"
|
|
local HMGT = LibStub("AceAddon-3.0"):GetAddon(ADDON_NAME)
|
|
if not HMGT or not HMGT.TrackerManager then return end
|
|
|
|
local Manager = HMGT.TrackerManager
|
|
local S = Manager._shared or {}
|
|
|
|
function Manager:CollectEntries(tracker)
|
|
local entries = {}
|
|
local players = S.GetGroupPlayers(tracker)
|
|
for _, playerInfo in ipairs(players) do
|
|
local playerEntries = S.CollectEntriesForPlayer(tracker, playerInfo)
|
|
for _, entry in ipairs(playerEntries) do
|
|
entries[#entries + 1] = entry
|
|
end
|
|
end
|
|
return entries
|
|
end
|
|
|
|
function Manager:CollectTestEntries(tracker)
|
|
local playerName = HMGT:NormalizePlayerName(UnitName("player")) or "Player"
|
|
local classToken = select(2, UnitClass("player"))
|
|
if not classToken then
|
|
return {}
|
|
end
|
|
|
|
local entries = {}
|
|
local pData = HMGT.playerData[playerName]
|
|
local talents = pData and pData.talents or {}
|
|
local spells = S.GetTrackerSpellsForPlayer(classToken, GetSpecialization() or 0, tracker.categories)
|
|
for _, spellEntry in ipairs(spells) do
|
|
if tracker.enabledSpells[spellEntry.spellId] ~= false then
|
|
local remaining, total, currentCharges, maxCharges = HMGT:GetCooldownInfo(playerName, spellEntry.spellId)
|
|
local effectiveCd = HMGT_SpellData.GetEffectiveCooldown(spellEntry, talents)
|
|
local isAvailabilitySpell = HMGT:IsAvailabilitySpell(spellEntry)
|
|
local spellKnown = HMGT:IsTrackedSpellKnownForPlayer(playerName, spellEntry.spellId)
|
|
local hasPartialCharges = (tonumber(maxCharges) or 0) > 0
|
|
and (tonumber(currentCharges) or tonumber(maxCharges) or 0) < (tonumber(maxCharges) or 0)
|
|
local hasActiveCd = ((remaining or 0) > 0) or hasPartialCharges
|
|
local hasAvailabilityState = isAvailabilitySpell and HMGT:HasAvailabilityState(playerName, spellEntry.spellId)
|
|
if spellKnown or hasActiveCd or hasAvailabilityState then
|
|
entries[#entries + 1] = {
|
|
playerName = playerName,
|
|
class = classToken,
|
|
spellEntry = spellEntry,
|
|
remaining = remaining,
|
|
total = total > 0 and total or effectiveCd,
|
|
currentCharges = currentCharges,
|
|
maxCharges = maxCharges,
|
|
}
|
|
end
|
|
end
|
|
end
|
|
return entries
|
|
end
|
|
|
|
function Manager:BuildEntriesForTracker(tracker)
|
|
if tracker.testMode then
|
|
return self:CollectTestEntries(tracker), true
|
|
end
|
|
if tracker.demoMode then
|
|
return HMGT:GetDemoEntries(S.GetTrackerFrameKey(tracker.id), S.GetTrackerSpellPool(tracker.categories), tracker), true
|
|
end
|
|
if not tracker.enabled or not HMGT:IsVisibleForCurrentGroup(tracker) then
|
|
return {}, false
|
|
end
|
|
return self:CollectEntries(tracker), true
|
|
end
|