You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
8.0 KiB

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