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.

173 lines
4.7 KiB

local AddonName, Private = ...
WeakAuras = {}
WeakAuras.L = {}
WeakAuras.frames = {}
WeakAuras.normalWidth = 1.3
WeakAuras.halfWidth = WeakAuras.normalWidth / 2
WeakAuras.doubleWidth = WeakAuras.normalWidth * 2
local versionStringFromToc = GetAddOnMetadata("WeakAuras", "Version")
local versionString = "4.0.2"
local buildTime = "20220601013052"
local isDevVersion = false
--[==[@debug@
if versionStringFromToc == "4.0.2" then
versionStringFromToc = "Dev"
buildTime = "Dev"
isDevVersion = true
end
--@end-debug@]==]
local intendedWoWProject = WOW_PROJECT_MAINLINE
--[===[@non-version-retail@
--[====[@version-classic@
intendedWoWProject = WOW_PROJECT_CLASSIC
--@end-version-classic@]====]
--[====[@version-bcc@
4 years ago
intendedWoWProject = WOW_PROJECT_BURNING_CRUSADE_CLASSIC or WOW_PROJECT_MAINLINE
--@end-version-bcc@]====]
--@end-non-version-retail@]===]
WeakAuras.versionString = versionStringFromToc
WeakAuras.buildTime = buildTime
WeakAuras.newFeatureString = "|TInterface\\OptionsFrame\\UI-OptionsFrame-NewFeatureIcon:0|t"
WeakAuras.BuildInfo = select(4, GetBuildInfo())
function WeakAuras.IsClassic()
return WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
end
function WeakAuras.IsBCC()
return WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC
end
function WeakAuras.IsRetail()
return WOW_PROJECT_ID == WOW_PROJECT_MAINLINE
end
function WeakAuras.IsCorrectVersion()
return isDevVersion or intendedWoWProject == WOW_PROJECT_ID
end
WeakAuras.prettyPrint = function(...)
print("|cff9900ffWeakAuras:|r ", ...)
end
-- Force enable WeakAurasCompanion and Archive because some addon managers interfere with it
EnableAddOn("WeakAurasCompanion")
EnableAddOn("WeakAurasArchive")
local libsAreOk = true
do
local StandAloneLibs = {
"Archivist",
"LibStub"
}
local LibStubLibs = {
"CallbackHandler-1.0",
"AceConfig-3.0",
"AceConsole-3.0",
"AceGUI-3.0",
"AceEvent-3.0",
"AceGUISharedMediaWidgets-1.0",
"AceTimer-3.0",
"AceSerializer-3.0",
"AceComm-3.0",
"LibSharedMedia-3.0",
"LibDataBroker-1.1",
"LibCompress",
"SpellRange-1.0",
"LibCustomGlow-1.0",
"LibDBIcon-1.0",
"LibGetFrame-1.0",
"LibSerialize",
}
if WeakAuras.IsClassic() then
tinsert(LibStubLibs, "LibClassicSpellActionCount-1.0")
tinsert(LibStubLibs, "LibClassicCasterino")
tinsert(LibStubLibs, "LibClassicDurations")
end
for _, lib in ipairs(StandAloneLibs) do
if not lib then
libsAreOk = false
WeakAuras.prettyPrint("Missing library:", lib)
end
end
if LibStub then
for _, lib in ipairs(LibStubLibs) do
if not LibStub:GetLibrary(lib, true) then
libsAreOk = false
WeakAuras.prettyPrint("Missing library:", lib)
end
end
else
libsAreOk = false
end
end
function WeakAuras.IsLibsOK()
return libsAreOk
end
local intendedWoWProjectName = {
[WOW_PROJECT_MAINLINE] = "Retail",
[WOW_PROJECT_CLASSIC] = "Classic",
[WOW_PROJECT_BURNING_CRUSADE_CLASSIC or 5] = "The Burning Crusade Classic" -- TODO: Remove when every flavor build has the constant
}
Private.wrongTargetMessage = "This version of WeakAuras was packaged for World of Warcraft " .. intendedWoWProjectName[intendedWoWProject] ..
". Please install the " .. intendedWoWProjectName[WOW_PROJECT_ID] ..
" version instead.\nIf you are using an addon manager, then" ..
" contact their support for further assistance and reinstall WeakAuras manually."
if not WeakAuras.IsCorrectVersion() then
C_Timer.After(1, function() WeakAuras.prettyPrint(Private.wrongTargetMessage) end)
end
if not WeakAuras.IsLibsOK() then
C_Timer.After(1, function() WeakAuras.prettyPrint("WeakAuras is missing necessary libraries. Please reinstall a proper package.") end)
end
-- These function stubs are defined here to reduce the number of errors that occur if WeakAuras.lua fails to compile
function WeakAuras.RegisterRegionType()
end
function WeakAuras.RegisterRegionOptions()
end
function Private.StartProfileSystem()
end
function Private.StartProfileAura()
end
function Private.StopProfileSystem()
end
function Private.StopProfileAura()
end
function Private.StartProfileUID()
end
function Private.StopProfileUID()
end
-- If WeakAuras shuts down due to being installed on the wrong target, keep the bindings from erroring
function WeakAuras.StartProfile()
end
function WeakAuras.StopProfile()
end
function WeakAuras.PrintProfile()
end
function WeakAuras.CountWagoUpdates()
-- XXX this is to work around the Companion app trying to use our stuff!
return 0
end