From bfb1531fa8b2806c4ca83b913f82bf9912a46571 Mon Sep 17 00:00:00 2001 From: anarior-nz Date: Wed, 18 May 2022 00:28:16 +1200 Subject: [PATCH 01/26] Updated for 9.2 Initial fork and toc bump for 9.2 --- WorldQuestTab.toc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WorldQuestTab.toc b/WorldQuestTab.toc index 07866dc..f8c49fb 100644 --- a/WorldQuestTab.toc +++ b/WorldQuestTab.toc @@ -1,8 +1,8 @@ -## Interface: 90100 +## Interface: 90200 ## Title: World Quest Tab ## Notes: Creates a new quest tab to keep track of world quests. -## Author: LanceDH -## Version: 9.1.01 +## Author: LanceDH. Maintenance by Anarior-Aman'thul. +## Version: 9.2.01 ## SavedVariables: BWQDB WorldQuestTab.xml From 9dab4913c0e2e5db1cbb9dfdaac308566eb656dd Mon Sep 17 00:00:00 2001 From: anarior-nz Date: Wed, 1 Jun 2022 22:57:35 +1200 Subject: [PATCH 02/26] Update for 9.2.5 toc bump for 9.2.5 --- WorldQuestTab.toc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WorldQuestTab.toc b/WorldQuestTab.toc index f8c49fb..c5603dc 100644 --- a/WorldQuestTab.toc +++ b/WorldQuestTab.toc @@ -1,8 +1,8 @@ -## Interface: 90200 +## Interface: 90205 ## Title: World Quest Tab ## Notes: Creates a new quest tab to keep track of world quests. ## Author: LanceDH. Maintenance by Anarior-Aman'thul. -## Version: 9.2.01 +## Version: 9.2.1 ## SavedVariables: BWQDB WorldQuestTab.xml From 7e5cf4331e34aa3d1746df5d27549a5be1a8edfa Mon Sep 17 00:00:00 2001 From: Fillip H <9424286+filliph@users.noreply.github.com> Date: Fri, 28 Oct 2022 15:48:35 +0100 Subject: [PATCH 03/26] 10.0.0 fixes - Fix Backdrop related XML errors - Fix HorizontalSliderTemplate -> UISliderTemplate - Wrap LFG panel in a nil check for now - Fix progress bar getting stuck --- Settings.xml | 2 +- Templates.xml | 26 ++++++++++++++------------ WorldQuestTab.lua | 13 ++++++++----- WorldQuestTab.xml | 11 ++++++----- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/Settings.xml b/Settings.xml index 17aa41f..80fe249 100644 --- a/Settings.xml +++ b/Settings.xml @@ -200,7 +200,7 @@ - + diff --git a/Templates.xml b/Templates.xml index d8aa9b1..f654371 100644 --- a/Templates.xml +++ b/Templates.xml @@ -215,19 +215,21 @@ - + - - - - - - - - - - - + + + self:SetBackdrop({ + edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", + tile = true, + tileEdge = true, + edgeSize = 12, + tileSize = 16, + insets = { left = 0, right = 0, top = 5, bottom = 5 }, + }); + self:ApplyBackdrop(); + + diff --git a/WorldQuestTab.lua b/WorldQuestTab.lua index e3ab172..79296de 100644 --- a/WorldQuestTab.lua +++ b/WorldQuestTab.lua @@ -2074,12 +2074,13 @@ function WQT_CoreMixin:OnLoad() WQT_WorldQuestFrame:TriggerCallback("QuestsLoaded") end, addonName) - self.dataProvider:RegisterCallback("BufferUpdated", function(progress) - if (progress == 0) then + self.dataProvider:RegisterCallback("BufferUpdated", function(progress) + if (progress == 0 or progress == 1) then self.ProgressBar:Hide(); + else + CooldownFrame_SetDisplayAsPercentage(self.ProgressBar, progress); + self.ProgressBar.Pointer:SetRotation(-progress*6.2831); end - CooldownFrame_SetDisplayAsPercentage(self.ProgressBar, progress); - self.ProgressBar.Pointer:SetRotation(-progress*6.2831); end, addonName) -- Events @@ -2298,7 +2299,8 @@ function WQT_CoreMixin:OnLoad() end); local LFGParent = LFGListSearchPanelScrollFrameScrollChild; - LFGParent.StartGroupButton:HookScript("OnClick", function() + if LFGParent ~= nil then + LFGParent.StartGroupButton:HookScript("OnClick", function() -- If we are creating a group because we couldn't find one, show the info on the create frame if InCombatLockdown() then return; end local searchString = LFGListFrame.SearchPanel.SearchBox:GetText(); @@ -2317,6 +2319,7 @@ function WQT_CoreMixin:OnLoad() WQT_GroupSearch:Show(); end end) + end -- Hook hiding of official pins if we replace them with our own local mapWQProvider = WQT_Utils:GetMapWQProvider(); diff --git a/WorldQuestTab.xml b/WorldQuestTab.xml index 26098b0..8df2cb7 100644 --- a/WorldQuestTab.xml +++ b/WorldQuestTab.xml @@ -91,11 +91,12 @@ - - - - - + + + + + + From e20395af8255716746bb742a5c8fb83f9d0ff0c6 Mon Sep 17 00:00:00 2001 From: Fillip H <9424286+filliph@users.noreply.github.com> Date: Fri, 28 Oct 2022 16:00:19 +0100 Subject: [PATCH 04/26] Update WorldQuestTab.toc --- WorldQuestTab.toc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WorldQuestTab.toc b/WorldQuestTab.toc index c5603dc..c3d68f9 100644 --- a/WorldQuestTab.toc +++ b/WorldQuestTab.toc @@ -1,4 +1,4 @@ -## Interface: 90205 +## Interface: 100000 ## Title: World Quest Tab ## Notes: Creates a new quest tab to keep track of world quests. ## Author: LanceDH. Maintenance by Anarior-Aman'thul. From e47d653b7bb6095572bcfcb9c1ba59c9600f26df Mon Sep 17 00:00:00 2001 From: cpuritscher <67310095+cpuritscher@users.noreply.github.com> Date: Thu, 3 Nov 2022 20:19:58 +0100 Subject: [PATCH 05/26] Update CallingsBoard.lua Removed check for GetBuildInfo() < "9.0.5" as it fails for 10.0 --- Callings/CallingsBoard.lua | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/Callings/CallingsBoard.lua b/Callings/CallingsBoard.lua index fcf60cd..de17773 100644 --- a/Callings/CallingsBoard.lua +++ b/Callings/CallingsBoard.lua @@ -382,13 +382,9 @@ function WQT_CallingsBoardDisplayMixin:OnEnter() if (self.calling.isLockedToday) then local daysUntilString = ""; - if (GetBuildInfo() < "9.0.5") then - daysUntilString = self.calling:GetDaysUntilNextString(); - else - local days = MAX_CALLINGS - self.calling.index + 1; - daysUntilString = _G["BOUNTY_BOARD_NO_CALLINGS_DAYS_" .. days] or BOUNTY_BOARD_NO_CALLINGS_DAYS_1; - end - + local days = MAX_CALLINGS - self.calling.index + 1; + daysUntilString = _G["BOUNTY_BOARD_NO_CALLINGS_DAYS_" .. days] or BOUNTY_BOARD_NO_CALLINGS_DAYS_1; + GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(daysUntilString, HIGHLIGHT_FONT_COLOR:GetRGB()); GameTooltip:Show(); From 50a50de8fd9aeb76617a24b422ea8f72375912d8 Mon Sep 17 00:00:00 2001 From: Fillip H <9424286+filliph@users.noreply.github.com> Date: Fri, 4 Nov 2022 17:13:16 +0000 Subject: [PATCH 06/26] Fix LFGParent issue Thanks to @lucasvienna for the fix! --- WorldQuestTab.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WorldQuestTab.lua b/WorldQuestTab.lua index 79296de..e4ca5e1 100644 --- a/WorldQuestTab.lua +++ b/WorldQuestTab.lua @@ -2298,8 +2298,8 @@ function WQT_CoreMixin:OnLoad() end end); - local LFGParent = LFGListSearchPanelScrollFrameScrollChild; - if LFGParent ~= nil then + local LFGParent = LFGListFrame.SearchPanel.ScrollBox; + if LFGParent and LFGParent.StartGroupButton then LFGParent.StartGroupButton:HookScript("OnClick", function() -- If we are creating a group because we couldn't find one, show the info on the create frame if InCombatLockdown() then return; end From df3274329fedaad3d9988280fa91bdbfa7b4b3d5 Mon Sep 17 00:00:00 2001 From: Tga123 <29838841+Tga123@users.noreply.github.com> Date: Sun, 13 Nov 2022 06:28:08 +0300 Subject: [PATCH 07/26] Update to DF. --- Callings/CallingsBoard.lua | 8 - Callings/CallingsBoard.xml | 2 +- Data.lua | 100 +++++++--- Dataprovider.lua | 5 +- Debug.xml | 2 +- External/External.xml | 2 +- MapPinProvider.lua | 2 +- MapPinProvider.xml | 2 +- Profiles.xml | 2 +- Settings.xml | 2 +- Templates.lua | 2 - Templates.xml | 2 +- WorldQuestTab.lua | 7 +- WorldQuestTab.toc | 8 +- WorldQuestTab.xml | 2 +- libs/AceAddon-3.0/AceAddon-3.0.lua | 173 ++++++++---------- libs/AceAddon-3.0/AceAddon-3.0.xml | 4 +- libs/AceDB-3.0/AceDB-3.0.lua | 61 +++--- libs/AceDB-3.0/AceDB-3.0.xml | 4 +- libs/AddonDropDown-2.0/AddonDropDown-2.0.lua | 2 +- libs/AddonDropDown-2.0/AddonDropDown-2.0.xml | 2 +- .../AddonDropDownTemplates-2.0.lua | 2 +- .../AddonDropDownTemplates-2.0.xml | 2 +- libs/LibStub/LibStub.lua | 12 +- 24 files changed, 215 insertions(+), 195 deletions(-) diff --git a/Callings/CallingsBoard.lua b/Callings/CallingsBoard.lua index de17773..c9032c4 100644 --- a/Callings/CallingsBoard.lua +++ b/Callings/CallingsBoard.lua @@ -428,11 +428,3 @@ function WQT_CallingsBoardDisplayMixin:OnClick() end end end - - - - - - - - diff --git a/Callings/CallingsBoard.xml b/Callings/CallingsBoard.xml index 497cf86..6972dea 100644 --- a/Callings/CallingsBoard.xml +++ b/Callings/CallingsBoard.xml @@ -1,4 +1,4 @@ - diff --git a/Data.lua b/Data.lua index a37d0f5..d7e80d2 100644 --- a/Data.lua +++ b/Data.lua @@ -145,7 +145,16 @@ local function _DeepWipeTable(t) wipe(t); t = nil; end - +-- /dump WorldMapFrame:GetMapID() +local WQT_DRAGONFLIGHT = { + [2026] = {["x"] = 0.66, ["y"] = 0.09}, -- Forbidden Reach + [2112] = {["x"] = 0.55, ["y"] = 0.48}, -- Valdrakken + [2022] = {["x"] = 0.49, ["y"] = 0.35}, -- Waking Shores + [2023] = {["x"] = 0.42, ["y"] = 0.56}, -- Ohn'ahran Plains + [2024] = {["x"] = 0.53, ["y"] = 0.74}, -- Azure Span + [2025] = {["x"] = 0.63, ["y"] = 0.50}, -- Thaldraszus + [2085] = {["x"] = 0.66, ["y"] = 0.57}, -- Primalist Future +} local WQT_SHADOWLANDS = { [1543] = {["x"] = 0.23, ["y"] = 0.13}, -- The Maw [1536] = {["x"] = 0.62, ["y"] = 0.21}, -- Maldraxxus @@ -153,6 +162,8 @@ local WQT_SHADOWLANDS = { [1670] = {["x"] = 0.47, ["y"] = 0.51}, -- Oribos [1533] = {["x"] = 0.71, ["y"] = 0.57}, -- Bastion [1565] = {["x"] = 0.48, ["y"] = 0.80}, -- Ardenweald + [1961] = {["x"] = 0.30, ["y"] = 0.25}, -- Korthia + [1970] = {["x"] = 0.85, ["y"] = 0.80}, -- Zereth Mortis } local WQT_ZANDALAR = { [864] = {["x"] = 0.39, ["y"] = 0.32}, -- Vol'dun @@ -170,6 +181,11 @@ local WQT_KULTIRAS = { [1355] = {["x"] = 0.86, ["y"] = 0.14}, -- Nazjatar [1462] = {["x"] = 0.17, ["y"] = 0.28}, -- Mechagon } +local WQT_LEGION_ARGUS = { + [830] = {["x"] = 0.49, ["y"] = 0.29}, -- Krokuun + [885] = {["x"] = 0.29, ["y"] = 0.71}, -- Antoran Wastes + [882] = {["x"] = 0.80, ["y"] = 0.71}, -- Mac'Aree +} local WQT_LEGION = { [630] = {["x"] = 0.33, ["y"] = 0.58}, -- Azsuna [680] = {["x"] = 0.46, ["y"] = 0.45}, -- Suramar @@ -179,9 +195,7 @@ local WQT_LEGION = { [790] = {["x"] = 0.46, ["y"] = 0.84}, -- Eye of Azshara [646] = {["x"] = 0.54, ["y"] = 0.68}, -- Broken Shore [627] = {["x"] = 0.45, ["y"] = 0.64}, -- Dalaran - [830] = {["x"] = 0.86, ["y"] = 0.15}, -- Krokuun - [885] = {["x"] = 0.86, ["y"] = 0.15}, -- Antoran Wastes - [882] = {["x"] = 0.86, ["y"] = 0.15}, -- Mac'Aree + [905] = {["x"] = 0.86, ["y"] = 0.17}, -- Argus } local WQT_KALIMDOR = { [81] = {["x"] = 0.42, ["y"] = 0.82}, -- Silithus @@ -282,13 +296,34 @@ local WQT_DRAENOR = { } local ZonesByExpansion = { - [LE_EXPANSION_SHADOWLANDS] = { + [LE_EXPANSION_DRAGONFLIGHT] = { + 1978, -- Dragon Isles + 2026, -- Forbidden Reach + 2112, -- Valdrakken + 2022, -- Waking Shores + 2023, -- Ohn'ahran Plains + 2024, -- Azure Span + 2025, -- Thaldraszus + 2085, -- Primalist Future + } + ,[LE_EXPANSION_SHADOWLANDS] = { + 1550, -- The Shadowlands 1543, -- The Maw 1536, -- Maldraxxus 1525, -- Revendreth 1670, -- Oribos 1533, -- Bastion 1565, -- Ardenweald + 1701, -- Ardenweald covenant + 1702, -- Ardenweald covenant + 1703, -- Ardenweald covenant + 1707, -- Bastion Covenant + 1708, -- Bastion Covenant + 1699, -- Revendreth Covenant + 1700, -- Revendreth Covenant + 1698, -- Maldraxxus Covenant + 1961, -- Korthia + 1970, -- Zereth Mortis } ,[LE_EXPANSION_BATTLE_FOR_AZEROTH] = { 875, -- Zandalar @@ -348,9 +383,11 @@ local function AddZonesToList(t) end end +AddZonesToList(WQT_DRAGONFLIGHT); AddZonesToList(WQT_SHADOWLANDS); AddZonesToList(WQT_ZANDALAR); AddZonesToList(WQT_KULTIRAS); +AddZonesToList(WQT_LEGION_ARGUS); AddZonesToList(WQT_LEGION); AddZonesToList(WQT_KALIMDOR); AddZonesToList(WQT_EASTERN_KINGDOMS); @@ -374,7 +411,7 @@ _DeepWipeTable(ZonesByExpansion); _V["PATH_CUSTOM_ICONS"] = "Interface/Addons/WorldQuestTab/Images/CustomIcons"; _V["LIST_ANCHOR_TYPE"] = {["flight"] = 1, ["world"] = 2, ["full"] = 3, ["taxi"] = 4}; -_V["CURRENT_EXPANSION"] = LE_EXPANSION_SHADOWLANDS; +_V["CURRENT_EXPANSION"] = LE_EXPANSION_DRAGONFLIGHT; _V["TOOLTIP_STYLES"] = { ["default"] = {}, @@ -1183,7 +1220,7 @@ _V["REWARD_TYPE_ATLAS"] = { [_V["CONDUIT_SUBTYPE"].potency] = {["texture"] = "soulbinds_tree_conduit_icon_attack", ["scale"] = 1.15}; [_V["CONDUIT_SUBTYPE"].endurance] = {["texture"] = "soulbinds_tree_conduit_icon_protect", ["scale"] = 1.15}; [_V["CONDUIT_SUBTYPE"].finesse] = {["texture"] = "soulbinds_tree_conduit_icon_utility", ["scale"] = 1.15}; - }-- Anima + }-- Conduits } _V["FILTER_FUNCTIONS"] = { @@ -1216,16 +1253,21 @@ _V["FILTER_FUNCTIONS"] = { ,["None"] = function(questInfo, tagInfo) return questInfo.reward.typeBits == WQT_REWARDTYPE.none; end } }; - +-- /dump WorldMapFrame:GetMapID() +-- /dump FlightMapFrame:GetMapID() _V["WQT_CONTINENT_GROUPS"] = { [875] = {876} ,[1011] = {876} -- Zandalar flightmap ,[876] = {875} ,[1014] = {875} -- Kul Tiras flightmap ,[1504] = {875, 876} -- Nazjatar flightmap + ,[619] = {905} -- Legion + ,[905] = {619} -- Argus + } _V["ZONE_SUBZONES"] = { + [2025] = {2112, 2085}; -- Thaldraszus, Valdrakken, Primalist Future [1565] = {1701, 1702, 1703}; -- Ardenweald covenant [1533] = {1707, 1708}; -- Bastion Covenant [1525] = {1699, 1700}; -- Revendreth Covenant @@ -1233,7 +1275,9 @@ _V["ZONE_SUBZONES"] = { } _V["WQT_ZONE_MAPCOORDS"] = { - [1647] = WQT_SHADOWLANDS -- Shadowlands flightmap + [2057] = WQT_DRAGONFLIGHT -- Dragonflight flightmap + ,[1978] = WQT_DRAGONFLIGHT -- Dragonflight + ,[1647] = WQT_SHADOWLANDS -- Shadowlands flightmap ,[1550] = WQT_SHADOWLANDS -- Shadowlands ,[875] = WQT_ZANDALAR -- Zandalar ,[1011] = WQT_ZANDALAR -- Zandalar flightmap @@ -1242,11 +1286,11 @@ _V["WQT_ZONE_MAPCOORDS"] = { ,[1504] = { -- Nazjatar flightmap [1355] = {["x"] = 0, ["y"] = 0} -- Nazjatar } + ,[905] = WQT_LEGION_ARGUS -- Argus ,[619] = WQT_LEGION ,[993] = WQT_LEGION -- Flightmap - ,[905] = WQT_LEGION -- Argus ,[12] = WQT_KALIMDOR - ,[1209] = WQT_KALIMDOR -- Flightmap + ,[1209] = WQT_KALIMDOR -- Flightmap ,[13] = WQT_EASTERN_KINGDOMS ,[1208] = WQT_EASTERN_KINGDOMS -- Flightmap ,[101] = WQT_OUTLAND @@ -1261,11 +1305,19 @@ _V["WQT_ZONE_MAPCOORDS"] = { [210] = {["x"] = 0.42, ["y"] = 0.62} -- Cape ,[50] = {["x"] = 0.67, ["y"] = 0.40} -- North } - ,[947] = { - } -- All of Azeroth + ,[947] = { -- All of Azeroth + [12] = {["x"] = 0.24, ["y"] = 0.55} + ,[13] = {["x"] = 0.89, ["y"] = 0.52} + ,[113] = {["x"] = 0.49, ["y"] = 0.12} + ,[424] = {["x"] = 0.48, ["y"] = 0.82} + ,[619] = {["x"] = 0.58, ["y"] = 0.39} + ,[875] = {["x"] = 0.54, ["y"] = 0.63} + ,[876] = {["x"] = 0.71, ["y"] = 0.50} + ,[1978] = {["x"] = 0.77, ["y"] = 0.22} + } } -_V["WQT_NO_FACTION_DATA"] = { ["expansion"] = 0 ,["playerFaction"] = nil ,["texture"] = 131071, ["name"]=_L["NO_FACTION"] } -- No faction +_V["WQT_NO_FACTION_DATA"] = { ["expansion"] = 0 ,["playerFaction"] = nil ,["texture"] = 134400, ["name"]=_L["NO_FACTION"] } -- No faction _V["WQT_FACTION_DATA"] = { [67] = { ["expansion"] = LE_EXPANSION_CLASSIC ,["playerFaction"] = nil ,["texture"] = 2203914 } -- Horde ,[469] = { ["expansion"] = LE_EXPANSION_CLASSIC ,["playerFaction"] = nil ,["texture"] = 2203912 } -- Alliance @@ -1308,7 +1360,19 @@ _V["WQT_FACTION_DATA"] = { ,[2413] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 3257751 } -- Court of Harvesters ,[2465] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 3641394 } -- The Wild Hunt ,[2432] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 3729461 } -- Ve'nari - ,[2470] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 4083292 } -- Death's Advance + ,[2470] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 4083292 } -- Korthia + ,[2472] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 4067928 } -- Korthia Codex + ,[2478] = { ["expansion"] = LE_EXPANSION_SHADOWLANDS,["playerFaction"] = nil ,["texture"] = 4226232 } -- Zereth Mortis + -- LE_EXPANSION_DRAGONFLIGHT + ,[2507] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4687628 } -- Dragonscale Expedition + ,[2511] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4687629 } -- Iskaara Tuskarr + ,[2503] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4687627 } -- Maruuk Centaur + ,[2510] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4687630 } -- Valdrakken Accord + ,[2544] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4548878 } -- Artisan's Consortium + ,[2517] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4640487 } -- Wrathion + ,[2518] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 4640488 } -- Sabellian + ,[2550] = { ["expansion"] = LE_EXPANSION_DRAGONFLIGHT,["playerFaction"] = nil ,["texture"] = 134565 } -- Cobalt Assembly + } -- Add localized faction names for k, v in pairs(_V["WQT_FACTION_DATA"]) do @@ -1446,12 +1510,6 @@ end -- This is just easier to maintain than changing the entire string every time _V["PATCH_NOTES"] = { - {["version"] = "9.1.01", - ["intro"] = { "Update for 9.1 content" }, - ["changes"] = { - "Changed the calling board progress icons to a texture that looks better at their small scale.", - }, - }, {["version"] = "9.0.08", ["minor"] = "2", ["fixes"] = { diff --git a/Dataprovider.lua b/Dataprovider.lua index 71049e6..e26e3a7 100644 --- a/Dataprovider.lua +++ b/Dataprovider.lua @@ -382,8 +382,9 @@ end function QuestInfoMixin:GetRewardTexture() if (self.reward.typeBits == WQT_REWARDTYPE.none) then - -- Dark empty texture - return "Interface/Garrison/GarrisonMissionUIInfoBoxBackgroundTile"; + -- Dark empty texture + --return "Interface/Garrison/GarrisonMissionUIInfoBoxBackgroundTile"; + return 134400; end local reward = self.rewardList[1]; diff --git a/Debug.xml b/Debug.xml index ac549f9..fffbff0 100644 --- a/Debug.xml +++ b/Debug.xml @@ -1,4 +1,4 @@ - diff --git a/External/External.xml b/External/External.xml index ae8f6ae..9bc8dcd 100644 --- a/External/External.xml +++ b/External/External.xml @@ -1,4 +1,4 @@ - diff --git a/MapPinProvider.lua b/MapPinProvider.lua index c66168f..202de6f 100644 --- a/MapPinProvider.lua +++ b/MapPinProvider.lua @@ -79,7 +79,7 @@ local function ShouldShowPin(questInfo, mapType, settingsZoneVisible, settingsPi return false; end elseif (mapType >= Enum.UIMapType.Zone) then - -- Never show on continent + -- Never show on zone if (settingsZoneVisible == _V["ENUM_PIN_ZONE"].none) then return false; end diff --git a/MapPinProvider.xml b/MapPinProvider.xml index c0ad5c0..f65e4c1 100644 --- a/MapPinProvider.xml +++ b/MapPinProvider.xml @@ -1,4 +1,4 @@ - diff --git a/Profiles.xml b/Profiles.xml index c8b1f33..3e3b5ec 100644 --- a/Profiles.xml +++ b/Profiles.xml @@ -1,4 +1,4 @@ - diff --git a/Settings.xml b/Settings.xml index 80fe249..0a47b80 100644 --- a/Settings.xml +++ b/Settings.xml @@ -1,4 +1,4 @@ - diff --git a/Templates.lua b/Templates.lua index 6e57cc3..8a857c8 100644 --- a/Templates.lua +++ b/Templates.lua @@ -1291,5 +1291,3 @@ function WQT_Utils:GetRewardTypeColorIDs(rewardType) return self:GetColor(ring), self:GetColor(text); end - - diff --git a/Templates.xml b/Templates.xml index f654371..6098796 100644 --- a/Templates.xml +++ b/Templates.xml @@ -1,4 +1,4 @@ - diff --git a/WorldQuestTab.lua b/WorldQuestTab.lua index e4ca5e1..42b9964 100644 --- a/WorldQuestTab.lua +++ b/WorldQuestTab.lua @@ -2074,7 +2074,7 @@ function WQT_CoreMixin:OnLoad() WQT_WorldQuestFrame:TriggerCallback("QuestsLoaded") end, addonName) - self.dataProvider:RegisterCallback("BufferUpdated", function(progress) + self.dataProvider:RegisterCallback("BufferUpdated", function(progress) if (progress == 0 or progress == 1) then self.ProgressBar:Hide(); else @@ -2285,13 +2285,13 @@ function WQT_CoreMixin:OnLoad() end); LFGListFrame.EntryCreation:HookScript("OnHide", function() - if (not InCombatLockdown()) then + if (not InCombatLockdown()) then WQT_GroupSearch:Hide(); end end); hooksecurefunc("LFGListUtil_FindQuestGroup", function(questID, isFromGreenEyeButton) - if (isFromGreenEyeButton) then + if (isFromGreenEyeButton) then WQT_GroupSearch:Hide(); WQT_GroupSearch.questId = nil; WQT_GroupSearch.title = nil; @@ -2320,7 +2320,6 @@ function WQT_CoreMixin:OnLoad() end end) end - -- Hook hiding of official pins if we replace them with our own local mapWQProvider = WQT_Utils:GetMapWQProvider(); hooksecurefunc(mapWQProvider, "RefreshAllData", function() diff --git a/WorldQuestTab.toc b/WorldQuestTab.toc index c3d68f9..1428c05 100644 --- a/WorldQuestTab.toc +++ b/WorldQuestTab.toc @@ -1,9 +1,11 @@ -## Interface: 100000 +## Interface: 100002 ## Title: World Quest Tab ## Notes: Creates a new quest tab to keep track of world quests. -## Author: LanceDH. Maintenance by Anarior-Aman'thul. -## Version: 9.2.1 +## Author: LanceDH +## Version: 10.0.2.0 ## SavedVariables: BWQDB +## X-Website: https://www.curseforge.com/wow/addons/worldquesttab +## X-Curse-Project-ID: 102243 WorldQuestTab.xml External\External.xml diff --git a/WorldQuestTab.xml b/WorldQuestTab.xml index 8df2cb7..98b484d 100644 --- a/WorldQuestTab.xml +++ b/WorldQuestTab.xml @@ -1,4 +1,4 @@ - diff --git a/libs/AceAddon-3.0/AceAddon-3.0.lua b/libs/AceAddon-3.0/AceAddon-3.0.lua index a7f7279..2bc30ba 100644 --- a/libs/AceAddon-3.0/AceAddon-3.0.lua +++ b/libs/AceAddon-3.0/AceAddon-3.0.lua @@ -1,4 +1,4 @@ ---- **AceAddon-3.0** provides a template for creating addon objects. +--- **AceAddon-3.0** provides a template for creating addon objects. -- It'll provide you with a set of callback functions that allow you to simplify the loading -- process of your addon.\\ -- Callbacks provided are:\\ @@ -6,31 +6,31 @@ -- * **OnEnable** which gets called during the PLAYER_LOGIN event, when most of the data provided by the game is already present. -- * **OnDisable**, which is only called when your addon is manually being disabled. -- @usage --- -- A small (but complete) addon, that doesn't do anything, +-- -- A small (but complete) addon, that doesn't do anything, -- -- but shows usage of the callbacks. -- local MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") --- +-- -- function MyAddon:OnInitialize() --- -- do init tasks here, like loading the Saved Variables, +-- -- do init tasks here, like loading the Saved Variables, -- -- or setting up slash commands. -- end --- +-- -- function MyAddon:OnEnable() -- -- Do more initialization here, that really enables the use of your addon. --- -- Register Events, Hook functions, Create Frames, Get information from +-- -- Register Events, Hook functions, Create Frames, Get information from -- -- the game that wasn't available in OnInitialize -- end -- -- function MyAddon:OnDisable() -- -- Unhook, Unregister Events, Hide frames that you created. --- -- You would probably only use an OnDisable if you want to +-- -- You would probably only use an OnDisable if you want to -- -- build a "standby" mode, or be able to toggle modules on/off. -- end -- @class file -- @name AceAddon-3.0.lua --- @release $Id: AceAddon-3.0.lua 1084 2013-04-27 20:14:11Z nevcairiel $ +-- @release $Id: AceAddon-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -local MAJOR, MINOR = "AceAddon-3.0", 12 +local MAJOR, MINOR = "AceAddon-3.0", 13 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceAddon then return end -- No Upgrade needed. @@ -49,10 +49,6 @@ local select, pairs, next, type, unpack = select, pairs, next, type, unpack local loadstring, assert, error = loadstring, assert, error local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub, IsLoggedIn, geterrorhandler - --[[ xpcall safecall implementation ]] @@ -62,43 +58,12 @@ local function errorhandler(err) return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local xpcall, eh = ... - local method, ARGS - local function call() return method(ARGS) end - - local function dispatch(func, ...) - method = func - if not method then return end - ARGS = ... - return xpcall(call, eh) - end - - return dispatch - ]] - - local ARGS = {} - for i = 1, argCount do ARGS[i] = "arg"..i end - code = code:gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) -end - -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) -Dispatchers[0] = function(func) - return xpcall(func, errorhandler) -end - local function safecall(func, ...) -- we check to see if the func is passed is actually a function here and don't error when it isn't -- this safecall is used for optional functions like OnInitialize OnEnable etc. When they are not -- present execution should continue without hinderance if type(func) == "function" then - return Dispatchers[select('#', ...)](func, ...) + return xpcall(func, errorhandler, ...) end end @@ -106,7 +71,7 @@ end local Enable, Disable, EnableModule, DisableModule, Embed, NewModule, GetModule, GetName, SetDefaultModuleState, SetDefaultModuleLibraries, SetEnabledState, SetDefaultModulePrototype -- used in the addon metatable -local function addontostring( self ) return self.name end +local function addontostring( self ) return self.name end -- Check if the addon is queued for initialization local function queuedForInitialization(addon) @@ -119,14 +84,14 @@ local function queuedForInitialization(addon) end --- Create a new AceAddon-3.0 addon. --- Any libraries you specified will be embeded, and the addon will be scheduled for +-- Any libraries you specified will be embeded, and the addon will be scheduled for -- its OnInitialize and OnEnable callbacks. -- The final addon object, with all libraries embeded, will be returned. -- @paramsig [object ,]name[, lib, ...] -- @param object Table to use as a base for the addon (optional) -- @param name Name of the addon object to create -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create a simple addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceEvent-3.0") -- @@ -146,10 +111,10 @@ function AceAddon:NewAddon(objectorname, ...) if type(name)~="string" then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end - if self.addons[name] then + if self.addons[name] then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - Addon '%s' already exists."):format(name), 2) end - + object = object or {} object.name = name @@ -159,7 +124,7 @@ function AceAddon:NewAddon(objectorname, ...) for k, v in pairs(oldmeta) do addonmeta[k] = v end end addonmeta.__tostring = addontostring - + setmetatable( object, addonmeta ) self.addons[name] = object object.modules = {} @@ -167,7 +132,7 @@ function AceAddon:NewAddon(objectorname, ...) object.defaultModuleLibraries = {} Embed( object ) -- embed NewModule, GetModule methods self:EmbedLibraries(object, select(i,...)) - + -- add to queue of addons to be initialized upon ADDON_LOADED tinsert(self.initializequeue, object) return object @@ -178,7 +143,7 @@ end -- Throws an error if the addon object cannot be found (except if silent is set). -- @param name unique name of the addon object -- @param silent if true, the addon is optional, silently return nil if its not found --- @usage +-- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") function AceAddon:GetAddon(name, silent) @@ -233,7 +198,7 @@ end -- @paramsig name[, silent] -- @param name unique name of the module -- @param silent if true, the module is optional, silently return nil if its not found (optional) --- @usage +-- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- -- Get the Module @@ -256,23 +221,23 @@ local function IsModuleTrue(self) return true end -- @param name unique name of the module -- @param prototype object to derive this module from, methods and values from this table will be mixed into the module (optional) -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create a module with some embeded libraries -- MyModule = MyAddon:NewModule("MyModule", "AceEvent-3.0", "AceHook-3.0") --- +-- -- -- Create a module with a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- MyModule = MyAddon:NewModule("MyModule", prototype, "AceEvent-3.0", "AceHook-3.0") function NewModule(self, name, prototype, ...) if type(name) ~= "string" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end if type(prototype) ~= "string" and type(prototype) ~= "table" and type(prototype) ~= "nil" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'prototype' - table (prototype), string (lib) or nil expected got '%s'."):format(type(prototype)), 2) end - + if self.modules[name] then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - Module '%s' already exists."):format(name), 2) end - + -- modules are basically addons. We treat them as such. They will be added to the initializequeue properly as well. -- NewModule can only be called after the parent addon is present thus the modules will be initialized after their parent is. local module = AceAddon:NewAddon(fmt("%s_%s", self.name or tostring(self), name)) - + module.IsModule = IsModuleTrue module:SetEnabledState(self.defaultModuleState) module.moduleName = name @@ -287,24 +252,24 @@ function NewModule(self, name, prototype, ...) if not prototype or type(prototype) == "string" then prototype = self.defaultModulePrototype or nil end - + if type(prototype) == "table" then local mt = getmetatable(module) mt.__index = prototype setmetatable(module, mt) -- More of a Base class type feel. end - + safecall(self.OnModuleCreated, self, module) -- Was in Ace2 and I think it could be a cool thing to have handy. self.modules[name] = module tinsert(self.orderedModules, module) - + return module end --- Returns the real name of the addon or module, without any prefix. -- @name //addon//:GetName --- @paramsig --- @usage +-- @paramsig +-- @usage -- print(MyAddon:GetName()) -- -- prints "MyAddon" function GetName(self) @@ -316,8 +281,8 @@ end -- and enabling all modules of the addon (unless explicitly disabled).\\ -- :Enable() also sets the internal `enableState` variable to true -- @name //addon//:Enable --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Enable MyModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -337,8 +302,8 @@ end -- and disabling all modules of the addon.\\ -- :Disable() also sets the internal `enableState` variable to false -- @name //addon//:Disable --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Disable MyAddon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyAddon:Disable() @@ -351,7 +316,7 @@ end -- Short-hand function that retrieves the module via `:GetModule` and calls `:Enable` on the module object. -- @name //addon//:EnableModule -- @paramsig name --- @usage +-- @usage -- -- Enable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -369,7 +334,7 @@ end -- Short-hand function that retrieves the module via `:GetModule` and calls `:Disable` on the module object. -- @name //addon//:DisableModule -- @paramsig name --- @usage +-- @usage -- -- Disable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -388,7 +353,7 @@ end -- @name //addon//:SetDefaultModuleLibraries -- @paramsig lib[, lib, ...] -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Configure default libraries for modules (all modules need AceEvent-3.0) @@ -407,7 +372,7 @@ end -- @name //addon//:SetDefaultModuleState -- @paramsig state -- @param state Default state for new modules, true for enabled, false for disabled --- @usage +-- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Set the default state to "disabled" @@ -427,7 +392,7 @@ end -- @name //addon//:SetDefaultModulePrototype -- @paramsig prototype -- @param prototype Default prototype for the new modules (table) --- @usage +-- @usage -- -- Define a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- -- Set the default prototype @@ -459,8 +424,8 @@ end --- Return an iterator of all modules associated to the addon. -- @name //addon//:IterateModules --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Enable all modules -- for name, module in MyAddon:IterateModules() do -- module:Enable() @@ -469,13 +434,13 @@ local function IterateModules(self) return pairs(self.modules) end -- Returns an iterator of all embeds in the addon -- @name //addon//:IterateEmbeds --- @paramsig +-- @paramsig local function IterateEmbeds(self) return pairs(AceAddon.embeds[self]) end --- Query the enabledState of an addon. -- @name //addon//:IsEnabled --- @paramsig --- @usage +-- @paramsig +-- @usage -- if MyAddon:IsEnabled() then -- MyAddon:Disable() -- end @@ -520,20 +485,20 @@ end -- - Initialize the addon after creation. -- This function is only used internally during the ADDON_LOADED event --- It will call the **OnInitialize** function on the addon object (if present), +-- It will call the **OnInitialize** function on the addon object (if present), -- and the **OnEmbedInitialize** function on all embeded libraries. --- +-- -- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- @param addon addon object to intialize function AceAddon:InitializeAddon(addon) safecall(addon.OnInitialize, addon) - + local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedInitialize, lib, addon) end end - + -- we don't call InitializeAddon on modules specifically, this is handled -- from the event handler and only done _once_ end @@ -541,7 +506,7 @@ end -- - Enable the addon after creation. -- Note: This function is only used internally during the PLAYER_LOGIN event, or during ADDON_LOADED, -- if IsLoggedIn() already returns true at that point, e.g. for LoD Addons. --- It will call the **OnEnable** function on the addon object (if present), +-- It will call the **OnEnable** function on the addon object (if present), -- and the **OnEmbedEnable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is disabled. -- @@ -551,12 +516,12 @@ end function AceAddon:EnableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if self.statuses[addon.name] or not addon.enabledState then return false end - + -- set the statuses first, before calling the OnEnable. this allows for Disabling of the addon in OnEnable. self.statuses[addon.name] = true - + safecall(addon.OnEnable, addon) - + -- make sure we're still enabled before continueing if self.statuses[addon.name] then local embeds = self.embeds[addon] @@ -564,7 +529,7 @@ function AceAddon:EnableAddon(addon) local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedEnable, lib, addon) end end - + -- enable possible modules. local modules = addon.orderedModules for i = 1, #modules do @@ -576,24 +541,24 @@ end -- - Disable the addon -- Note: This function is only used internally. --- It will call the **OnDisable** function on the addon object (if present), +-- It will call the **OnDisable** function on the addon object (if present), -- and the **OnEmbedDisable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is still enabled. -- --- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. +-- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- Use :Disable on the addon itself instead. -- @param addon addon object to enable function AceAddon:DisableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if not self.statuses[addon.name] then return false end - + -- set statuses first before calling OnDisable, this allows for aborting the disable in OnDisable. self.statuses[addon.name] = false - + safecall( addon.OnDisable, addon ) - + -- make sure we're still disabling... - if not self.statuses[addon.name] then + if not self.statuses[addon.name] then local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) @@ -605,12 +570,12 @@ function AceAddon:DisableAddon(addon) self:DisableAddon(modules[i]) end end - + return not self.statuses[addon.name] -- return true if we're disabled end --- Get an iterator over all registered addons. --- @usage +-- @usage -- -- Print a list of all installed AceAddon's -- for name, addon in AceAddon:IterateAddons() do -- print("Addon: " .. name) @@ -618,7 +583,7 @@ end function AceAddon:IterateAddons() return pairs(self.addons) end --- Get an iterator over the internal status registry. --- @usage +-- @usage -- -- Print a list of all enabled addons -- for name, status in AceAddon:IterateAddonStatus() do -- if status then @@ -632,10 +597,20 @@ function AceAddon:IterateAddonStatus() return pairs(self.statuses) end function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end +-- Blizzard AddOns which can load very early in the loading process and mess with Ace3 addon loading +local BlizzardEarlyLoadAddons = { + Blizzard_DebugTools = true, + Blizzard_TimeManager = true, + Blizzard_BattlefieldMap = true, + Blizzard_MapCanvas = true, + Blizzard_SharedMapDataProviders = true, + Blizzard_CombatLog = true, +} + -- Event Handling local function onEvent(this, event, arg1) - -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up - if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then + -- 2020-08-28 nevcairiel - ignore the load event of Blizzard addons which occur early in the loading process + if (event == "ADDON_LOADED" and (arg1 == nil or not BlizzardEarlyLoadAddons[arg1])) or event == "PLAYER_LOGIN" then -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration while(#AceAddon.initializequeue > 0) do local addon = tremove(AceAddon.initializequeue, 1) @@ -644,7 +619,7 @@ local function onEvent(this, event, arg1) AceAddon:InitializeAddon(addon) tinsert(AceAddon.enablequeue, addon) end - + if IsLoggedIn() then while(#AceAddon.enablequeue > 0) do local addon = tremove(AceAddon.enablequeue, 1) diff --git a/libs/AceAddon-3.0/AceAddon-3.0.xml b/libs/AceAddon-3.0/AceAddon-3.0.xml index e6ad639..ae12b73 100644 --- a/libs/AceAddon-3.0/AceAddon-3.0.xml +++ b/libs/AceAddon-3.0/AceAddon-3.0.xml @@ -1,4 +1,4 @@ -