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
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:GetEnemyForcers(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
|
|
|