diff --git a/Clicked/BindingConfig/Pages/New.lua b/Clicked/BindingConfig/Pages/New.lua index ff4a8a5..29ba820 100644 --- a/Clicked/BindingConfig/Pages/New.lua +++ b/Clicked/BindingConfig/Pages/New.lua @@ -291,10 +291,10 @@ local function ImportActionbar() binding.load.class.selected = 1 binding.load.class.single = select(2, UnitClass("player")) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then binding.load.specialization.selected = 1 binding.load.specialization.single = GetSpecialization() - elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + elseif Addon.EXPANSION >= Addon.Expansion.CATA then binding.load.specialization.selected = 1 binding.load.specialization.single = GetPrimaryTalentTree() end @@ -380,7 +380,7 @@ function Addon.BindingConfig.NewPage:Redraw() self:CreateTemplateButton(scrollFrame, ItemTemplate.IMPORT_SPELLBOOK, Addon.L["Automatically import from spellbook"]) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local label = AceGUI:Create("Label") --[[@as AceGUILabel]] label:SetText(Addon.L["Import class abilities per specialization"]) label:SetRelativeWidth(0.79) diff --git a/Clicked/BindingConfig/Tabs/Action.lua b/Clicked/BindingConfig/Tabs/Action.lua index 802bb0a..c205093 100644 --- a/Clicked/BindingConfig/Tabs/Action.lua +++ b/Clicked/BindingConfig/Tabs/Action.lua @@ -373,7 +373,7 @@ function Addon.BindingConfig.BindingActionTab:RedrawTargetSpell() return hasRank end) - if Addon.EXPANSION_LEVEL <= Addon.Expansion.WOTLK and anyHasRank then + if Addon.EXPANSION <= Addon.Expansion.WOTLK and anyHasRank then local function OnClick() for _, binding in ipairs(self.bindings) do if binding.actionType == Clicked2.ActionType.SPELL and not binding.action.spellMaxRank then diff --git a/Clicked/BindingConfig/Tabs/Target.lua b/Clicked/BindingConfig/Tabs/Target.lua index 375c629..e1750f5 100644 --- a/Clicked/BindingConfig/Tabs/Target.lua +++ b/Clicked/BindingConfig/Tabs/Target.lua @@ -277,12 +277,12 @@ function Addon.BindingConfig.BindingTargetTab:DrawTargetUnit(container, index, c Addon.TargetUnit.PARTY_5 } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then items[Addon.TargetUnit.FOCUS] = Addon.L["Focus"] table.insert(order, 7, Addon.TargetUnit.FOCUS) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then items[Addon.TargetUnit.ARENA_1] = Addon.L["Arena %s"]:format("1") items[Addon.TargetUnit.ARENA_2] = Addon.L["Arena %s"]:format("2") items[Addon.TargetUnit.ARENA_3] = Addon.L["Arena %s"]:format("3") diff --git a/Clicked/Conditions/ConditionUtils.lua b/Clicked/Conditions/ConditionUtils.lua index 05c84a7..870248f 100644 --- a/Clicked/Conditions/ConditionUtils.lua +++ b/Clicked/Conditions/ConditionUtils.lua @@ -162,7 +162,7 @@ function Addon.Condition.Utils.GetRelevantSpecializationIds(classNames, specIndi if #specIndices == 0 then if #classNames == 1 and classNames[1] == select(2, UnitClass("player")) then - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then specIndices[1] = GetSpecialization() else specIndices[1] = GetPrimaryTalentTree() diff --git a/Clicked/Conditions/LoadConditions.lua b/Clicked/Conditions/LoadConditions.lua index 66b15cc..0b70fb0 100644 --- a/Clicked/Conditions/LoadConditions.lua +++ b/Clicked/Conditions/LoadConditions.lua @@ -130,9 +130,9 @@ local config = { end }, dependencies = { "class" }, - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.CATA, + disabled = Addon.EXPANSION < Addon.Expansion.CATA, init = function() - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local specIndex = GetSpecialization() return Utils.CreateMultiselectLoadOption(specIndex == 5 and 1 or specIndex) else @@ -143,7 +143,7 @@ local config = { testOnEvents = { "PLAYER_TALENT_UPDATE" }, --- @return integer state = function() - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local specIndex = GetSpecialization() return specIndex == 5 and 1 or specIndex end @@ -173,7 +173,7 @@ local config = { } end }, - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.MOP, + disabled = Addon.EXPANSION < Addon.Expansion.MOP, init = function() local role = GetSpecializationRole(GetSpecialization()) or "DAMAGER" return Utils.CreateMultiselectLoadOption(role) @@ -198,7 +198,7 @@ local config = { --- @param class string[] --- @param specialization integer[] availableValues = function(class, specialization) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then local specIds = Utils.GetRelevantSpecializationIds(class, specialization) return Addon:GetLocalizedTalents(specIds) else @@ -254,7 +254,7 @@ local config = { end }, dependencies = { "class", "specialization" }, - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.BFA, + disabled = Addon.EXPANSION < Addon.Expansion.BFA, init = function() return Utils.CreateTalentLoadOption("") end, @@ -315,7 +315,7 @@ local config = { }, { true, false} end }, - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.BFA, + disabled = Addon.EXPANSION < Addon.Expansion.BFA, init = function() return Utils.CreateLoadOption(true) end, @@ -349,7 +349,7 @@ local config = { "RAID" } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then items["PVP"] = Addon.L["Battleground"] items["ARENA"] = Addon.L["Arena"] @@ -357,7 +357,7 @@ local config = { table.insert(order, "ARENA") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then items["SCENARIO"] = Addon.L["Scenario"] table.insert(order, 2, "SCENARIO") end @@ -448,7 +448,7 @@ local config = { return Utils.CreateLoadOption("") end, unpack = Utils.UnpackSimpleLoadOption, - testOnEvents = Addon.EXPANSION_LEVEL > Addon.Expansion.CLASSIC and + testOnEvents = Addon.EXPANSION > Addon.Expansion.CLASSIC and { "PLAYER_TALENT_UPDATE", "PLAYER_LEVEL_CHANGED", "LEARNED_SPELL_IN_TAB", "TRAIT_CONFIG_CREATED", "TRAIT_CONFIG_UPDATED", "LEARNED_SPELL_IN_SKILL_LINE" } or { "PLAYER_TALENT_UPDATE", "PLAYER_LEVEL_CHANGED", "LEARNED_SPELL_IN_TAB", "TRAIT_CONFIG_CREATED", "TRAIT_CONFIG_UPDATED", "RUNE_UPDATED", "PLAYER_EQUIPMENT_CHANGED" }, --- @return integer @@ -589,7 +589,7 @@ local config = { return result end }, - disabled = Addon.EXPANSION_LEVEL > Addon.Expansion.CLASSIC or C_Engraving == nil, + disabled = Addon.EXPANSION > Addon.Expansion.CLASSIC or C_Engraving == nil, init = function() return Utils.CreateLoadOption("") end, diff --git a/Clicked/Conditions/MacroConditions.lua b/Clicked/Conditions/MacroConditions.lua index 193191e..be967f4 100644 --- a/Clicked/Conditions/MacroConditions.lua +++ b/Clicked/Conditions/MacroConditions.lua @@ -28,7 +28,7 @@ local config = { label = "Form / Stance", negatable = true, availableValues = function(class, specialization) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local specIds = Utils.GetRelevantSpecializationIds(class, specialization) return Addon:GetLocalizedForms(specIds) else @@ -158,7 +158,7 @@ local config = { }, { id = "flying", - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.TBC, + disabled = Addon.EXPANSION < Addon.Expansion.TBC, drawer = { type = "select", label = "Flying", @@ -176,7 +176,7 @@ local config = { }, { id = "dynamicFlying", - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.DF, + disabled = Addon.EXPANSION < Addon.Expansion.DF, drawer = { type = "select", label = "Skyriding", @@ -194,7 +194,7 @@ local config = { }, { id = "flyable", - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.TBC, + disabled = Addon.EXPANSION < Addon.Expansion.TBC, drawer = { type = "select", label = "Flyable", @@ -212,7 +212,7 @@ local config = { }, { id = "advancedFlyable", - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.DF, + disabled = Addon.EXPANSION < Addon.Expansion.DF, drawer = { type = "select", label = "Advanced flyable", @@ -230,7 +230,7 @@ local config = { }, { id = "bonusbar", - disabled = Addon.EXPANSION_LEVEL < Addon.Expansion.CATA, + disabled = Addon.EXPANSION < Addon.Expansion.CATA, --- @type InputDrawerConfig drawer = { type = "input", diff --git a/Clicked/Config/Addon.lua b/Clicked/Config/Addon.lua index fcb1d81..3337e2b 100644 --- a/Clicked/Config/Addon.lua +++ b/Clicked/Config/Addon.lua @@ -62,7 +62,7 @@ function AddonOptions:CreateOptionsTable() type = "toggle", order = 101, width = "full", - hidden = Addon.EXPANSION_LEVEL < Addon.Expansion.DF, + hidden = Addon.EXPANSION < Addon.Expansion.DF, set = function (_, val) if val then LibDBIcon:AddButtonToCompartment(Addon.L["Clicked2"]) @@ -144,7 +144,7 @@ function AddonOptions:CreateOptionsTable() order = 600, width = "full", hidden = function() - return Addon.EXPANSION_LEVEL < Addon.Expansion.TWW + return Addon.EXPANSION < Addon.Expansion.TWW end, set = function (_, val) Addon.db.profile.options.disableInHouse = val diff --git a/Clicked/Config/SpellLibrary.lua b/Clicked/Config/SpellLibrary.lua index 1b0f088..879ba92 100644 --- a/Clicked/Config/SpellLibrary.lua +++ b/Clicked/Config/SpellLibrary.lua @@ -199,7 +199,7 @@ local function GetSpells_Classic() local function ParseSpellBookItem(type, id, tabName, tabIcon, specId) if not IsPassiveSpell(id) then if type == "SPELL" or type == "FUTURESPELL" or type == "PETACTION" then - local spell = Addon:GetSpellInfo(id, Addon.EXPANSION_LEVEL <= Addon.Expansion.WOTLK) + local spell = Addon:GetSpellInfo(id, Addon.EXPANSION <= Addon.Expansion.WOTLK) if spell ~= nil then --- @type SpellLibrarySpellResult @@ -308,7 +308,7 @@ local function GetSpells() return cached end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW then + if Addon.EXPANSION >= Addon.Expansion.TWW then cached = GetSpells_TWW() else cached = GetSpells_Classic() diff --git a/Clicked/Core/AttributeHandler.lua b/Clicked/Core/AttributeHandler.lua index 9b47f85..0fd9516 100644 --- a/Clicked/Core/AttributeHandler.lua +++ b/Clicked/Core/AttributeHandler.lua @@ -17,7 +17,7 @@ --- @class Addon local Addon = select(2, ...) -local hasTypeRelease = Addon.EXPANSION_LEVEL >= Addon.Expansion.DF or Addon.EXPANSION_LEVEL == Addon.Expansion.TBC +local hasTypeRelease = Addon.EXPANSION >= Addon.Expansion.DF or Addon.EXPANSION == Addon.Expansion.TBC local frameCache = {} diff --git a/Clicked/Core/BindingProcessor.lua b/Clicked/Core/BindingProcessor.lua index 1a1c7c8..292c3f1 100644 --- a/Clicked/Core/BindingProcessor.lua +++ b/Clicked/Core/BindingProcessor.lua @@ -260,20 +260,20 @@ local function ConstructAction(binding, target) AppendNegatableStringCondition(binding.load.channeling, "channeling") AppendNegatableStringCondition(binding.load.bar, "bar", true) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then AppendCondition(binding.load.flying, "flying") AppendCondition(binding.load.flyable, "flyable") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then AppendNegatableStringCondition(binding.load.bonusbar, "bonusbar") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then AppendCondition(binding.load.advancedFlyable, "advflyable") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW then + if Addon.EXPANSION >= Addon.Expansion.TWW then AppendCondition(binding.load.dynamicFlying, "dynamicFlying") end @@ -918,7 +918,7 @@ function Addon:UpdateTalentCache(callback, immediate) wipe(talentCache) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then local configId = C_ClassTalents.GetActiveConfigID() if configId == nil then Addon:UpdateTalentCache() @@ -973,7 +973,7 @@ function Addon:UpdateTalentCache(callback, immediate) end end end - elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + elseif Addon.EXPANSION >= Addon.Expansion.MOP then for i = 1, MAX_NUM_TALENTS do local info = C_SpecializationInfo.GetTalentInfo({ tier = math.ceil(i / MAX_NUM_TALENTS), @@ -1106,7 +1106,7 @@ function Addon:UpdateBindingLoadState(binding, causes) state.value = not Addon:IsNilOrEmpty(Addon:GetBindingValue(binding)) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW and Addon.db.profile.options.disableInHouse and ShouldPerformStateCheck("housing", { "HOUSE_EDITOR_MODE_CHANGED" }) then + if Addon.EXPANSION >= Addon.Expansion.TWW and Addon.db.profile.options.disableInHouse and ShouldPerformStateCheck("housing", { "HOUSE_EDITOR_MODE_CHANGED" }) then state.housing = not C_HouseEditor.IsHouseEditorActive() Clicked2:LogVerbose("Evaluated condition {condition} for binding {binding}: {value}", "housing", binding.uid, state.housing) end diff --git a/Clicked/Core/Clicked.lua b/Clicked/Core/Clicked.lua index f9bad6b..bc23c24 100644 --- a/Clicked/Core/Clicked.lua +++ b/Clicked/Core/Clicked.lua @@ -20,17 +20,6 @@ local LibDBIcon = LibStub("LibDBIcon-1.0") --- @class Addon local Addon = select(2, ...) -Addon.L = LibStub("AceLocale-3.0"):GetLocale("Clicked2") --[[@as table]] - ---- @class Clicked : AceAddon, AceEvent-3.0, LibLog-1.0.Logger -Clicked2 = LibStub("AceAddon-3.0"):NewAddon("Clicked2", "AceEvent-3.0", "LibLog-1.0") -Clicked2.VERSION = C_AddOns.GetAddOnMetadata("Clicked2", "Version") - ---@debug@ -if Clicked2.VERSION == "@project-version@" then - Clicked2.VERSION = "development" -end ---@end-debug@ local isPlayerInCombat = false local isInitialized = false @@ -143,7 +132,7 @@ local function PLAYER_ENTERING_WORLD() isInitialized = true playerFlagsCache = { - warMode = Addon.EXPANSION_LEVEL >= Addon.Expansion.BFA and C_PvP.IsWarModeDesired() or false + warMode = Addon.EXPANSION >= Addon.Expansion.BFA and C_PvP.IsWarModeDesired() or false } local isInitialLoadPending = false @@ -333,41 +322,41 @@ local function UpdateEventHooks(self, method) method(self, "PLAYER_REGEN_ENABLED", PLAYER_REGEN_ENABLED) method(self, "PLAYER_ENTERING_WORLD", PLAYER_ENTERING_WORLD) - if Addon.EXPANSION_LEVEL == Addon.Expansion.CLASSIC then + if Addon.EXPANSION == Addon.Expansion.CLASSIC then method(self, "RUNE_UPDATED", RUNE_UPDATED) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then method(self, "PLAYER_FOCUS_CHANGED", PLAYER_FOCUS_CHANGED) end - if Addon.EXPANSION_LEVEL <= Addon.Expansion.CATA then + if Addon.EXPANSION <= Addon.Expansion.CATA then method(self, "CHARACTER_POINTS_CHANGED", CHARACTER_POINTS_CHANGED) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.WOTLK then + if Addon.EXPANSION >= Addon.Expansion.WOTLK then method(self, "PLAYER_TALENT_UPDATE", PLAYER_TALENT_UPDATE) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.BFA then + if Addon.EXPANSION >= Addon.Expansion.BFA then method(self, "PLAYER_FLAGS_CHANGED", PLAYER_FLAGS_CHANGED) method(self, "PLAYER_PVP_TALENT_UPDATE", PLAYER_PVP_TALENT_UPDATE) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then method(self, "TRAIT_CONFIG_CREATED", TRAIT_CONFIG_CREATED) method(self, "TRAIT_CONFIG_UPDATED", TRAIT_CONFIG_UPDATED) end method(self, "PLAYER_LEVEL_CHANGED", PLAYER_LEVEL_CHANGED) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW or Addon.EXPANSION_LEVEL == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API + if Addon.EXPANSION >= Addon.Expansion.TWW or Addon.EXPANSION == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API method(self, "LEARNED_SPELL_IN_SKILL_LINE", LEARNED_SPELL_IN_SKILL_LINE) else method(self, "LEARNED_SPELL_IN_TAB", LEARNED_SPELL_IN_TAB) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW then + if Addon.EXPANSION >= Addon.Expansion.TWW then method(self, "HOUSE_EDITOR_MODE_CHANGED", HOUSE_EDITOR_MODE_CHANGED) end @@ -421,7 +410,7 @@ function Clicked2:OnEnable() UpdateEventHooks(self, self.RegisterEvent) -- self-cast warning - if not Addon.db.profile.options.ignoreSelfCastWarning and Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if not Addon.db.profile.options.ignoreSelfCastWarning and Addon.EXPANSION >= Addon.Expansion.DF then local selfCastModifier = GetModifiedClick("SELFCAST") if selfCastModifier ~= "NONE" then diff --git a/Clicked/Core/CommandProcessor.lua b/Clicked/Core/CommandProcessor.lua index 84ce989..3974a73 100644 --- a/Clicked/Core/CommandProcessor.lua +++ b/Clicked/Core/CommandProcessor.lua @@ -107,11 +107,11 @@ local function EnsureMacroFrameHandler() end ]]) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.WOTLK then + if Addon.EXPANSION >= Addon.Expansion.WOTLK then CreateStateDriverAttribute(macroFrameHandler, "vehicleui", "[vehicleui] enabled; disabled") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then CreateStateDriverAttribute(macroFrameHandler, "petbattle", "[petbattle] enabled; disabled") end diff --git a/Clicked/Core/Database.lua b/Clicked/Core/Database.lua index 3caf262..373121a 100644 --- a/Clicked/Core/Database.lua +++ b/Clicked/Core/Database.lua @@ -537,12 +537,12 @@ function Addon:GetNewBindingTemplate() } } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local specIndex = GetSpecialization() specIndex = specIndex == 5 and 1 or specIndex -- Initial spec template.load.specialization = GetTriStateLoadOptionTemplate(specIndex) template.load.specRole = GetTriStateLoadOptionTemplate(specIndex) - elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + elseif Addon.EXPANSION >= Addon.Expansion.CATA then --- @type number local specIndex = GetPrimaryTalentTree() template.load.specialization = GetTriStateLoadOptionTemplate(specIndex) diff --git a/Clicked/Core/Init.lua b/Clicked/Core/Init.lua index 0751244..92c30d9 100644 --- a/Clicked/Core/Init.lua +++ b/Clicked/Core/Init.lua @@ -14,10 +14,24 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . +--- @class Clicked : AceAddon, AceEvent-3.0, LibLog-1.0.Logger +Clicked2 = LibStub("AceAddon-3.0"):NewAddon("Clicked2", "AceEvent-3.0", "LibLog-1.0") +Clicked2.VERSION = C_AddOns.GetAddOnMetadata("Clicked2", "Version") + +Clicked2:LogVerbose("Initializing Clicked") + +--@debug@ +if Clicked2.VERSION == "@project-version@" then + Clicked2.VERSION = "development" + Clicked2:LogVerbose("Detected development version") +end +--@end-debug@ + --- @class Addon local Addon = select(2, ...) +Addon.L = LibStub("AceLocale-3.0"):GetLocale("Clicked2") ---- @enum ExpansionLevel +--- @enum Expansion Addon.Expansion = { CLASSIC = 1, TBC = 2, @@ -33,61 +47,72 @@ Addon.Expansion = { MN = 12, } ---- @type ExpansionLevel -Addon.EXPANSION_LEVEL = nil - ----@debug@ --- luacheck: ignore ----@diagnostic disable-next-line: lowercase-global -function dump(o) - if type(o) == 'table' then - local s = '{ ' - for k,v in pairs(o) do - if type(k) ~= 'number' then k = '"'..k..'"' end - -- luacheck: ignore - s = s .. '['..k..'] = ' .. dump(v) .. ',' +do + --- @type { [Expansion]: { min: integer, max: integer } } + local interfaceVersionMap ={ + [Addon.Expansion.CLASSIC] = { min = 10000, max = 20000 }, + [Addon.Expansion.TBC] = { min = 20000, max = 30000 }, + [Addon.Expansion.WOTLK] = { min = 30000, max = 40000 }, + [Addon.Expansion.CATA] = { min = 40000, max = 50000 }, + [Addon.Expansion.MOP] = { min = 50000, max = 60000 }, + [Addon.Expansion.WOD] = { min = 60000, max = 70000 }, + [Addon.Expansion.LEGION] = { min = 70000, max = 80000 }, + [Addon.Expansion.BFA] = { min = 80000, max = 90000 }, + [Addon.Expansion.SL] = { min = 90000, max = 100000 }, + [Addon.Expansion.DF] = { min = 100000, max = 110000 }, + [Addon.Expansion.TWW] = { min = 110000, max = 120000 }, + [Addon.Expansion.MN] = { min = 120000, max = 130000 }, + } + + local interfaceVersion = select(4, GetBuildInfo()) + + --- @param projectId integer + --- @param range { min: integer, max: integer } + --- @return boolean + local function IsExpansion(projectId, range) + if WOW_PROJECT_ID ~= projectId then + return false end - return s .. '} ' - else - return tostring(o) + + return interfaceVersion >= range.min and interfaceVersion < range.max + end + + --- @return Expansion + local function GetExpansionLevel() + if IsExpansion(WOW_PROJECT_MAINLINE, interfaceVersionMap[Addon.Expansion.MN]) then + return Addon.Expansion.MN + elseif IsExpansion(WOW_PROJECT_MISTS_CLASSIC, interfaceVersionMap[Addon.Expansion.MOP]) then + return Addon.Expansion.MOP + elseif IsExpansion(WOW_PROJECT_CATACLYSM_CLASSIC, interfaceVersionMap[Addon.Expansion.CATA]) then + return Addon.Expansion.CATA + elseif IsExpansion(WOW_PROJECT_WRATH_CLASSIC, interfaceVersionMap[Addon.Expansion.WOTLK]) then + return Addon.Expansion.WOTLK + elseif IsExpansion(WOW_PROJECT_BURNING_CRUSADE_CLASSIC, interfaceVersionMap[Addon.Expansion.TBC]) then + return Addon.Expansion.TBC + elseif IsExpansion(WOW_PROJECT_CLASSIC, interfaceVersionMap[Addon.Expansion.CLASSIC]) then + return Addon.Expansion.CLASSIC + end + + return Clicked2:LogFatal("Unable to determine expansion level for game flavor {projectId} and interface version {interfaceVersion}", + WOW_PROJECT_ID, interfaceVersion) end -end ----@end-debug@ ---- @param err any ---- @return function -local function errorhandler(err) - return geterrorhandler()(err) + Addon.EXPANSION = GetExpansionLevel() + Clicked2:LogVerbose("Detected expansion {expansion}", Addon.EXPANSION) end ---- @param func? function +--- @param func? fun(...): ... --- @param ... any --- @return boolean status --- @return ... function Addon:SafeCall(func, ...) if func ~= nil then - return xpcall(func, errorhandler, ...) + return xpcall(func, geterrorhandler(), ...) end return false end -if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE and select(4, GetBuildInfo()) >= 120000 then - Addon.EXPANSION_LEVEL = Addon.Expansion.MN -elseif WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then - Addon.EXPANSION_LEVEL = Addon.Expansion.TWW -elseif WOW_PROJECT_ID == WOW_PROJECT_MISTS_CLASSIC then - Addon.EXPANSION_LEVEL = Addon.Expansion.MOP -elseif WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC then - Addon.EXPANSION_LEVEL = Addon.Expansion.CATA -elseif WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC then - Addon.EXPANSION_LEVEL = Addon.Expansion.WOTLK -elseif WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC then - Addon.EXPANSION_LEVEL = Addon.Expansion.TBC -elseif WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then - Addon.EXPANSION_LEVEL = Addon.Expansion.CLASSIC -end - --- Check if the user is running a development build of the addon. --- --- @return boolean @@ -97,5 +122,6 @@ function Addon:IsDevelopmentBuild() return true end --@end-debug@ + return false end diff --git a/Clicked/Core/LocaleUtils.lua b/Clicked/Core/LocaleUtils.lua index cc4616e..1ad8dd3 100644 --- a/Clicked/Core/LocaleUtils.lua +++ b/Clicked/Core/LocaleUtils.lua @@ -44,17 +44,17 @@ local allPvpTalents = {} do --- @param race integer - --- @param expansion ExpansionLevel + --- @param expansion Expansion local function AddRace(race, expansion) - if Addon.EXPANSION_LEVEL >= expansion then + if Addon.EXPANSION >= expansion then table.insert(allRaces, race) end end --- @param class string - --- @param expansion ExpansionLevel + --- @param expansion Expansion local function AddClass(class, expansion) - if Addon.EXPANSION_LEVEL >= expansion then + if Addon.EXPANSION >= expansion then table.insert(allClasses, class) end end @@ -276,12 +276,12 @@ function Addon:GetLocalizedTargetUnits() Addon.TargetUnit.PARTY_5 } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then items[Addon.TargetUnit.FOCUS] = Addon.L["Focus"] table.insert(order, 7, Addon.TargetUnit.FOCUS) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then items[Addon.TargetUnit.ARENA_1] = Addon.L["Arena %s"]:format("1") items[Addon.TargetUnit.ARENA_2] = Addon.L["Arena %s"]:format("2") items[Addon.TargetUnit.ARENA_3] = Addon.L["Arena %s"]:format("3") @@ -447,7 +447,7 @@ function Addon:GetLocalizedSpecializations(classNames) return items, order end -if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then +if Addon.EXPANSION >= Addon.Expansion.DF then --- Get a localized list of all available talents for the --- given specialization IDs. If the `specializations` parameter --- is `nil` it will return results for the player's current specialization. @@ -483,7 +483,7 @@ if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then return result end -elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then +elseif Addon.EXPANSION >= Addon.Expansion.CATA then --- Get a localized list of all available talents for the --- given specialization IDs. If the `specializations` parameter --- is `nil` it will return results for the player's current specialization. @@ -598,7 +598,7 @@ function Addon:GetLocalizedPvPTalents(specializations) return result end -if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then +if Addon.EXPANSION >= Addon.Expansion.MOP then --- Get a localized list of all available shapeshift forms for the given specialization IDs. --- If the `specializations` parameter is `nil` it will return results for the player's current specialization. --- diff --git a/Clicked/Core/Tooltips.lua b/Clicked/Core/Tooltips.lua index 8bc5a92..481f1e4 100644 --- a/Clicked/Core/Tooltips.lua +++ b/Clicked/Core/Tooltips.lua @@ -184,7 +184,7 @@ end function Addon:AbilityTooltips_Initialize() -- Add a delay here to make sure we're the always at the bottom of the tooltip C_Timer.After(1, function() - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Unit, OnTooltipSetUnit) else GameTooltip:HookScript("OnTooltipSetUnit", OnTooltipSetUnit) @@ -193,7 +193,7 @@ function Addon:AbilityTooltips_Initialize() GameTooltip:HookScript("OnHide", OnTooltipHide) end) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Spell, OnTooltipSetSpell) else GameTooltip:HookScript("OnTooltipSetSpell", OnTooltipSetSpell) diff --git a/Clicked/Core/Upgrader.lua b/Clicked/Core/Upgrader.lua index 9e8f20b..fdedf89 100644 --- a/Clicked/Core/Upgrader.lua +++ b/Clicked/Core/Upgrader.lua @@ -179,7 +179,7 @@ local function UpgradeLegacy(profile, from) value = "ACTIVE" } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.BFA then + if Addon.EXPANSION >= Addon.Expansion.BFA then binding.load.pvpTalent = { selected = 0, single = 1, @@ -690,7 +690,7 @@ local function UpgradeLegacy(profile, from) -- 1.8.0 to 1.8.1 if string.sub(from, 1, 5) == "1.8.0" then for _, binding in ipairs(profile.bindings) do - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then if binding.load.talent.selected ~= 0 then binding.load.class.selected = 1 binding.load.specialization.selected = 1 @@ -729,7 +729,7 @@ local function Upgrade(db, from) for _, binding in ipairs(db.bindings) do binding.action.cancelForm = false - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then binding.load.talent = { selected = false, entries = { @@ -783,7 +783,7 @@ local function Upgrade(db, from) if from < 6 then for _, binding in ipairs(db.bindings) do - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then if #binding.load.talent.entries > 1 and binding.load.talent.entries[1].operation == "OR" then binding.load.talent.entries[1].operation = "AND" end @@ -806,7 +806,7 @@ local function Upgrade(db, from) if from < 7 then for _, binding in ipairs(db.bindings) do - if Addon.EXPANSION_LEVEL <= Addon.Expansion.CATA then + if Addon.EXPANSION <= Addon.Expansion.CATA then binding.load.talent = { selected = false, entries = { @@ -818,7 +818,7 @@ local function Upgrade(db, from) } } - if Addon.EXPANSION_LEVEL > Addon.Expansion.CLASSIC then + if Addon.EXPANSION > Addon.Expansion.CLASSIC then Addon:ShowInformationPopup("Clicked: Binding talent load options have been reset, sorry for the inconvenience.") end end diff --git a/Clicked/Core/Utils.lua b/Clicked/Core/Utils.lua index d3208ca..5e7acf5 100644 --- a/Clicked/Core/Utils.lua +++ b/Clicked/Core/Utils.lua @@ -42,7 +42,7 @@ local KEYBIND_ORDER_LIST = { local shapeshiftForms -- /run local a,b,c=table.concat,{},{};for d=1,GetNumShapeshiftForms() do local _,_,_,f=GetShapeshiftFormInfo(d);local e=C_Spell.GetSpellInfo(f).name;b[#b+1]=e;c[#c+1]=f;end print("{ "..a(c, ", ").." }, -- " ..a(b,", ")) -if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then +if Addon.EXPANSION >= Addon.Expansion.DF then --- @type { [integer]: integer[] } shapeshiftForms = { -- Holy Paladin @@ -84,7 +84,7 @@ if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then [261] = { 1784, 185422 }, -- Stealth, Shadow Dance [1453] = { 1784 }, -- Stealth } -elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then +elseif Addon.EXPANSION >= Addon.Expansion.MOP then --- @type { [integer]: integer[] } shapeshiftForms = { -- Holy Paladin @@ -194,13 +194,13 @@ else } } - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then local DRUID = "DRUID" table.insert(shapeshiftForms[DRUID], { 33891 }) -- Tree of Life table.insert(shapeshiftForms[DRUID], { 40120, 33943 }) -- Swift Flight Form, Flight Form end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.WOTLK then + if Addon.EXPANSION >= Addon.Expansion.WOTLK then local DEATHKNIGHT = "DEATHKNIGHT" shapeshiftForms[DEATHKNIGHT] = { { 48266 }, -- Blood Presence @@ -209,7 +209,7 @@ else } end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then local PALADIN = "PALADIN" shapeshiftForms[PALADIN] = { { 465 }, -- Devotion Aura @@ -463,7 +463,7 @@ function Addon:GetBindingValue(binding) local name if type(spell) == "number" then - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW or Addon.EXPANSION_LEVEL == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API + if Addon.EXPANSION >= Addon.Expansion.TWW or Addon.EXPANSION == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API name = C_Spell.GetSpellName(spell) else local data = C_Spell.GetSpellInfo(spell) @@ -474,7 +474,7 @@ function Addon:GetBindingValue(binding) name = spell end - if Addon.EXPANSION_LEVEL <= Addon.Expansion.WOTLK and not binding.action.spellMaxRank and C_Spell.IsSpellDataCached(spell) then + if Addon.EXPANSION <= Addon.Expansion.WOTLK and not binding.action.spellMaxRank and C_Spell.IsSpellDataCached(spell) then local rank = C_Spell.GetSpellSubtext(spell) if not self:IsNilOrEmpty(rank) then @@ -513,7 +513,7 @@ function Addon:GetBindingValue(binding) local name if type(aura) == "number" then - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TWW or Addon.EXPANSION_LEVEL == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API + if Addon.EXPANSION >= Addon.Expansion.TWW or Addon.EXPANSION == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API name = C_Spell.GetSpellName(aura) else local data = C_Spell.GetSpellInfo(aura) @@ -715,7 +715,7 @@ function Addon:GetSpellInfo(input, addSubText) local spell = C_Spell.GetSpellInfo(input) - if spell ~= nil and Addon.EXPANSION_LEVEL <= Addon.Expansion.WOTLK and addSubText and C_Spell.IsSpellDataCached(spell.spellID) then + if spell ~= nil and Addon.EXPANSION <= Addon.Expansion.WOTLK and addSubText and C_Spell.IsSpellDataCached(spell.spellID) then local subtext = C_Spell.GetSpellSubtext(spell.spellID) if not self:IsNilOrEmpty(subtext) then @@ -897,7 +897,7 @@ function Addon:CompareBindings(left, right, leftCanLoad, rightCanLoad) return GetKeybindIndex(left.keybind) < GetKeybindIndex(right.keybind) end -if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then +if Addon.EXPANSION >= Addon.Expansion.MOP then --- Get all available shapeshift forms for the specified spec ID. --- Note that this does not mean _currently available_ shapeshift forms, --- just all possible shapeshift forms. @@ -976,7 +976,7 @@ function Addon:GetAvailableShapeshiftForms(binding) end end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then if select(2, UnitClass("player")) == "DRUID" then local specId = GetSpecializationInfo(GetSpecialization()) local all = Addon:GetShapeshiftForms(specId) @@ -1084,7 +1084,7 @@ end --- @param specId integer --- @return integer? function Addon:GetSpecIndexFromId(specId) - if Addon.EXPANSION_LEVEL < Addon.Expansion.MOP then + if Addon.EXPANSION < Addon.Expansion.MOP then return nil end diff --git a/Clicked/Debug/StatusOutput.lua b/Clicked/Debug/StatusOutput.lua index b068dc3..d964f90 100644 --- a/Clicked/Debug/StatusOutput.lua +++ b/Clicked/Debug/StatusOutput.lua @@ -49,15 +49,15 @@ local function GetBasicinfoString() table.insert(lines, "Level: " .. UnitLevel("player")) table.insert(lines, "Class: " .. select(2, UnitClass("player"))) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then local configId = C_ClassTalents.GetActiveConfigID() table.insert(lines, "Talents: " .. (configId ~= nil and C_Traits.GenerateImportString(configId) or "unknown")) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then local id, name = GetSpecializationInfo(GetSpecialization()) table.insert(lines, "Specialization: " .. id .. " (" .. name .. ")") - elseif Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + elseif Addon.EXPANSION >= Addon.Expansion.CATA then local id, name = GetTalentTabInfo(GetPrimaryTalentTree()) table.insert(lines, "Specialization: " .. id .. " (" .. name .. ")") end @@ -70,12 +70,12 @@ local function GetBasicinfoString() table.insert(lines, "Possess Bar: " .. driver:GetAttribute("state-possessbar")) table.insert(lines, "Override Bar: " .. driver:GetAttribute("state-overridebar")) - if Addon.EXPANSION_LEVEL >= Addon.Expansion.WOTLK then + if Addon.EXPANSION >= Addon.Expansion.WOTLK then table.insert(lines, "Vehicle: " .. driver:GetAttribute("state-vehicle")) table.insert(lines, "Vehicle UI: " .. driver:GetAttribute("state-vehicleui")) end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then table.insert(lines, "Pet Battle: " .. driver:GetAttribute("state-petbattle")) end @@ -265,12 +265,12 @@ function Addon:StatusOutput_Initialize() CreateStateDriver("possessbar", "[possessbar] enabled; disabled") CreateStateDriver("overridebar", "[overridebar] enabled; disabled") - if Addon.EXPANSION_LEVEL >= Addon.Expansion.WOTLK then + if Addon.EXPANSION >= Addon.Expansion.WOTLK then CreateStateDriver("vehicle", "[@vehicle,exists] enabled; disabled") CreateStateDriver("vehicleui", "[vehicleui] enabled; disabled") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.MOP then + if Addon.EXPANSION >= Addon.Expansion.MOP then CreateStateDriver("petbattle", "[petbattle] enabled; disabled") end diff --git a/Clicked/UnitFrames/Blizzard.lua b/Clicked/UnitFrames/Blizzard.lua index 746db02..e8607b6 100644 --- a/Clicked/UnitFrames/Blizzard.lua +++ b/Clicked/UnitFrames/Blizzard.lua @@ -79,16 +79,16 @@ function Addon:RegisterBlizzardUnitFrames() HookUnitFrame(5, "Boss%dTargetFrame") - if Addon.EXPANSION_LEVEL >= Addon.Expansion.TBC then + if Addon.EXPANSION >= Addon.Expansion.TBC then Clicked2:RegisterClickCastFrame("FocusFrame") Clicked2:RegisterClickCastFrame("FocusFrameToT") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.CATA then + if Addon.EXPANSION >= Addon.Expansion.CATA then HookUnitFrame(3, "ArenaEnemyFrame%d", "Blizzard_ArenaUI") end - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF or Addon.EXPANSION_LEVEL == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API + if Addon.EXPANSION >= Addon.Expansion.DF or Addon.EXPANSION == Addon.Expansion.TBC then -- HACK: Anniversary follows the modern API local partyFrameIndex = 1 for frame in PartyFrame.PartyMemberFramePool:EnumerateActive() do diff --git a/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua b/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua index fa5d77a..69afc5d 100644 --- a/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua +++ b/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua @@ -191,7 +191,7 @@ local function Constructor() local background = frame:CreateTexture(nil, "BACKGROUND") background:SetAllPoints() - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then background:SetTexture("Interface/HUD/UIActionBar"); background:SetTexCoord(0.707031, 0.886719, 0.248047, 0.291992) background:SetTextureSliceMargins(8, 8, 8, 8) @@ -209,7 +209,7 @@ local function Constructor() local backgroundMask - if Addon.EXPANSION_LEVEL >= Addon.Expansion.DF then + if Addon.EXPANSION >= Addon.Expansion.DF then backgroundMask = frame:CreateMaskTexture(nil, "BACKGROUND") backgroundMask:SetPoint("CENTER", 0, -0.5) backgroundMask:SetTexture("Interface/HUD/UIActionBarIconFrameMask", "CLAMPTOBLACKADDITIVE", "CLAMPTOBLACKADDITIVE");