Gladdy-TBC/Libs/LibClassAuras-1.0/LibClassAuras-1.0.lua

106 lines
2.9 KiB
Lua

local type, ipairs, pairs, tinsert = type, ipairs, pairs, tinsert
local GetSpellInfo = GetSpellInfo
local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF
local LibClassAuras = LibStub:NewLibrary("LibClassAuras-1.0", 1)
LibClassAuras.debuffs = {}
LibClassAuras.debuffToId = {}
LibClassAuras.buffs = {}
LibClassAuras.buffToId = {}
LibClassAuras.altNames = {}
local function Spell(id, opts, class, spellTable, idTable)
if not opts or not class then
return
end
local lastRankID
if type(id) == "table" then
local clones = id
lastRankID = clones[#clones]
else
lastRankID = id
end
local spellName = GetSpellInfo(lastRankID)
if not spellName then
return
end
if opts.altName then
for _,v in ipairs(id) do
LibClassAuras.altNames[v] = opts.altName
end
if idTable[opts.altName] then
tinsert(idTable[opts.altName], {id = id , class = class})
else
idTable[opts.altName] = {[1] = {id = id , class = class}}
end
else
if idTable[spellName] then
tinsert(idTable[spellName], {id = id , class = class})
else
idTable[spellName] = {[1] = {id = id , class = class}}
end
end
if type(id) == "table" then
for _, spellID in ipairs(id) do
spellTable[spellID] = opts
spellTable[spellID].class = class
end
else
spellTable[id] = opts
spellTable[id].class = class
end
end
local function Debuff(id, opts, class)
Spell(id, opts, class, LibClassAuras.debuffs, LibClassAuras.debuffToId)
end
LibClassAuras.Debuff = Debuff
local function Buff(id, opts, class)
Spell(id, opts, class, LibClassAuras.buffs, LibClassAuras.buffToId)
end
LibClassAuras.Buff = Buff
local function getClassDebuffs(class)
local classSpells = {}
for name, spells in pairs(LibClassAuras.debuffToId) do
for _, spellInfo in ipairs(spells) do
if spellInfo.class == class then
tinsert(classSpells, {name = name, id = spellInfo.id})
end
end
end
return classSpells
end
LibClassAuras.GetClassDebuffs = getClassDebuffs
local function getClassBuffs(class)
local classSpells = {}
for name, spells in pairs(LibClassAuras.buffToId) do
for _, spellInfo in ipairs(spells) do
if spellInfo.class == class then
tinsert(classSpells, {name = name, id = spellInfo.id})
end
end
end
return classSpells
end
LibClassAuras.GetClassBuffs = getClassBuffs
local function getSpellNameToId(auraType)
if auraType == AURA_TYPE_DEBUFF then
return LibClassAuras.debuffToId
else
return LibClassAuras.buffToId
end
end
LibClassAuras.GetSpellNameToId = getSpellNameToId
local function getAltName(spellID)
return LibClassAuras.altNames[spellID]
end
LibClassAuras.GetAltName = getAltName