Skip to content

Commit 4d6918f

Browse files
committed
Added support for the Remix Artifact Tree
1 parent dc99ae4 commit 4d6918f

File tree

1 file changed

+51
-5
lines changed

1 file changed

+51
-5
lines changed

ResearchViewer.lua

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ local name = ...
33
ResearchViewer = {}
44
local LibDBIcon = LibStub("LibDBIcon-1.0")
55

6+
local LEMIX_SEASON = 2
7+
local LEGION_ARTIFACT_TREE = 1161
8+
69
local playerClass = UnitClassBase("player")
710
local orderHalls = {
811
["WARRIOR"] = 122,
@@ -24,6 +27,7 @@ local increment = CreateCounter();
2427
ResearchViewer.talentTrees = {
2528
["The War Within"] = {
2629
order = increment(),
30+
{ isTraitTree = true, id = LEGION_ARTIFACT_TREE, name = "Legion Remix Artifact Traits" },
2731
{ isTraitTree = true, id = 1115, name = GENERIC_TRAIT_FRAME_RESHII_WRAPS_TITLE },
2832
{ isTraitTree = true, id = 672, name = GENERIC_TRAIT_FRAME_DRAGONRIDING_TITLE },
2933
{ isTraitTree = true, id = 1151, name = "Brann Delve Season 3" },
@@ -195,6 +199,12 @@ f:SetScript("OnEvent", function(_, _, addonName)
195199
ResearchViewer.selectedTreeInfo = nil
196200
end)
197201
end
202+
if addonName == "Blizzard_RemixArtifactUI" then
203+
ResearchViewer:MakeDropDownButton(RemixArtifactFrame)
204+
RemixArtifactFrame:HookScript("OnHide", function()
205+
ResearchViewer.selectedTreeInfo = nil
206+
end)
207+
end
198208
end)
199209

200210
function ResearchViewer:OnInitialize()
@@ -352,7 +362,7 @@ function ResearchViewer:AlreadyAdded(textLine, tooltip)
352362
end
353363
end
354364

355-
--- @param parent GenericTraitFrame|OrderHallTalentFrame
365+
--- @param parent GenericTraitFrame|OrderHallTalentFrame|RemixArtifactFrame
356366
function ResearchViewer:MakeDropDownButton(parent)
357367
local dropdown = CreateFrame("DropdownButton", nil, parent, "WowStyle1DropdownTemplate");
358368

@@ -421,7 +431,9 @@ function ResearchViewer:ToggleUI()
421431
end
422432
end
423433
if self.selectedTreeInfo.isTraitTree then
424-
if GenericTraitFrame and GenericTraitFrame:IsShown() then
434+
if RemixArtifactFrame and RemixArtifactFrame:IsShown() and self.selectedTreeInfo.id == LEGION_ARTIFACT_TREE then
435+
HideUIPanel(RemixArtifactFrame)
436+
elseif GenericTraitFrame and GenericTraitFrame:IsShown() then
425437
HideUIPanel(GenericTraitFrame)
426438
else
427439
if not self:OpenGenericTalentTree(self.selectedTreeInfo.id) then
@@ -439,9 +451,29 @@ function ResearchViewer:ToggleUI()
439451
end
440452

441453
function ResearchViewer:OpenGenericTalentTree(treeID)
442-
if not self:TraitTreeExists(treeID) then
443-
return false;
454+
if LEGION_ARTIFACT_TREE == treeID then
455+
if PlayerGetTimerunningSeasonID() ~= LEMIX_SEASON then return false; end
456+
RemixArtifactUI_LoadUI();
457+
RemixArtifactFrame:UpdateLayout();
458+
459+
local itemID = C_RemixArtifactUI.GetCurrArtifactItemID();
460+
if itemID then
461+
RemixArtifactFrame:SetArtifactItem(itemID);
462+
end
463+
464+
local configID = C_Traits.GetConfigIDByTreeID(treeID);
465+
RemixArtifactFrame:SetConfigID(configID);
466+
ShowUIPanel(RemixArtifactFrame);
467+
if RemixArtifactFrame:GetNumPoints() == 0 then
468+
RemixArtifactFrame:SetPoint('TOPLEFT', 16, -116); -- roughly where it would normally open
469+
end
470+
if not tIndexOf(UISpecialFrames, 'RemixArtifactFrame') then
471+
table.insert(UISpecialFrames, 'RemixArtifactFrame');
472+
end
473+
474+
return true;
444475
end
476+
if not self:TraitTreeExists(treeID) then return false; end
445477

446478
self.charDb.lastSelected = self.selectedTreeInfo
447479
local systemID = C_Traits.GetSystemIDByTreeID(treeID)
@@ -486,6 +518,10 @@ function ResearchViewer:TreeExists(treeId)
486518
end
487519

488520
function ResearchViewer:TraitTreeExists(treeID)
521+
if LEGION_ARTIFACT_TREE == treeID then
522+
return PlayerGetTimerunningSeasonID() == LEMIX_SEASON;
523+
end
524+
489525
return not not C_Traits.GetConfigIDByTreeID(treeID)
490526
end
491527

@@ -501,7 +537,11 @@ function ResearchViewer:GenerateMenu(rootDescription, owner)
501537

502538
self.selectedTreeInfo = data
503539
if data.isTraitTree then
504-
HideUIPanel(GenericTraitFrame)
540+
if data.id == LEGION_ARTIFACT_TREE then
541+
HideUIPanel(RemixArtifactFrame)
542+
else
543+
HideUIPanel(GenericTraitFrame)
544+
end
505545

506546
self:OpenGenericTalentTree(data.id)
507547
else
@@ -524,6 +564,12 @@ function ResearchViewer:GenerateMenu(rootDescription, owner)
524564
or (
525565
data['T' .. GenericTraitFrame:GetTalentTreeID()]
526566
)
567+
elseif owner == RemixArtifactFrame then
568+
return
569+
data.isTraitTree and data.id == LEGION_ARTIFACT_TREE
570+
or (
571+
data['T' .. LEGION_ARTIFACT_TREE]
572+
)
527573
end
528574

529575
return false

0 commit comments

Comments
 (0)