|
|
|
|
local MogAPI = C_TransmogCollection;
|
|
|
|
|
local PlayerKnowsSource = MogAPI.PlayerKnowsSource;
|
|
|
|
|
local GetSourceInfo = MogAPI.GetSourceInfo;
|
|
|
|
|
local GetAllAppearanceSources = MogAPI.GetAllAppearanceSources;
|
|
|
|
|
|
|
|
|
|
local DataProvider = {};
|
|
|
|
|
|
|
|
|
|
function DataProvider:FindKnownSource(sourceID)
|
|
|
|
|
if not sourceID then return end;
|
|
|
|
|
|
|
|
|
|
if PlayerKnowsSource(sourceID) then
|
|
|
|
|
return sourceID
|
|
|
|
|
else
|
|
|
|
|
if not self.sourceIDxKnownSourceID then
|
|
|
|
|
self.sourceIDxKnownSourceID = {};
|
|
|
|
|
end
|
|
|
|
|
if self.sourceIDxKnownSourceID[sourceID] then
|
|
|
|
|
return self.sourceIDxKnownSourceID[sourceID]
|
|
|
|
|
end
|
|
|
|
|
local sourceInfo = GetSourceInfo(sourceID);
|
|
|
|
|
if sourceInfo then
|
|
|
|
|
local visualID = sourceInfo.visualID;
|
|
|
|
|
local sources = GetAllAppearanceSources(visualID);
|
|
|
|
|
for i = 1, #sources do
|
|
|
|
|
if sourceID ~= sources[i] then
|
|
|
|
|
if PlayerKnowsSource(sources[i]) then
|
|
|
|
|
self.sourceIDxKnownSourceID[sourceID] = sources[i];
|
|
|
|
|
sourceID = sources[i];
|
|
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return sourceID
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function GenerateHyperlinkAndSource(slotID, sourceID, enchantID)
|
|
|
|
|
local sourceInfo = GetSourceInfo(sourceID);
|
|
|
|
|
if not sourceInfo then return end;
|
|
|
|
|
|
|
|
|
|
local itemID = sourceInfo.itemID;
|
|
|
|
|
local itemQuality = sourceInfo.quality or 12;
|
|
|
|
|
local sourceType = sourceInfo.sourceType;
|
|
|
|
|
local itemModID = sourceInfo.itemModID;
|
|
|
|
|
local hyperlink, unformatedHyperlink;
|
|
|
|
|
local sourceTextColorized, sourcePlainText = "", nil;
|
|
|
|
|
local _, _, _, hex = GetItemQualityColor(itemQuality)
|
|
|
|
|
local bonusID = 0;
|
|
|
|
|
enchantID = enchantID or "";
|
|
|
|
|
|
|
|
|
|
if sourceType == 1 then --TRANSMOG_SOURCE_BOSS_DROP
|
|
|
|
|
local drops = GetAppearanceSourceDrops(sourceID)
|
|
|
|
|
if drops and drops[1] then
|
|
|
|
|
sourceTextColorized = drops[1].encounter.." ".."|cFFFFD100"..drops[1].instance.."|r|CFFf8e694";
|
|
|
|
|
sourcePlainText = drops[1].encounter.." "..drops[1].instance;
|
|
|
|
|
|
|
|
|
|
if itemModID == 0 then
|
|
|
|
|
sourceTextColorized = sourceTextColorized.." "..PLAYER_DIFFICULTY1;
|
|
|
|
|
sourcePlainText = sourcePlainText.." "..PLAYER_DIFFICULTY1;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:356".."1"..":1476:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:356".."1"..":1476";
|
|
|
|
|
bonusID = 3561;
|
|
|
|
|
elseif itemModID == 1 then
|
|
|
|
|
sourceTextColorized = sourceTextColorized.." "..PLAYER_DIFFICULTY2;
|
|
|
|
|
sourcePlainText = sourcePlainText.." "..PLAYER_DIFFICULTY2;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:356".."2"..":1476:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:356".."2"..":1476";
|
|
|
|
|
bonusID = 3562;
|
|
|
|
|
elseif itemModID == 3 then
|
|
|
|
|
sourceTextColorized = sourceTextColorized.." "..PLAYER_DIFFICULTY6;
|
|
|
|
|
sourcePlainText = sourcePlainText.." "..PLAYER_DIFFICULTY6;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:356".."3"..":1476:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:356".."3"..":1476";
|
|
|
|
|
bonusID = 3563;
|
|
|
|
|
elseif itemModID == 4 then
|
|
|
|
|
sourceTextColorized = sourceTextColorized.." "..PLAYER_DIFFICULTY3;
|
|
|
|
|
sourcePlainText = sourcePlainText.." "..PLAYER_DIFFICULTY3;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:356".."4"..":1476:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:356".."4"..":1476";
|
|
|
|
|
bonusID = 3564;
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
if sourceType == 2 then --quest
|
|
|
|
|
sourceTextColorized = TRANSMOG_SOURCE_2
|
|
|
|
|
if itemModID == 3 then
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:512".."6"..":1562:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:512".."6"..":1562";
|
|
|
|
|
bonusID = 5126;
|
|
|
|
|
elseif itemModID == 2 then
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:512".."5"..":1562:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:512".."5"..":1562";
|
|
|
|
|
bonusID = 5125;
|
|
|
|
|
elseif itemModID == 1 then
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120::::2:512".."4"..":1562:|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120::::2:512".."4"..":1562";
|
|
|
|
|
bonusID = 5124;
|
|
|
|
|
end
|
|
|
|
|
elseif sourceType == 3 then --vendor
|
|
|
|
|
sourceTextColorized = TRANSMOG_SOURCE_3
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
elseif sourceType == 4 then --world drop
|
|
|
|
|
sourceTextColorized = TRANSMOG_SOURCE_4
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
elseif sourceType == 5 then --achievement
|
|
|
|
|
sourceTextColorized = TRANSMOG_SOURCE_5
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r"
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::"
|
|
|
|
|
elseif sourceType == 6 then --profession
|
|
|
|
|
sourceTextColorized = TRANSMOG_SOURCE_6
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
else
|
|
|
|
|
if itemQuality == 6 then
|
|
|
|
|
sourceTextColorized = ITEM_QUALITY6_DESC;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
if slotID == 16 then
|
|
|
|
|
bonusID = itemModID or 0; --Artifact use itemModID "7V0" + modID - 1
|
|
|
|
|
else
|
|
|
|
|
bonusID = 0;
|
|
|
|
|
end
|
|
|
|
|
elseif itemQuality == 5 then
|
|
|
|
|
sourceTextColorized = ITEM_QUALITY5_DESC;
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not hyperlink then
|
|
|
|
|
hyperlink = "|c"..hex.."|Hitem:"..itemID..":"..enchantID..":::::::120:::::|h[ ]|h|r";
|
|
|
|
|
unformatedHyperlink = "item:"..itemID..":"..enchantID..":::::::120:::::";
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return hyperlink, unformatedHyperlink, bonusID, sourceTextColorized, (sourcePlainText or sourceTextColorized);
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NarciDressingRoomItemButtonMixin = {};
|
|
|
|
|
|
|
|
|
|
function NarciDressingRoomItemButtonMixin:Init(slotName)
|
|
|
|
|
local slotID, textureName = GetInventorySlotInfo(slotName);
|
|
|
|
|
self.slotID = slotID;
|
|
|
|
|
self.emptyTexture = textureName;
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function NarciDressingRoomItemButtonMixin:SetItemSource(sourceID, enchantID)
|
|
|
|
|
sourceID = DataProvider:FindKnownSource(sourceID);
|
|
|
|
|
self.sourceID = sourceID;
|
|
|
|
|
|
|
|
|
|
if not(sourceID and sourceID ~= 0) then
|
|
|
|
|
self.hyperlink = nil;
|
|
|
|
|
self.ItemIcon:SetTexture(self.emptyTexture);
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
self.ItemIcon:SetTexture( MogAPI.GetSourceIcon(sourceID) );
|
|
|
|
|
self.hyperlink = GenerateHyperlinkAndSource(self.slotID, sourceID, enchantID)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function NarciDressingRoomItemButtonMixin:OnMouseDown(mouseButton)
|
|
|
|
|
|
|
|
|
|
end
|