diff --git a/Clicked/Config/Addon.lua b/Clicked/Config/Addon.lua index 0b7e8362..b4982b06 100644 --- a/Clicked/Config/Addon.lua +++ b/Clicked/Config/Addon.lua @@ -61,7 +61,7 @@ function AddonOptions:CreateOptionsTable() type = "toggle", order = 101, width = "full", - hidden = not Addon:IsGameVersionAtleast("RETAIL"), + hidden = Addon.EXPANSION_LEVEL < Addon.EXPANSION.DF, set = function (_, val) if val then LibDBIcon:AddButtonToCompartment(Addon.L["Clicked"]) diff --git a/Clicked/Config/Bindings.lua b/Clicked/Config/Bindings.lua index b361e306..9edd8ae0 100644 --- a/Clicked/Config/Bindings.lua +++ b/Clicked/Config/Bindings.lua @@ -396,7 +396,7 @@ local function HijackSpellButton_UpdateButton(self) button:SetID(parent:GetID()) button:SetScript("OnEnter", function(_, motion) - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then parent:OnEnter(motion) else SpellButton_OnEnter(parent, motion) @@ -404,7 +404,7 @@ local function HijackSpellButton_UpdateButton(self) end) button:SetScript("OnLeave", function() - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then parent:OnLeave() else SpellButton_OnLeave(parent) @@ -415,7 +415,7 @@ local function HijackSpellButton_UpdateButton(self) local slot = SpellBook_GetSpellBookSlot(parent); local name, subName = GetSpellBookItemName(slot, SpellBookFrame.bookType) - if mouseButton ~= "RightButton" and (not Addon:IsGameVersionAtleast("CATA") and not Addon:IsStringNilOrEmpty(subName)) then + if mouseButton ~= "RightButton" and (Addon.EXPANSION_LEVEL <= Addon.EXPANSION.WOTLK and not Addon:IsStringNilOrEmpty(subName)) then name = string.format("%s(%s)", name, subName) end @@ -1407,7 +1407,7 @@ local function DrawSpellItemAuraSelection(container, action, mode) end if mode == Addon.BindingTypes.SPELL then - local hasRank = not Addon:IsGameVersionAtleast("CATA") and id ~= nil and string.find(name, "%((.+)%)") + local hasRank = Addon.EXPANSION_LEVEL <= Addon.EXPANSION.WOTLK and id ~= nil and string.find(name, "%((.+)%)") -- pick from spellbook button do @@ -1438,7 +1438,7 @@ local function DrawSpellItemAuraSelection(container, action, mode) local tooltip = Addon.L["Click on a spell book entry to select it."] - if not Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL <= Addon.EXPANSION.WOTLK then tooltip = tooltip .. "\n" .. Addon.L["Right click to use the max rank."] end @@ -2318,17 +2318,23 @@ local function DrawMacroBonusBar(container, bonusbar) end end - local tips = { - string.format(Addon.L["For Dragonriding, use bonus bar %s"], "|r5|cffffffff") - } + local tips = nil + + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then + local tipList = { + string.format(Addon.L["For Dragonriding, use bonus bar %s"], "|r5|cffffffff") + } + + if tContains(Addon:GetBindingRaces(binding), "Dracthyr") then + table.insert(tipList, string.format(Addon.L["For Soar, use bonus bar %s"], "|r1|cffffffff")) + end - if tContains(Addon:GetBindingRaces(binding), "Dracthyr") then - table.insert(tips, string.format(Addon.L["For Soar, use bonus bar %s"], "|r1|cffffffff")) + tips = table.concat(tipList, "\n") end inputField:SetCallback("OnTextChanged", OnTextChanged) - RegisterTooltip(inputField, Addon.L["Bonus bar"], table.concat(tips, "\n")) + RegisterTooltip(inputField, Addon.L["Bonus bar"], tips) end end @@ -2388,13 +2394,13 @@ local function DrawBindingMacroConditionsPage(container, binding) if binding.type == Addon.BindingTypes.UNIT_SELECT or binding.type == Addon.BindingTypes.UNIT_MENU then DrawMacroCombat(container, load.combat) else - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local classNames = GetTriStateLoadOptionValue(load.class) local specIndices = GetTriStateLoadOptionValue(load.specialization) local specializationIds = GetRelevantSpecializationIds(classNames, specIndices) DrawMacroInStance(container, load.form, specializationIds) - elseif Addon:IsGameVersionAtleast("CLASSIC") then + else local classNames = GetTriStateLoadOptionValue(load.class) Classic_DrawMacroInStance(container, load.form, classNames) @@ -2408,16 +2414,18 @@ local function DrawBindingMacroConditionsPage(container, binding) DrawMacroSwimming(container, load.swimming) DrawMacroChanneling(container, load.channeling) - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then DrawMacroFlying(container, load.flying) DrawMacroFlyable(container, load.flyable) end - if Addon:IsGameVersionAtleast("RETAIL") then - DrawMacroAdvancedFlyable(container, load.advancedFlyable) + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then + DrawMacroBonusBar(container, load.bonusbar) end - DrawMacroBonusBar(container, load.bonusbar) + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then + DrawMacroAdvancedFlyable(container, load.advancedFlyable) + end end end @@ -2567,47 +2575,29 @@ end --- @param container AceGUIContainer --- @param instanceType Binding.TriStateLoadOption local function DrawLoadInInstanceType(container, instanceType) - local items = {} - local order + local items = { + NONE = Addon.L["No Instance"], + PARTY = Addon.L["Dungeon"], + RAID = Addon.L["Raid"] + } - if Addon:IsGameVersionAtleast("CLASSIC") then - items["NONE"] = Addon.L["No Instance"] - items["PARTY"] = Addon.L["Dungeon"] - items["RAID"] = Addon.L["Raid"] - end + local order = { + "NONE", + "PARTY", + "RAID" + } - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then items["PVP"] = Addon.L["Battleground"] items["ARENA"] = Addon.L["Arena"] - end - if Addon:IsGameVersionAtleast("RETAIL") then - items["SCENARIO"] = Addon.L["Scenario"] + table.insert(order, "PVP") + table.insert(order, "ARENA") end - if Addon:IsGameVersionAtleast("RETAIL") then - order = { - "NONE", - "SCENARIO", - "PARTY", - "RAID", - "PVP", - "ARENA" - } - elseif Addon:IsGameVersionAtleast("BC") then - order = { - "NONE", - "PARTY", - "RAID", - "PVP", - "ARENA" - } - elseif Addon:IsGameVersionAtleast("CLASSIC") then - order = { - "NONE", - "PARTY", - "RAID" - } + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then + items["SCENARIO"] = Addon.L["Scenario"] + table.insert(order, 2, "SCENARIO") end DrawTristateLoadOption(container, Addon.L["Instance type"], items, order, instanceType) @@ -2676,7 +2666,7 @@ local function DrawBindingLoadConditionsPage(container, binding) DrawLoadClass(container, load.class) DrawLoadRace(container, load.race) - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then local classNames = GetTriStateLoadOptionValue(load.class) local specIndices = GetTriStateLoadOptionValue(load.specialization) local specializationIds = GetRelevantSpecializationIds(classNames, specIndices) @@ -2684,15 +2674,16 @@ local function DrawBindingLoadConditionsPage(container, binding) DrawLoadSpecialization(container, load.specialization, classNames) DrawLoadTalent(container, load.talent --[[@as Binding.MutliFieldLoadOption]], specializationIds) - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BFA then DrawLoadPvPTalent(container, load.pvpTalent, specializationIds) DrawLoadWarMode(container, load.warMode) end - elseif Addon:IsGameVersionAtleast("WOTLK") then - local classNames = GetTriStateLoadOptionValue(load.class) + -- TODO: Re-enable this once talents are supported in Classic + -- else + -- local classNames = GetTriStateLoadOptionValue(load.class) - Classic_DrawLoadSpecialization(container, load.specialization) - Classic_DrawLoadTalent(container, load.talent --[[@as Binding.TriStateLoadOption]], classNames) + -- Classic_DrawLoadSpecialization(container, load.specialization) + -- Classic_DrawLoadTalent(container, load.talent --[[@as Binding.TriStateLoadOption]], classNames) end DrawLoadInInstanceType(container, load.instanceType) @@ -2954,10 +2945,10 @@ local function CreateFromItemTemplate(identifier) elseif identifier == ITEM_TEMPLATE_IMPORT_ACTIONBAR then local group - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then local name, icon - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then _, name, _, icon = GetSpecializationInfo(GetSpecialization()) else local class = select(3, UnitClass("player")) @@ -3038,9 +3029,12 @@ local function CreateFromItemTemplate(identifier) binding.load.class.selected = 1 binding.load.class.single = select(2, UnitClass("player")) - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then + binding.load.specialization.selected = 1 + binding.load.specialization.single = GetSpecialization() + elseif Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then binding.load.specialization.selected = 1 - binding.load.specialization.single = GetSpecialization and GetSpecialization() or GetPrimaryTalentTree() + binding.load.specialization.single = GetPrimaryTalentTree() end end end @@ -3184,7 +3178,7 @@ local function DrawBinding(container) end -- self-cast text - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local selfCastModifier = GetModifiedClick("SELFCAST") if selfCastModifier ~= "NONE" then @@ -3442,7 +3436,7 @@ function Addon:BindingConfig_Initialize() HijackSpellButton_UpdateButton(nil) end) - if Addon:IsGameVersionAtleast("CATA") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then for i = 1, SPELLS_PER_PAGE do local currSpellButton = _G["SpellButton" .. i]; hooksecurefunc(currSpellButton, "UpdateButton", HijackSpellButton_UpdateButton) diff --git a/Clicked/Core/AttributeHandler.lua b/Clicked/Core/AttributeHandler.lua index b87f85b1..0867515f 100644 --- a/Clicked/Core/AttributeHandler.lua +++ b/Clicked/Core/AttributeHandler.lua @@ -145,7 +145,7 @@ function Addon:CreateCommandAttributes(register, command, prefix, suffix) elseif command.action == Addon.CommandType.MACRO then local attributeType = "type" - if Addon:IsGameVersionAtleast("RETAIL") and not Addon.db.profile.options.onKeyDown then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF and not Addon.db.profile.options.onKeyDown then attributeType = "typerelease" end diff --git a/Clicked/Core/BindingProcessor.lua b/Clicked/Core/BindingProcessor.lua index 606833df..54504251 100644 --- a/Clicked/Core/BindingProcessor.lua +++ b/Clicked/Core/BindingProcessor.lua @@ -248,16 +248,19 @@ local function ConstructAction(binding, target) AppendCondition(binding.load.swimming, "swimming") AppendNegatableStringCondition(binding.load.channeling, "channeling") - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then AppendCondition(binding.load.flying, "flying") AppendCondition(binding.load.flyable, "flyable") end - if Addon:IsGameVersionAtleast("RETAIL") then - AppendCondition(binding.load.advancedFlyable, "advflyable") + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then AppendNegatableStringCondition(binding.load.bonusbar, "bonusbar") end + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then + AppendCondition(binding.load.advancedFlyable, "advflyable") + end + do local forms = Addon:GetAvailableShapeshiftForms(binding) @@ -826,7 +829,7 @@ function Addon:UpdateTalentCacheAndReloadBindings(delay, ...) return end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then wipe(talentCache) local configId = C_ClassTalents.GetActiveConfigID() @@ -875,7 +878,7 @@ function Addon:UpdateTalentCacheAndReloadBindings(delay, ...) end end end - elseif Addon:IsGameVersionAtleast("CATA") then + elseif Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then wipe(talentCache) for tab = 1, GetNumTalentTabs() do @@ -1026,7 +1029,7 @@ function Addon:UpdateBindingLoadState(binding, options) state.race = ValidateTriStateLoadOption(load.race, IsRaceIndexSelected) end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BFA then -- pvp talent selected if ShouldPerformStateCheck("PLAYER_PVP_TALENT_UPDATE") then local cache = {} @@ -1112,15 +1115,15 @@ function Addon:UpdateBindingLoadState(binding, options) end end - if Addon:IsGameVersionAtleast("WOTLK") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then -- specialization if ShouldPerformStateCheck("PLAYER_TALENT_UPDATE") then local function IsSpecializationIndexSelected(index) - local retail = GetSpecialization and GetSpecialization() - local cata = GetPrimaryTalentTree and GetPrimaryTalentTree() - local wotlk = GetActiveTalentGroup and GetActiveTalentGroup() - local selected = retail or cata or wotlk - return index == selected + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then + return index == GetSpecialization() + else + return index == GetPrimaryTalentTree() + end end state.specialization = ValidateTriStateLoadOption(load.specialization, IsSpecializationIndexSelected) @@ -1189,7 +1192,7 @@ function Addon:UpdateBindingLoadState(binding, options) return true end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local specId = GetSpecializationInfo(GetSpecialization()) -- specId can be nil on the first PLAYER_TALENT_UPDATE event fires before PLAYER_ENTERING_WORLD fires @@ -1204,7 +1207,7 @@ function Addon:UpdateBindingLoadState(binding, options) end return IsSpellKnown(forms[formIndex]) - elseif Addon:IsGameVersionAtleast("CLASSIC") then + else local class = select(2, UnitClass("player")) local forms = Addon:Classic_GetShapeshiftForms(class) @@ -1225,7 +1228,7 @@ function Addon:UpdateBindingLoadState(binding, options) do local checks = { "PLAYER_TALENT_UPDATE", "PLAYER_LEVEL_CHANGED", "LEARNED_SPELL_IN_TAB" } - if Addon:IsClassic() then + if Addon.EXPANSION_LEVEL == Addon.EXPANSION.CLASSIC then table.insert(checks, "RUNE_UPDATED") table.insert(checks, "PLAYER_EQUIPMENT_CHANGED") end diff --git a/Clicked/Core/Clicked.lua b/Clicked/Core/Clicked.lua index 623fd814..b552d4f0 100644 --- a/Clicked/Core/Clicked.lua +++ b/Clicked/Core/Clicked.lua @@ -212,6 +212,52 @@ local function RUNE_UPDATED() Clicked:ReloadBindings(false, true, "RUNE_UPDATED") end +--- @param self AceEvent-3.0 +--- @param method fun(self: AceEvent-3.0, event: WowEvent, callback: function|string) +local function UpdateEventHooks(self, method) + method(self, "PLAYER_REGEN_DISABLED", PLAYER_REGEN_DISABLED) + method(self, "PLAYER_REGEN_ENABLED", PLAYER_REGEN_ENABLED) + method(self, "PLAYER_ENTERING_WORLD", PLAYER_ENTERING_WORLD) + + if Addon.EXPANSION_LEVEL == Addon.EXPANSION.CLASSIC then + method(self, "RUNE_UPDATED", RUNE_UPDATED) + end + + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then + method(self, "PLAYER_FOCUS_CHANGED", PLAYER_FOCUS_CHANGED) + end + + if Addon.EXPANSION_LEVEL <= Addon.EXPANSION.CATA then + method(self, "CHARACTER_POINTS_CHANGED", CHARACTER_POINTS_CHANGED) + end + + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.WOTLK then + method(self, "PLAYER_TALENT_UPDATE", PLAYER_TALENT_UPDATE) + end + + if Addon.EXPANSION_LEVEL >= 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 + 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) + method(self, "LEARNED_SPELL_IN_TAB", LEARNED_SPELL_IN_TAB) + method(self, "PLAYER_EQUIPMENT_CHANGED", PLAYER_EQUIPMENT_CHANGED) + method(self, "GROUP_ROSTER_UPDATE", GROUP_ROSTER_UPDATE) + method(self, "ADDON_LOADED", ADDON_LOADED) + method(self, "GET_ITEM_INFO_RECEIVED", GET_ITEM_INFO_RECEIVED) + method(self, "ZONE_CHANGED", ZONE_CHANGED) + method(self, "ZONE_CHANGED_INDOORS", ZONE_CHANGED_INDOORS) + method(self, "ZONE_CHANGED_NEW_AREA", ZONE_CHANGED_NEW_AREA) + method(self, "MODIFIER_STATE_CHANGED", MODIFIER_STATE_CHANGED) + method(self, "UNIT_TARGET", UNIT_TARGET) +end + -- Public addon API function Clicked:OnInitialize() @@ -246,82 +292,11 @@ function Clicked:OnEnable() print(Addon:AppendClickedMessagePrefix("You are using a development version, download the latest release from " .. projectUrl)) ---@end-debug@ - self:RegisterEvent("PLAYER_REGEN_DISABLED", PLAYER_REGEN_DISABLED) - self:RegisterEvent("PLAYER_REGEN_ENABLED", PLAYER_REGEN_ENABLED) - self:RegisterEvent("PLAYER_ENTERING_WORLD", PLAYER_ENTERING_WORLD) - - if Addon:IsGameVersionAtleast("BC") then - self:RegisterEvent("PLAYER_FOCUS_CHANGED", PLAYER_FOCUS_CHANGED) - - if Addon:IsBC() or Addon:IsWotLK() then - self:RegisterEvent("CHARACTER_POINTS_CHANGED", CHARACTER_POINTS_CHANGED) - end - end - - if Addon:IsClassic() then - --- @diagnostic disable-next-line: param-type-mismatch - self:RegisterEvent("RUNE_UPDATED", RUNE_UPDATED) - end - - if Addon:IsGameVersionAtleast("WOTLK") then - self:RegisterEvent("PLAYER_TALENT_UPDATE", PLAYER_TALENT_UPDATE) - end - - if Addon:IsGameVersionAtleast("RETAIL") then - self:RegisterEvent("PLAYER_FLAGS_CHANGED", PLAYER_FLAGS_CHANGED) - self:RegisterEvent("PLAYER_PVP_TALENT_UPDATE", PLAYER_PVP_TALENT_UPDATE) - self:RegisterEvent("TRAIT_CONFIG_CREATED", TRAIT_CONFIG_CREATED) - self:RegisterEvent("TRAIT_CONFIG_UPDATED", TRAIT_CONFIG_UPDATED) - end - - self:RegisterEvent("PLAYER_LEVEL_CHANGED", PLAYER_LEVEL_CHANGED) - self:RegisterEvent("LEARNED_SPELL_IN_TAB", LEARNED_SPELL_IN_TAB) - self:RegisterEvent("PLAYER_EQUIPMENT_CHANGED", PLAYER_EQUIPMENT_CHANGED) - self:RegisterEvent("GROUP_ROSTER_UPDATE", GROUP_ROSTER_UPDATE) - self:RegisterEvent("ADDON_LOADED", ADDON_LOADED) - self:RegisterEvent("GET_ITEM_INFO_RECEIVED", GET_ITEM_INFO_RECEIVED) - self:RegisterEvent("ZONE_CHANGED", ZONE_CHANGED) - self:RegisterEvent("ZONE_CHANGED_INDOORS", ZONE_CHANGED_INDOORS) - self:RegisterEvent("ZONE_CHANGED_NEW_AREA", ZONE_CHANGED_NEW_AREA) - self:RegisterEvent("MODIFIER_STATE_CHANGED", MODIFIER_STATE_CHANGED) - self:RegisterEvent("UNIT_TARGET", UNIT_TARGET) + UpdateEventHooks(self, self.RegisterEvent) end function Clicked:OnDisable() - self:UnregisterEvent("PLAYER_REGEN_DISABLED") - self:UnregisterEvent("PLAYER_REGEN_ENABLED") - self:UnregisterEvent("PLAYER_ENTERING_WORLD") - - if Addon:IsGameVersionAtleast("BC") then - self:UnregisterEvent("PLAYER_FOCUS_CHANGED") - - if Addon:IsBC() or Addon:IsWotLK() then - self:UnregisterEvent("CHARACTER_POINTS_CHANGED") - end - end - - if Addon:IsGameVersionAtleast("WOTLK") then - self:UnregisterEvent("PLAYER_TALENT_UPDATE") - end - - if Addon:IsGameVersionAtleast("RETAIL") then - self:UnregisterEvent("PLAYER_FLAGS_CHANGED") - self:UnregisterEvent("PLAYER_PVP_TALENT_UPDATE") - self:UnregisterEvent("TRAIT_CONFIG_CREATED") - self:UnregisterEvent("TRAIT_CONFIG_UPDATED") - end - - self:UnregisterEvent("PLAYER_LEVEL_CHANGED") - self:UnregisterEvent("LEARNED_SPELL_IN_TAB") - self:UnregisterEvent("PLAYER_EQUIPMENT_CHANGED") - self:UnregisterEvent("GROUP_ROSTER_UPDATE") - self:UnregisterEvent("ADDON_LOADED") - self:UnregisterEvent("GET_ITEM_INFO_RECEIVED") - self:UnregisterEvent("ZONE_CHANGED") - self:UnregisterEvent("ZONE_CHANGED_INDOORS") - self:UnregisterEvent("ZONE_CHANGED_NEW_AREA") - self:UnregisterEvent("MODIFIER_STATE_CHANGED") - self:UnregisterEvent("UNIT_TARGET") + UpdateEventHooks(self, self.UnregisterEvent) end -- Private addon API diff --git a/Clicked/Core/CommandProcessor.lua b/Clicked/Core/CommandProcessor.lua index f3cb6326..c578c770 100644 --- a/Clicked/Core/CommandProcessor.lua +++ b/Clicked/Core/CommandProcessor.lua @@ -120,11 +120,11 @@ local function EnsureMacroFrameHandler() end ]]) - if Addon:IsGameVersionAtleast("WOTLK") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.WOTLK then CreateStateDriverAttribute(macroFrameHandler, "vehicleui", "[vehicleui] enabled; disabled") end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then CreateStateDriverAttribute(macroFrameHandler, "petbattle", "[petbattle] enabled; disabled") end @@ -158,7 +158,7 @@ function Addon:UpdateMacroFrameHandler(keybinds, attributes) end function Addon:UpdateMacroFrameHandlerPressType() - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local value = not Addon.db.profile.options.onKeyDown macroFrameHandler:SetAttribute("pressAndHoldAction", value) end diff --git a/Clicked/Core/Database.lua b/Clicked/Core/Database.lua index 3a180fee..950e7431 100644 --- a/Clicked/Core/Database.lua +++ b/Clicked/Core/Database.lua @@ -360,7 +360,7 @@ function Addon:GetNewBindingTemplate() flyable = GetNegatableLoadOptionTemplate(), advancedFlyable = GetNegatableLoadOptionTemplate(), specialization = GetTriStateLoadOptionTemplate(1), - talent = GetTriStateLoadOptionTemplate(1), + talent = GetMultiFieldLoadOptionTemplate(""), pvpTalent = GetMultiFieldLoadOptionTemplate(""), warMode = GetNegatableLoadOptionTemplate() }, @@ -368,21 +368,14 @@ function Addon:GetNewBindingTemplate() } } - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then local specIndex = GetSpecialization() specIndex = specIndex == 5 and 1 or specIndex -- Initial spec template.load.specialization = GetTriStateLoadOptionTemplate(specIndex) - elseif Addon:IsGameVersionAtleast("CATA") then + elseif Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then --- @type number local specIndex = GetPrimaryTalentTree() template.load.specialization = GetTriStateLoadOptionTemplate(specIndex) - elseif Addon:IsGameVersionAtleast("WOTLK") then - local specIndex = GetActiveTalentGroup() - template.load.specialization = GetTriStateLoadOptionTemplate(specIndex) - end - - if Addon:IsGameVersionAtleast("CATA") then - template.load.talent = GetMultiFieldLoadOptionTemplate("") end return template diff --git a/Clicked/Core/Init.lua b/Clicked/Core/Init.lua index 6490e076..b72f76f0 100644 --- a/Clicked/Core/Init.lua +++ b/Clicked/Core/Init.lua @@ -17,6 +17,23 @@ --- @class ClickedInternal local Addon = select(2, ...) +--- @enum ExpansionLevel +Addon.EXPANSION = { + CLASSIC = 1, + BC = 2, + WOTLK = 3, + CATA = 4, + MOP = 5, + WOD = 6, + LEGION = 7, + BFA = 8, + SL = 9, + DF = 10, +} + +--- @type ExpansionLevel +Addon.EXPANSION_LEVEL = nil + ---@debug@ -- luacheck: ignore ---@diagnostic disable-next-line: lowercase-global @@ -56,6 +73,7 @@ end --- Check if the game client is running the retail version of the API. --- --- @return boolean +--- @deprecated function Addon:IsRetail() return WOW_PROJECT_ID == WOW_PROJECT_MAINLINE end @@ -63,6 +81,7 @@ end --- Check if the game client is running the Classic version of the API. --- --- @return boolean +--- @deprecated function Addon:IsClassic() return WOW_PROJECT_ID == WOW_PROJECT_CLASSIC end @@ -70,6 +89,7 @@ end --- Check if the game client is running the Burning Crusade version of the API. --- --- @return boolean +--- @deprecated function Addon:IsBC() return WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC end @@ -77,6 +97,7 @@ end --- Check if the game client is running the Wrath of the Lich King version of the API. --- --- @return boolean +--- @deprecated function Addon:IsWotLK() return WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC end @@ -84,15 +105,29 @@ end --- Check if the game client is running the Cataclysm version of the API. --- --- @return boolean +--- @deprecated function Addon:IsCata() return WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC end +if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then + Addon.EXPANSION_LEVEL = Addon.EXPANSION.DF +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.BC +elseif WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then + Addon.EXPANSION_LEVEL = Addon.EXPANSION.CLASSIC +end + --- Check if the client version is at least the specified version, for example `IsAtLeast("BC")` will return `true` on both the BC and Retail versions of the --- game, but `false` on Classic. --- --- @param version "RETAIL"|"CLASSIC"|"BC"|"WOTLK"|"CATA" --- @return boolean +--- @deprecated function Addon:IsGameVersionAtleast(version) local isRetail = Addon:IsRetail() local isCata = isRetail or Addon:IsCata() diff --git a/Clicked/Core/LocaleUtils.lua b/Clicked/Core/LocaleUtils.lua index 317122df..40591d14 100644 --- a/Clicked/Core/LocaleUtils.lua +++ b/Clicked/Core/LocaleUtils.lua @@ -38,58 +38,61 @@ local allTalents = {} --- @type table local allPvpTalents = {} -if Addon:IsGameVersionAtleast("CLASSIC") then - table.insert(allRaces, 1) -- Human - table.insert(allRaces, 2) -- Orc - table.insert(allRaces, 3) -- Dwarf - table.insert(allRaces, 4) -- NightElf - table.insert(allRaces, 5) -- Scourge - table.insert(allRaces, 6) -- Tauren - table.insert(allRaces, 7) -- Gnome - table.insert(allRaces, 8) -- Troll - - table.insert(allClasses, "WARRIOR") - table.insert(allClasses, "PALADIN") - table.insert(allClasses, "HUNTER") - table.insert(allClasses, "ROGUE") - table.insert(allClasses, "PRIEST") - table.insert(allClasses, "SHAMAN") - table.insert(allClasses, "MAGE") - table.insert(allClasses, "WARLOCK") - table.insert(allClasses, "DRUID") -end - -if Addon:IsGameVersionAtleast("BC") then - table.insert(allRaces, 10) -- BloodElf - table.insert(allRaces, 11) -- Draenei -end - -if Addon:IsGameVersionAtleast("WOTLK") then - table.insert(allClasses, "DEATHKNIGHT") -end +do + --- @param race integer + --- @param expansion ExpansionLevel + local function AddRace(race, expansion) + if Addon.EXPANSION_LEVEL >= expansion then + table.insert(allRaces, race) + end + end -if Addon:IsGameVersionAtleast("CATA") then - table.insert(allRaces, 9) -- Goblin - table.insert(allRaces, 22) -- Worgen -end + --- @param class string + --- @param expansion ExpansionLevel + local function AddClass(class, expansion) + if Addon.EXPANSION_LEVEL >= expansion then + table.insert(allClasses, class) + end + end -if Addon:IsGameVersionAtleast("RETAIL") then - table.insert(allRaces, 24) -- Pandaren - table.insert(allRaces, 27) -- Nightborne - table.insert(allRaces, 28) -- HighmountainTauren - table.insert(allRaces, 29) -- VoidElf - table.insert(allRaces, 30) -- LightforgedDraenei - table.insert(allRaces, 31) -- HighmountainTauren - table.insert(allRaces, 32) -- KulTiran - table.insert(allRaces, 34) -- DarkIronDwarf - table.insert(allRaces, 35) -- Vulpera - table.insert(allRaces, 36) -- MagharOrc - table.insert(allRaces, 37) -- Mechagnome - table.insert(allRaces, 70) -- Dracthyr - - table.insert(allClasses, "MONK") - table.insert(allClasses, "DEMONHUNTER") - table.insert(allClasses, "EVOKER") + AddRace(1, Addon.EXPANSION.CLASSIC) -- Human + AddRace(2, Addon.EXPANSION.CLASSIC) -- Orc + AddRace(3, Addon.EXPANSION.CLASSIC) -- Dwarf + AddRace(4, Addon.EXPANSION.CLASSIC) -- NightElf + AddRace(5, Addon.EXPANSION.CLASSIC) -- Scourge + AddRace(6, Addon.EXPANSION.CLASSIC) -- Tauren + AddRace(7, Addon.EXPANSION.CLASSIC) -- Gnome + AddRace(8, Addon.EXPANSION.CLASSIC) -- Troll + AddRace(10, Addon.EXPANSION.BC) -- BloodElf + AddRace(11, Addon.EXPANSION.BC) -- Draenei + AddRace(9, Addon.EXPANSION.CATA) -- Goblin + AddRace(22, Addon.EXPANSION.CATA) -- Worgen + AddRace(24, Addon.EXPANSION.MOP) -- Pandaren + AddRace(27, Addon.EXPANSION.BFA) -- Nightborne + AddRace(28, Addon.EXPANSION.BFA) -- HighmountainTauren + AddRace(29, Addon.EXPANSION.BFA) -- VoidElf + AddRace(30, Addon.EXPANSION.BFA) -- LightforgedDraenei + AddRace(31, Addon.EXPANSION.BFA) -- HighmountainTauren + AddRace(32, Addon.EXPANSION.BFA) -- KulTiran + AddRace(34, Addon.EXPANSION.BFA) -- DarkIronDwarf + AddRace(35, Addon.EXPANSION.BFA) -- Vulpera + AddRace(36, Addon.EXPANSION.BFA) -- MagharOrc + AddRace(37, Addon.EXPANSION.BFA) -- Mechagnome + AddRace(70, Addon.EXPANSION.DF) -- Dracthyr + + AddClass("WARRIOR", Addon.EXPANSION.CLASSIC) + AddClass("PALADIN", Addon.EXPANSION.CLASSIC) + AddClass("HUNTER", Addon.EXPANSION.CLASSIC) + AddClass("ROGUE", Addon.EXPANSION.CLASSIC) + AddClass("PRIEST", Addon.EXPANSION.CLASSIC) + AddClass("SHAMAN", Addon.EXPANSION.CLASSIC) + AddClass("MAGE", Addon.EXPANSION.CLASSIC) + AddClass("WARLOCK", Addon.EXPANSION.CLASSIC) + AddClass("DRUID", Addon.EXPANSION.CLASSIC) + AddClass("DEATHKNIGHT", Addon.EXPANSION.WOTLK) + AddClass("MONK", Addon.EXPANSION.MOP) + AddClass("DEMONHUNTER", Addon.EXPANSION.LEGION) + AddClass("EVOKER", Addon.EXPANSION.DF) end --- Attempt to retrieve cached talent data for the specified specialization. @@ -236,87 +239,51 @@ function Addon:GetLocalizedTargetUnits() --- @type string[] local order - if Addon:IsGameVersionAtleast("CLASSIC") then - items[Addon.TargetUnits.DEFAULT] = Addon.L["Default"] - items[Addon.TargetUnits.PLAYER] = Addon.L["Player (you)"] - items[Addon.TargetUnits.TARGET] = Addon.L["Target"] - items[Addon.TargetUnits.TARGET_OF_TARGET] = Addon.L["Target of target"] - items[Addon.TargetUnits.MOUSEOVER] = Addon.L["Mouseover"] - items[Addon.TargetUnits.MOUSEOVER_TARGET] = Addon.L["Target of mouseover"] - items[Addon.TargetUnits.CURSOR] = Addon.L["Cursor"] - items[Addon.TargetUnits.PET] = Addon.L["Pet"] - items[Addon.TargetUnits.PET_TARGET] = Addon.L["Pet target"] - items[Addon.TargetUnits.PARTY_1] = Addon.L["Party %s"]:format("1") - items[Addon.TargetUnits.PARTY_2] = Addon.L["Party %s"]:format("2") - items[Addon.TargetUnits.PARTY_3] = Addon.L["Party %s"]:format("3") - items[Addon.TargetUnits.PARTY_4] = Addon.L["Party %s"]:format("4") - items[Addon.TargetUnits.PARTY_5] = Addon.L["Party %s"]:format("5") - - order = { - Addon.TargetUnits.DEFAULT, - Addon.TargetUnits.PLAYER, - Addon.TargetUnits.TARGET, - Addon.TargetUnits.TARGET_OF_TARGET, - Addon.TargetUnits.MOUSEOVER, - Addon.TargetUnits.MOUSEOVER_TARGET, - Addon.TargetUnits.CURSOR, - Addon.TargetUnits.PET, - Addon.TargetUnits.PET_TARGET, - Addon.TargetUnits.PARTY_1, - Addon.TargetUnits.PARTY_2, - Addon.TargetUnits.PARTY_3, - Addon.TargetUnits.PARTY_4, - Addon.TargetUnits.PARTY_5 - } - end + items[Addon.TargetUnits.DEFAULT] = Addon.L["Default"] + items[Addon.TargetUnits.PLAYER] = Addon.L["Player (you)"] + items[Addon.TargetUnits.TARGET] = Addon.L["Target"] + items[Addon.TargetUnits.TARGET_OF_TARGET] = Addon.L["Target of target"] + items[Addon.TargetUnits.MOUSEOVER] = Addon.L["Mouseover"] + items[Addon.TargetUnits.MOUSEOVER_TARGET] = Addon.L["Target of mouseover"] + items[Addon.TargetUnits.CURSOR] = Addon.L["Cursor"] + items[Addon.TargetUnits.PET] = Addon.L["Pet"] + items[Addon.TargetUnits.PET_TARGET] = Addon.L["Pet target"] + items[Addon.TargetUnits.PARTY_1] = Addon.L["Party %s"]:format("1") + items[Addon.TargetUnits.PARTY_2] = Addon.L["Party %s"]:format("2") + items[Addon.TargetUnits.PARTY_3] = Addon.L["Party %s"]:format("3") + items[Addon.TargetUnits.PARTY_4] = Addon.L["Party %s"]:format("4") + items[Addon.TargetUnits.PARTY_5] = Addon.L["Party %s"]:format("5") + + order = { + Addon.TargetUnits.DEFAULT, + Addon.TargetUnits.PLAYER, + Addon.TargetUnits.TARGET, + Addon.TargetUnits.TARGET_OF_TARGET, + Addon.TargetUnits.MOUSEOVER, + Addon.TargetUnits.MOUSEOVER_TARGET, + Addon.TargetUnits.CURSOR, + Addon.TargetUnits.PET, + Addon.TargetUnits.PET_TARGET, + Addon.TargetUnits.PARTY_1, + Addon.TargetUnits.PARTY_2, + Addon.TargetUnits.PARTY_3, + Addon.TargetUnits.PARTY_4, + Addon.TargetUnits.PARTY_5 + } - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then items[Addon.TargetUnits.FOCUS] = Addon.L["Focus"] - - order = { - Addon.TargetUnits.DEFAULT, - Addon.TargetUnits.PLAYER, - Addon.TargetUnits.TARGET, - Addon.TargetUnits.TARGET_OF_TARGET, - Addon.TargetUnits.MOUSEOVER, - Addon.TargetUnits.MOUSEOVER_TARGET, - Addon.TargetUnits.FOCUS, - Addon.TargetUnits.CURSOR, - Addon.TargetUnits.PET, - Addon.TargetUnits.PET_TARGET, - Addon.TargetUnits.PARTY_1, - Addon.TargetUnits.PARTY_2, - Addon.TargetUnits.PARTY_3, - Addon.TargetUnits.PARTY_4, - Addon.TargetUnits.PARTY_5, - } + table.insert(order, 7, Addon.TargetUnits.FOCUS) end - if Addon:IsGameVersionAtleast("RETAIL") then + -- TODO: Check if this was available in WOTLK + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then items[Addon.TargetUnits.ARENA_1] = Addon.L["Arena %s"]:format("1") items[Addon.TargetUnits.ARENA_2] = Addon.L["Arena %s"]:format("2") items[Addon.TargetUnits.ARENA_3] = Addon.L["Arena %s"]:format("3") - - order = { - Addon.TargetUnits.DEFAULT, - Addon.TargetUnits.PLAYER, - Addon.TargetUnits.TARGET, - Addon.TargetUnits.TARGET_OF_TARGET, - Addon.TargetUnits.MOUSEOVER, - Addon.TargetUnits.MOUSEOVER_TARGET, - Addon.TargetUnits.FOCUS, - Addon.TargetUnits.CURSOR, - Addon.TargetUnits.PET, - Addon.TargetUnits.PET_TARGET, - Addon.TargetUnits.PARTY_1, - Addon.TargetUnits.PARTY_2, - Addon.TargetUnits.PARTY_3, - Addon.TargetUnits.PARTY_4, - Addon.TargetUnits.PARTY_5, - Addon.TargetUnits.ARENA_1, - Addon.TargetUnits.ARENA_2, - Addon.TargetUnits.ARENA_3 - } + table.insert(order, Addon.TargetUnits.ARENA_1) + table.insert(order, Addon.TargetUnits.ARENA_2) + table.insert(order, Addon.TargetUnits.ARENA_3) end return items, order @@ -841,7 +808,7 @@ elseif Addon:IsGameVersionAtleast("CATA") then return items, order end -elseif Addon:IsGameVersionAtleast("CLASSIC") then +else --- Get a localized list of all available talents for the given classes. --- If the `classes` parameter is `nil` it will return results for the player's current class. --- diff --git a/Clicked/Core/Tooltips.lua b/Clicked/Core/Tooltips.lua index ddec7be0..ba536729 100644 --- a/Clicked/Core/Tooltips.lua +++ b/Clicked/Core/Tooltips.lua @@ -181,7 +181,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:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Unit, OnTooltipSetUnit) else GameTooltip:HookScript("OnTooltipSetUnit", OnTooltipSetUnit) @@ -190,7 +190,7 @@ function Addon:AbilityTooltips_Initialize() GameTooltip:HookScript("OnHide", OnTooltipHide) end) - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= 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 6dc85c05..03bd13cf 100644 --- a/Clicked/Core/Upgrader.lua +++ b/Clicked/Core/Upgrader.lua @@ -178,7 +178,7 @@ local function UpgradeLegacy(profile, from) value = "ACTIVE" } - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BFA then binding.load.pvpTalent = { selected = 0, single = 1, @@ -685,7 +685,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:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then if binding.load.talent.selected ~= 0 then binding.load.class.selected = 1 binding.load.specialization.selected = 1 @@ -724,7 +724,7 @@ local function Upgrade(db, from) for _, binding in ipairs(db.bindings) do binding.action.cancelForm = false - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then binding.load.talent = { selected = false, entries = { @@ -778,7 +778,7 @@ local function Upgrade(db, from) if from < 6 then for _, binding in ipairs(db.bindings) do - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= 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 diff --git a/Clicked/Core/Utils.lua b/Clicked/Core/Utils.lua index a3779414..0357c087 100644 --- a/Clicked/Core/Utils.lua +++ b/Clicked/Core/Utils.lua @@ -41,7 +41,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=GetSpellInfo(f);b[#b+1]=e;c[#c+1]=f;end print("{ "..a(c, ",").." }, --" ..a(b,", ")) -if Addon:IsGameVersionAtleast("RETAIL") then +if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then --- @type { [integer]: integer[] } shapeshiftForms = { -- Arms Warrior @@ -84,7 +84,7 @@ if Addon:IsGameVersionAtleast("RETAIL") then [105] = { 5487, 768, 783, 197625, 114282, 210053 }, -- Bear Form, Cat Form, Travel Form, Moonkin Form, Treant Form, Mount Form [1447] = { 5487, 768, 783, 114282, 210053 }, -- Bear Form, Cat Form, Travel Form, Treant Form, Mount Form } -elseif Addon:IsGameVersionAtleast("CLASSIC") then +else --- @type { [string]: integer[][] } shapeshiftForms = { WARRIOR = { @@ -120,12 +120,12 @@ elseif Addon:IsGameVersionAtleast("CLASSIC") then } } - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then table.insert(shapeshiftForms["DRUID"], { 33891 }) -- Tree of Life table.insert(shapeshiftForms["DRUID"], { 40120, 33943 }) -- Swift Flight Form, Flight Form end - if Addon:IsGameVersionAtleast("WOTLK") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.WOTLK then local DEATHKNIGHT = "DEATHKNIGHT" shapeshiftForms[DEATHKNIGHT] = { @@ -589,7 +589,7 @@ function Addon:GetSpellInfo(input, addSubText) addSubText = true end - if addSubText and not Addon:IsGameVersionAtleast("CATA") then + if addSubText and Addon.EXPANSION_LEVEL <= Addon.EXPANSION.WOTLK then --- @diagnostic disable-next-line: redundant-parameter local subtext = GetSpellSubtext(spellId) @@ -600,7 +600,7 @@ function Addon:GetSpellInfo(input, addSubText) -- 10.0: Evokers and Dragonriding share ability names, this will ensure that the Dragonriding abilities are suffixed with (Dragonriding) so that -- both spells will work. - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local dragonRidingSpells = { 372608, 372610, 361584, 374990, 403092 } if tContains(dragonRidingSpells, spellId) then @@ -870,7 +870,7 @@ function Addon:GetAvailableShapeshiftForms(binding) end end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then if select(2, UnitClass("player")) == "DRUID" then local specId = GetSpecializationInfo(GetSpecialization()) local all = Addon:GetShapeshiftForms(specId) @@ -996,7 +996,7 @@ end --- --- @param category string|integer function Addon:OpenSettingsMenu(category) - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then Settings.OpenToCategory(category) else InterfaceOptionsFrame_OpenToCategory(category) diff --git a/Clicked/Debug/StatusOutput.lua b/Clicked/Debug/StatusOutput.lua index d5b5bb15..1766b219 100644 --- a/Clicked/Debug/StatusOutput.lua +++ b/Clicked/Debug/StatusOutput.lua @@ -44,36 +44,34 @@ local function GetBasicinfoString() table.insert(lines, "Level: " .. UnitLevel("player")) table.insert(lines, "Class: " .. select(2, UnitClass("player"))) - if Addon:IsGameVersionAtleast("RETAIL") then - do - local id, name = GetSpecializationInfo(GetSpecialization()) - table.insert(lines, "Specialization: " .. id .. " (" .. name .. ")") - end + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then + LoadAddOn('Blizzard_ClassTalentUI') + ClassTalentFrame.TalentsTab:UpdateTreeInfo() + table.insert(lines, "Talents: " .. ClassTalentFrame.TalentsTab:GetLoadoutExportString()) + end - do - LoadAddOn('Blizzard_ClassTalentUI') - ClassTalentFrame.TalentsTab:UpdateTreeInfo() - table.insert(lines, "Talents: " .. ClassTalentFrame.TalentsTab:GetLoadoutExportString()) - end + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then + local id, name = GetSpecializationInfo(GetSpecialization()) + table.insert(lines, "Specialization: " .. id .. " (" .. name .. ")") + elseif Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then + local id, name = GetTalentTabInfo(GetPrimaryTalentTree()) + table.insert(lines, "Specialization: " .. id .. " (" .. name .. ")") end table.insert(lines, "Press Mode: " .. (Addon.db.profile.options.onKeyDown and "AnyDown" or "AnyUp")) - - if Addon:IsGameVersionAtleast("RETAIL") then - table.insert(lines, "Autogen: " .. (Addon.db.profile.options.bindUnassignedModifiers and "True" or "False")) - end + table.insert(lines, "Autogen: " .. (Addon.db.profile.options.bindUnassignedModifiers and "True" or "False")) table.insert(lines, "") table.insert(lines, "Possess Bar: " .. driver:GetAttribute("state-possessbar")) table.insert(lines, "Override Bar: " .. driver:GetAttribute("state-overridebar")) - if Addon:IsGameVersionAtleast("WOTLK") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.WOTLK then table.insert(lines, "Vehicle: " .. driver:GetAttribute("state-vehicle")) table.insert(lines, "Vehicle UI: " .. driver:GetAttribute("state-vehicleui")) end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then table.insert(lines, "Pet Battle: " .. driver:GetAttribute("state-petbattle")) end @@ -268,12 +266,12 @@ function Addon:StatusOutput_Initialize() CreateStateDriver("possessbar", "[possessbar] enabled; disabled") CreateStateDriver("overridebar", "[overridebar] enabled; disabled") - if Addon:IsGameVersionAtleast("WOTLK") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.WOTLK then CreateStateDriver("vehicle", "[@vehicle,exists] enabled; disabled") CreateStateDriver("vehicleui", "[vehicleui] enabled; disabled") end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.MOP then CreateStateDriver("petbattle", "[petbattle] enabled; disabled") end diff --git a/Clicked/Skins/ElvUI.lua b/Clicked/Skins/ElvUI.lua index 36544b28..b80c45ce 100644 --- a/Clicked/Skins/ElvUI.lua +++ b/Clicked/Skins/ElvUI.lua @@ -144,7 +144,8 @@ local function Initialize() widget.treeframe:SetTemplate("Transparent") skins:HandleScrollBar(widget.scrollbar) - if Addon:IsGameVersionAtleast("BC") then + -- TODO: Check if this is still needed + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then skins:HandleButton(widget.sortButton, true) else skins:HandleButton(widget.sortButton, true, nil, true) diff --git a/Clicked/UnitFrames/Blizzard.lua b/Clicked/UnitFrames/Blizzard.lua index fba911a0..539cb331 100644 --- a/Clicked/UnitFrames/Blizzard.lua +++ b/Clicked/UnitFrames/Blizzard.lua @@ -72,27 +72,23 @@ end -- Private addon API function Addon:RegisterBlizzardUnitFrames() - if Addon:IsGameVersionAtleast("CLASSIC") then - Clicked:RegisterClickCastFrame("PlayerFrame") - Clicked:RegisterClickCastFrame("PetFrame") - Clicked:RegisterClickCastFrame("TargetFrame") - Clicked:RegisterClickCastFrame("TargetFrameToT") + Clicked:RegisterClickCastFrame("PlayerFrame") + Clicked:RegisterClickCastFrame("PetFrame") + Clicked:RegisterClickCastFrame("TargetFrame") + Clicked:RegisterClickCastFrame("TargetFrameToT") - HookUnitFrame(5, "Boss%dTargetFrame") + HookUnitFrame(5, "Boss%dTargetFrame") - if not Addon:IsGameVersionAtleast("RETAIL") then - HookUnitFrame(4, {"PartyMemberFrame%d", "PartyMemberFrame%dPetFrame"}) - end - end - - if Addon:IsGameVersionAtleast("BC") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.BC then Clicked:RegisterClickCastFrame("FocusFrame") Clicked:RegisterClickCastFrame("FocusFrameToT") end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.CATA then HookUnitFrame(3, "ArenaEnemyFrame%d", "Blizzard_ArenaUI") + end + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then local partyFrameIndex = 1 for frame in PartyFrame.PartyMemberFramePool:EnumerateActive() do @@ -104,6 +100,8 @@ function Addon:RegisterBlizzardUnitFrames() partyFrameIndex = partyFrameIndex + 1 end + else + HookUnitFrame(4, {"PartyMemberFrame%d", "PartyMemberFrame%dPetFrame"}) end hooksecurefunc("CompactUnitFrame_SetUpFrame", HookCompactUnitFrame) diff --git a/Clicked/UnitFrames/ClickCastFrames.lua b/Clicked/UnitFrames/ClickCastFrames.lua index 30bc0e59..3c4bae72 100644 --- a/Clicked/UnitFrames/ClickCastFrames.lua +++ b/Clicked/UnitFrames/ClickCastFrames.lua @@ -292,7 +292,7 @@ function Clicked:RegisterFrameClicks(frame, isUnitFrame) return end - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then if isUnitFrame then frame:RegisterForClicks(Addon.db.profile.options.onKeyDown and "AnyDown" or "AnyUp") else diff --git a/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua b/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua index a59c125a..0f6441b0 100644 --- a/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua +++ b/Clicked/Widgets/AceGUIWidget-ClickedKeyVisualizerButton.lua @@ -192,7 +192,7 @@ local function Constructor() local background = frame:CreateTexture(nil, "BACKGROUND") background:SetAllPoints() - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= 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) @@ -210,7 +210,7 @@ local function Constructor() local backgroundMask - if Addon:IsGameVersionAtleast("RETAIL") then + if Addon.EXPANSION_LEVEL >= Addon.EXPANSION.DF then backgroundMask = frame:CreateMaskTexture(nil, "BACKGROUND") backgroundMask:SetPoint("CENTER", 0, -0.5) backgroundMask:SetTexture("Interface/HUD/UIActionBarIconFrameMask", "CLAMPTOBLACKADDITIVE", "CLAMPTOBLACKADDITIVE");