--TODO: Rework broken import/export using new set links local addonName, addon = ... addon = LibStub("AceAddon-3.0"):GetAddon(addonName) local Profile local L = LibStub("AceLocale-3.0"):GetLocale(addonName) local LISTWINDOW local AceGUI = LibStub("AceGUI-3.0") local itemLink = "item:%d:0"; local itemLinkMod = "item:%d:0:::::::::::1:%d"; local itemBonusPattern = "item:(%d+):%d*:%d*:%d*:%d*:%d*:%d*:%d*:%d*:%d*:%d*:(%d*):%d*:([%d:]+)" local IE ={} local function Export(itemString) if LISTWINDOW then LISTWINDOW:Hide() end local f = AceGUI:Create("Window") f:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end) f:SetTitle("Wardrobe Export") f:SetLayout("Fill") f:EnableResize(false) _G["BetterWardrobeExportWindow"] = f.frame LISTWINDOW = f tinsert(UISpecialFrames, "BetterWardrobeExportWindow") local MultiLineEditBox = AceGUI:Create("MultiLineEditBox") MultiLineEditBox:SetFullHeight(true) MultiLineEditBox:SetFullWidth(true) MultiLineEditBox:SetLabel("") f:AddChild(MultiLineEditBox) MultiLineEditBox:SetText(itemString or "") end --local testString = "compare?items=16955:32570:137109:29337:42376:35221:37363:16952:13075:50632:27512:34675" --local t2 = "compare?items=163307.0.0.0.0.0.0.0.0.0.5126:163453.0.0.0.0.0.0.0.0.0.5126:163455.0.0.0.0.0.0.0.0.0.5126:163456.0.0.0.0.0.0.0.0.0.5126:163458.0.0.0.0.0.0.0.0.0.5126:163459.0.0.0.0.0.0.0.0.0.5126:163460.0.0.0.0.0.0.0.0.0.5126:163461.0.0.0.0.0.0.0.0.0.5126" --compare?items=16955:32570:137109:29337:42376:35221:37363:16952:13075:50632:27512:34675 --local string2 = "/outfit v1 194960,0,0,194987,194953,0,0,0,194954,194955,194956,194957,93239,-1,0,0,0" local function ImportSet(importString) local itemData = {} importString = string.gsub(importString,"/outfit v1", "") for item in importString:gmatch("[(%-?%d+)]+") do table.insert(itemData, item) end local itemTransmogInfoList ={} for i = 1, 19 do local secondary = 0 local sourceID = itemData[i] if sourceID then itemTransmogInfo = ItemUtil.CreateItemTransmogInfo(sourceID or 0, secondary, 0) else itemTransmogInfo = ItemUtil.CreateItemTransmogInfo( 0, 0, 0) end itemTransmogInfoList[i] = itemTransmogInfo end DressUpItemTransmogInfoList(itemTransmogInfoList) end local importFrom = nil addon.importFrom = importFrom StaticPopupDialogs["BETTER_WARDROBE_IMPORT_SET_POPUP"] = { text = L["Copy and paste a WoW Outfit Link into the text box below to import"], preferredIndex = 3, button1 = L["Import"], button2 = CANCEL, hasEditBox = true, maxLetters = 512, editBoxWidth = 260, OnShow = function(self) if LISTWINDOW then LISTWINDOW:Hide() end self.editBox:SetText("") end, EditBoxOnEnterPressed = function(self) if (self:GetParent().button1:IsEnabled()) then StaticPopup_OnClick(self:GetParent(), 1) end end, OnAccept = function(self) if importFrom == "tmog" then IE.ImportTransmogVendorSet(self.editBox:GetText()) else ImportSet(self.editBox:GetText()); end importFrom = nil end, EditBoxOnEscapePressed = HideParentPanel, exclusive = true, whileDead = true, }; --/outfit v1 194960,0,0,194987,194953,0,0,0,194954,194955,194956,194957,93239,-1,0,0,0 --https://www.wowhead.com/item=163307/honorbound-centurions-vambraces?bonus=5126:1562#see-also --local WowheadURL = "www.wowhead.com/item=(%d+).-bonus=(%d+):%d*" local function ConvertItemLink(item) end local function ImportItem(importString) end local function ImportItemTransMogVendor(importString) end StaticPopupDialogs["BETTER_WARDROBE_IMPORT_ITEM_POPUP"] = { text = L["Type the item ID or url in the text box below"], preferredIndex = 3, button1 = ADD, button2 = CANCEL, hasEditBox = true, maxLetters = 512, editBoxWidth = 260, OnShow = function() if LISTWINDOW then LISTWINDOW:Hide() end end, OnAccept = function(self) if importFrom == "Transmog" then ImportItemTransMogVendor(self.editBox:GetText()) else ImportItem(self.editBox:GetText()); end importFrom = nil end, EditBoxOnEnterPressed = function(self) if (self:GetParent().button1:IsEnabled()) then StaticPopup_OnClick(self:GetParent(), 1) end end, EditBoxOnEscapePressed = HideParentPanel; exclusive = true, whileDead = true, }; function addon:ExportSet() local playerActor = DressUpFrame.ModelScene:GetPlayerActor(); local itemTransmogInfoList = playerActor and playerActor:GetItemTransmogInfoList(); if not itemTransmogInfoList then return; end local slashCommand = TransmogUtil.CreateOutfitSlashCommand(itemTransmogInfoList); Export(slashCommand) end function addon:ExportTransmogVendorSet() local str = "/outfit v1 "; for key, transmogSlot in pairs(TRANSMOG_SLOTS) do if ( transmogSlot.location:IsAppearance() ) then ----local sourceID = WardrobeOutfitDropDown:GetSlotSourceID(transmogSlot.location) local _, _, sourceID = TransmogUtil.GetInfoForEquippedSlot(transmogSlot.location); if ( sourceID ) then str = str..sourceID.."," else str = str.."0," end end end Export(str,false) end function IE.ImportTransmogVendorSet(importString) local transmogSources = {} importString = string.gsub(importString,"/outfit v1", "") for item in importString:gmatch("[(%-?%d+)]+") do table.insert(transmogSources, item) end for _,sourceID in ipairs(transmogSources) do local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID) if sourceInfo then local slot = C_Transmog.GetSlotForInventoryType(sourceInfo.invType); local pendingInfo = TransmogUtil.CreateTransmogPendingInfo(Enum.TransmogPendingType.Apply, sourceID); local transmogLocation = TransmogUtil.CreateTransmogLocation(slot, Enum.TransmogType.Appearance, Enum.TransmogModification.Main); C_Transmog.SetPending(transmogLocation, pendingInfo); end end end local linkText = "f(%d,%d);" function addon:CreateChatLink() local string = [[/run local function f(i,b)DressUpItemLink("item:"..i.."::::::::::::9:"..b);end;]] local Buttons = BW_DressingRoomFrame.PreviewButtonFrame.Slots for index, button in pairs(Buttons) do local itemlink = nil local slot = button:GetID() --if not DressingRoom:IsSlotHidden(slot) then itemlink = button.itemLink --GetInventoryItemLink("player", slot) if itemlink then local id, dif, bonus = ConvertItemLink(itemlink) string = string..linkText:format(id,bonus or 0) end --end end print(string) Export(string,false) end function addon:CreateChatLinkTransmogVendor() local string = [[/run local function f(i,b)DressUpItemLink("item:"..i.."::::::::::::9:"..b);end;]] for key, transmogSlot in pairs(TRANSMOG_SLOTS) do if ( transmogSlot.location:IsAppearance() ) then local _, _, sourceID = TransmogUtil.GetInfoForEquippedSlot(transmogSlot.location) ----local sourceID = WardrobeOutfitDropDown:GetSlotSourceID(transmogSlot.location) if ( sourceID ) then local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID) if sourceInfo then local id = sourceInfo.itemID local bonus = sourceInfo.itemModID or 0 string = string..linkText:format(id,bonus) end end end end Export(string,false) end function BW_TransmogVendorExportButton_OnClick(self) end --/run local function f(i,b)DressUpItemLink("item:"..i.."::::::::::::9:"..b);end;f(27457,0);f(27489,0);f(27539,0);f(27548,0);f(27748,0);f(27790,0);f(27897,0);f(28221,0);