|
|
|
|
-- This file is only for base functions that work differently or are deprecated in some versions of wow
|
|
|
|
|
|
|
|
|
|
if not WeakAuras.IsLibsOK() then return end
|
|
|
|
|
---@type string
|
|
|
|
|
local AddonName = ...
|
|
|
|
|
---@class Private
|
|
|
|
|
local Private = select(2, ...)
|
|
|
|
|
|
|
|
|
|
if GetSpellInfo then
|
|
|
|
|
Private.ExecEnv.GetSpellInfo = GetSpellInfo
|
|
|
|
|
Private.ExecEnv.GetSpellName = GetSpellInfo
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetSpellInfo = function(spellID)
|
|
|
|
|
if not spellID then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
|
|
|
|
if spellInfo then
|
|
|
|
|
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
Private.ExecEnv.GetSpellName = C_Spell.GetSpellName
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if GetSpellTexture then
|
|
|
|
|
Private.ExecEnv.GetSpellIcon = GetSpellTexture
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetSpellIcon = C_Spell.GetSpellTexture
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if IsUsableSpell then
|
|
|
|
|
Private.ExecEnv.IsUsableSpell = IsUsableSpell
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.IsUsableSpell = C_Spell.IsSpellUsable
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if C_SpecializationInfo and C_SpecializationInfo.GetSpecialization then
|
|
|
|
|
Private.ExecEnv.GetSpecialization = C_SpecializationInfo.GetSpecialization
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetSpecialization = GetSpecialization
|
|
|
|
|
end
|
|
|
|
|
if C_SpecializationInfo and C_SpecializationInfo.GetSpecializationInfo then
|
|
|
|
|
Private.ExecEnv.GetSpecializationInfo = C_SpecializationInfo.GetSpecializationInfo
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetSpecializationInfo = GetSpecializationInfo
|
|
|
|
|
end
|
|
|
|
|
if C_SpecializationInfo and C_SpecializationInfo.GetNumSpecializationsForClassID then
|
|
|
|
|
Private.ExecEnv.GetNumSpecializationsForClassID = C_SpecializationInfo.GetNumSpecializationsForClassID
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetNumSpecializationsForClassID = GetNumSpecializationsForClassID
|
|
|
|
|
end
|
|
|
|
|
if WeakAuras.IsMists() then
|
|
|
|
|
local specsByClassID = {
|
|
|
|
|
[0] = { 74, 81, 79 },
|
|
|
|
|
[1] = { 71, 72, 73, 1446 },
|
|
|
|
|
[2] = { 65, 66, 70, 1451 },
|
|
|
|
|
[3] = { 253, 254, 255, 1448 },
|
|
|
|
|
[4] = { 259, 260, 261, 1453 },
|
|
|
|
|
[5] = { 256, 257, 258, 1452 },
|
|
|
|
|
[6] = { 250, 251, 252, 1455 },
|
|
|
|
|
[7] = { 262, 263, 264, 1444 },
|
|
|
|
|
[8] = { 62, 63, 64, 1449 },
|
|
|
|
|
[9] = { 265, 266, 267, 1454 },
|
|
|
|
|
[10] = { 268, 270, 269, 1450 },
|
|
|
|
|
[11] = { 102, 103, 104, 105, 1447 },
|
|
|
|
|
}
|
|
|
|
|
Private.ExecEnv.GetSpecializationInfoForClassID = function (classID, specIndex)
|
|
|
|
|
local specID = specsByClassID[classID][specIndex]
|
|
|
|
|
if not specID then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
return GetSpecializationInfoByID(specID)
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetSpecializationInfoForClassID = GetSpecializationInfoForClassID
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if C_SpecializationInfo and C_SpecializationInfo.GetTalentInfo then
|
|
|
|
|
-- copy pasta from Interface/AddOns/Blizzard_DeprecatedSpecialization/Deprecated_Specialization_Mists.lua
|
|
|
|
|
Private.ExecEnv.GetTalentInfo = function(tabIndex, talentIndex, isInspect, isPet, groupIndex)
|
|
|
|
|
-- Note: tabIndex, talentIndex, and isPet are not supported parameters in 5.5.x and onward.
|
|
|
|
|
local numColumns = 3
|
|
|
|
|
local talentInfoQuery = {}
|
|
|
|
|
talentInfoQuery.tier = math.ceil(talentIndex / numColumns)
|
|
|
|
|
talentInfoQuery.column = talentIndex % numColumns
|
|
|
|
|
talentInfoQuery.groupIndex = groupIndex
|
|
|
|
|
talentInfoQuery.isInspect = isInspect
|
|
|
|
|
talentInfoQuery.target = nil
|
|
|
|
|
local talentInfo = C_SpecializationInfo.GetTalentInfo(talentInfoQuery)
|
|
|
|
|
if not talentInfo then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Note: rank, maxRank, meetsPrereq, previewRank, meetsPreviewPrereq, isExceptional, and hasGoldBorder are not supported outputs in 5.5.x and onward.
|
|
|
|
|
-- They have default values not reflective of actual system state.
|
|
|
|
|
-- selected, available, spellID, isPVPTalentUnlocked, known, and grantedByAura are new supported outputs in 5.5.x and onward.
|
|
|
|
|
return talentInfo.name, talentInfo.icon, talentInfo.tier, talentInfo.column, talentInfo.selected and talentInfo.rank or 0,
|
|
|
|
|
talentInfo.maxRank, talentInfo.meetsPrereq, talentInfo.previewRank,
|
|
|
|
|
talentInfo.meetsPreviewPrereq, talentInfo.isExceptional, talentInfo.hasGoldBorder,
|
|
|
|
|
talentInfo.talentID
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetTalentInfo = GetTalentInfo
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Private.ExecEnv.GetNumFactions = C_Reputation.GetNumFactions or GetNumFactions
|
|
|
|
|
|
|
|
|
|
Private.ExecEnv.GetFactionDataByIndex = C_Reputation.GetFactionDataByIndex or function(index)
|
|
|
|
|
local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild, factionID, hasBonusRepGain, canSetInactive = GetFactionInfo(index)
|
|
|
|
|
return {
|
|
|
|
|
factionID = factionID,
|
|
|
|
|
name = name,
|
|
|
|
|
description = description,
|
|
|
|
|
reaction = standingID,
|
|
|
|
|
currentReactionThreshold = barMin,
|
|
|
|
|
nextReactionThreshold = barMax,
|
|
|
|
|
currentStanding = barValue,
|
|
|
|
|
atWarWith = atWarWith,
|
|
|
|
|
canToggleAtWar = canToggleAtWar,
|
|
|
|
|
isChild = isChild,
|
|
|
|
|
isHeader = isHeader,
|
|
|
|
|
isHeaderWithRep = hasRep,
|
|
|
|
|
isCollapsed = isCollapsed,
|
|
|
|
|
isWatched = isWatched,
|
|
|
|
|
hasBonusRepGain = hasBonusRepGain,
|
|
|
|
|
canSetInactive = canSetInactive,
|
|
|
|
|
isAccountWide = nil
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Private.ExecEnv.GetFactionDataByID = C_Reputation.GetFactionDataByID or function(ID)
|
|
|
|
|
local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild, factionID, hasBonusRepGain, canSetInactive = GetFactionInfoByID(ID)
|
|
|
|
|
return {
|
|
|
|
|
factionID = factionID,
|
|
|
|
|
name = name,
|
|
|
|
|
description = description,
|
|
|
|
|
reaction = standingID,
|
|
|
|
|
currentReactionThreshold = barMin,
|
|
|
|
|
nextReactionThreshold = barMax,
|
|
|
|
|
currentStanding = barValue,
|
|
|
|
|
atWarWith = atWarWith,
|
|
|
|
|
canToggleAtWar = canToggleAtWar,
|
|
|
|
|
isChild = isChild,
|
|
|
|
|
isHeader = isHeader,
|
|
|
|
|
isHeaderWithRep = hasRep,
|
|
|
|
|
isCollapsed = isCollapsed,
|
|
|
|
|
isWatched = isWatched,
|
|
|
|
|
hasBonusRepGain = hasBonusRepGain,
|
|
|
|
|
canSetInactive = canSetInactive,
|
|
|
|
|
isAccountWide = nil
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- GetWatchedFactionData behaves differentlly, but we only need the Id, so do a trival wrapper
|
|
|
|
|
if C_Reputation.GetWatchedFactionData then
|
|
|
|
|
Private.ExecEnv.GetWatchedFactionId = function()
|
|
|
|
|
local data = C_Reputation.GetWatchedFactionData()
|
|
|
|
|
return data and data.factionID or nil
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
Private.ExecEnv.GetWatchedFactionId = function()
|
|
|
|
|
return select(6, GetWatchedFactionInfo())
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Private.ExecEnv.ExpandFactionHeader = C_Reputation.ExpandFactionHeader or ExpandFactionHeader
|
|
|
|
|
Private.ExecEnv.CollapseFactionHeader = C_Reputation.CollapseFactionHeader or CollapseFactionHeader
|
|
|
|
|
Private.ExecEnv.AreLegacyReputationsShown = C_Reputation.AreLegacyReputationsShown or function() return true end
|
|
|
|
|
Private.ExecEnv.GetReputationSortType = C_Reputation.GetReputationSortType or function() return 0 end;
|