108 lines
2.8 KiB
Lua
108 lines
2.8 KiB
Lua
local _G = ShaguTweaks.GetGlobalEnv()
|
|
|
|
-- Central capability layer for ClassicAPI / SuperWoW integration.
|
|
-- Keep feature checks here so individual modules don't scatter DLL-specific
|
|
-- detection logic all over the codebase.
|
|
ShaguTweaks.API = ShaguTweaks.API or {}
|
|
local API = ShaguTweaks.API
|
|
|
|
API.classicapi_version = tonumber(_G.CLASSIC_API_VERSION) or 0
|
|
API.classicapi = type(_G.C_NamePlate) == "table"
|
|
or type(_G.C_Spell) == "table"
|
|
or type(_G.UnitGUID) == "function"
|
|
|
|
API.nameplates = type(_G.C_NamePlate) == "table"
|
|
and type(_G.C_NamePlate.GetNamePlateForUnit) == "function"
|
|
|
|
API.casts = type(_G.C_Spell) == "table"
|
|
and type(_G.C_Spell.UnitCastingInfo) == "function"
|
|
and type(_G.C_Spell.UnitChannelInfo) == "function"
|
|
|
|
API.spellinfo = type(_G.GetSpellInfo) == "function"
|
|
|
|
API.inventory = type(_G.C_Container) == "table"
|
|
and type(_G.C_Container.GetContainerNumFreeSlots) == "function"
|
|
|
|
API.merchant = type(_G.C_MerchantFrame) == "table"
|
|
and type(_G.C_MerchantFrame.GetNumJunkItems) == "function"
|
|
and type(_G.C_MerchantFrame.SellAllJunkItems) == "function"
|
|
|
|
API.playerstate = type(_G.IsMounted) == "function"
|
|
and type(_G.Dismount) == "function"
|
|
and type(_G.GetShapeshiftFormID) == "function"
|
|
and type(_G.CancelShapeshiftForm) == "function"
|
|
|
|
API.unitguid = type(_G.UnitGUID) == "function"
|
|
|
|
-- SuperWoW remains optional. It can still provide useful extra cast/GUID
|
|
-- information, but ClassicAPI is the primary compatibility layer.
|
|
API.superwow = type(_G.SpellInfo) == "function"
|
|
and type(_G.CombatLogAdd) == "function"
|
|
|
|
API.GetNamePlateForUnit = function(unit)
|
|
if API.nameplates then
|
|
return _G.C_NamePlate.GetNamePlateForUnit(unit)
|
|
end
|
|
end
|
|
|
|
API.UnitCastingInfo = function(unit)
|
|
if API.casts then
|
|
return _G.C_Spell.UnitCastingInfo(unit)
|
|
end
|
|
end
|
|
|
|
API.UnitChannelInfo = function(unit)
|
|
if API.casts then
|
|
return _G.C_Spell.UnitChannelInfo(unit)
|
|
end
|
|
end
|
|
|
|
API.GetSpellInfo = function(spell, bookType)
|
|
if API.spellinfo then
|
|
return _G.GetSpellInfo(spell, bookType)
|
|
end
|
|
end
|
|
|
|
API.GetContainerNumFreeSlots = function(bag)
|
|
if API.inventory then
|
|
return _G.C_Container.GetContainerNumFreeSlots(bag)
|
|
end
|
|
return 0, 0
|
|
end
|
|
|
|
API.GetNumJunkItems = function()
|
|
if API.merchant then
|
|
return _G.C_MerchantFrame.GetNumJunkItems()
|
|
end
|
|
return 0
|
|
end
|
|
|
|
API.SellAllJunkItems = function()
|
|
if API.merchant then
|
|
return _G.C_MerchantFrame.SellAllJunkItems()
|
|
end
|
|
end
|
|
|
|
API.IsMounted = function()
|
|
return API.playerstate and _G.IsMounted() or false
|
|
end
|
|
|
|
API.Dismount = function()
|
|
if API.playerstate then return _G.Dismount() end
|
|
end
|
|
|
|
API.GetShapeshiftFormID = function()
|
|
if API.playerstate then return _G.GetShapeshiftFormID() end
|
|
return 0
|
|
end
|
|
|
|
API.CancelShapeshiftForm = function()
|
|
if API.playerstate then return _G.CancelShapeshiftForm() end
|
|
end
|
|
|
|
API.UnitGUID = function(unit)
|
|
if API.unitguid then
|
|
return _G.UnitGUID(unit)
|
|
end
|
|
end
|