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.

63 lines
2.4 KiB

local MDT = MDT
--- AddOn / WeakAura Creators can use these functions to retrieve data from MDT
do
local dungeonCountCache = {}
--- Usage: local count, maxCountNormal, maxCountTeeming, teemingCount = MDT:GetEnemyForces(npcId)
--- Prefers to find the npc in the current dungeon of the player
--- @param npcId number
--- @return number | nil, number | nil, number | nil, number | nil
function MDT:GetEnemyForces(npcId)
local zoneId = C_Map.GetBestMapForUnit("player")
local dungeonIdx = self.zoneIdToDungeonIdx[zoneId]
if dungeonIdx and dungeonCountCache[dungeonIdx] and dungeonCountCache[dungeonIdx][npcId] then
local cached = dungeonCountCache[dungeonIdx][npcId]
return cached.count, cached.maxCountNormal, cached.maxCountTeeming, cached.teemingCount
end
if dungeonIdx then
local data = self.dungeonEnemies[dungeonIdx]
for _, e in pairs(data) do
if e.id == npcId then
dungeonCountCache[dungeonIdx] = dungeonCountCache[dungeonIdx] or {}
dungeonCountCache[dungeonIdx][npcId] = {
count = e.count,
maxCountNormal = self.dungeonTotalCount[dungeonIdx].normal,
maxCountTeeming = self.dungeonTotalCount[dungeonIdx].teeming,
teemingCount = e.teemingCount
}
local cached = dungeonCountCache[dungeonIdx][npcId]
return cached.count, cached.maxCountNormal, cached.maxCountTeeming, cached.teemingCount
end
end
end
for i = 1, self:GetNumDungeons() do
if dungeonCountCache[i] and dungeonCountCache[i][npcId] then
local cached = dungeonCountCache[i][npcId]
return cached.count, cached.maxCountNormal, cached.maxCountTeeming, cached.teemingCount
end
local data = self.dungeonEnemies[i]
if data then
for _, e in pairs(data) do
if e.id == npcId then
dungeonCountCache[i] = dungeonCountCache[i] or {}
dungeonCountCache[i][npcId] = {
count = e.count,
maxCountNormal = self.dungeonTotalCount[i].normal,
maxCountTeeming = self.dungeonTotalCount[i].teeming,
teemingCount = e.teemingCount or e.count,
}
local cached = dungeonCountCache[i][npcId]
return cached.count, cached.maxCountNormal, cached.maxCountTeeming, cached.teemingCount
end
end
end
end
end
end