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.

369 lines
18 KiB

local addonName, addon = ...
addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local UI = {}
function addon.Init:BuildTransmogVendorUI()
UI:CreateButtons()
UI:CreateDropDown()
UI.ExtendTransmogView()
---UpdateSlotButtons()
----Temp fix for reseting head slot position when sencondary slot is toggled
function WardrobeTransmogFrame:CheckSecondarySlotButtons()
local headButton = self.HeadButton;
local mainShoulderButton = self.ShoulderButton;
local secondaryShoulderButton = self.SecondaryShoulderButton;
local secondaryShoulderTransmogged = TransmogUtil.IsSecondaryTransmoggedForItemLocation(secondaryShoulderButton.itemLocation);
local pendingInfo = C_Transmog.GetPending(secondaryShoulderButton.transmogLocation);
local showSecondaryShoulder = false;
if not pendingInfo then
showSecondaryShoulder = secondaryShoulderTransmogged;
elseif pendingInfo.type == Enum.TransmogPendingType.ToggleOff then
showSecondaryShoulder = false;
else
showSecondaryShoulder = true;
end
secondaryShoulderButton:SetShown(showSecondaryShoulder);
self.ToggleSecondaryAppearanceCheckbox:SetChecked(showSecondaryShoulder);
local point, relativeTo, relativePoint, xOfs, yOfs = headButton:GetPoint()
if showSecondaryShoulder then
headButton:SetPoint("TOP", xOfs, -15);
secondaryShoulderButton:SetPoint("TOP", mainShoulderButton, "BOTTOM", 0, -10);
else
headButton:SetPoint("TOP", xOfs, -41);
secondaryShoulderButton:SetPoint("TOP", mainShoulderButton, "TOP");
end
if not showSecondaryShoulder and self.selectedSlotButton == secondaryShoulderButton then
self:SelectSlotButton(mainShoulderButton);
end
end
----addon:SecureHook(WardrobeTransmogFrame,"CheckSecondarySlotButtons", function() C_Timer.After(0.1, function() print("SD"); UI.ExtendTransmogView() end) end)
end
function UI:CreateDropDown()
WardrobeTransmogFrame.OutfitDropdown:Hide()
local f = CreateFrame("DropdownButton", "BetterWardrobeTMOutfitDropDown", WardrobeTransmogFrame, "BetterWardrobeSavedSetDropdownTemplate")
addon:SecureHook(WardrobeTransmogFrame, "OnTransmogApplied", function()
C_Timer.After(.5, function()
--if BetterWardrobeOutfitDropDown.selectedOutfitID and BetterWardrobeOutfitDropDown:IsOutfitDressed() then
--BetterWardrobeOutfitDropDown:OnOutfitApplied(BetterWardrobeOutfitDropDown.selectedOutfitID)
--end
end)
end, true)
end
--Creates the various buttons used on the Collection Journal
function UI:CreateButtons()
--Load Queue Button
local BW_LoadQueueButton = CreateFrame("Button", "BW_LoadQueueButton", WardrobeTransmogFrame, "BetterWardrobeButtonTemplate")
BW_LoadQueueButton.Icon:SetTexture("Interface\\Buttons\\UI-OptionsButton")
BW_LoadQueueButton:SetPoint("TOPLEFT", WardrobeTransmogFrame.OutfitDropdown.SaveButton, "TOPRIGHT", 50,-2)
BW_LoadQueueButton.buttonID = "Import"
BW_LoadQueueButton:SetScript("OnClick", function(self) BW_TransmogVendorExportButton_OnClick(self) end)
--BW_LoadQueueButton:SetScript("OnEnter", function(self) BW_DressingRoomButtonMixin:OnEnter(self) end)
--Randomize Button, Mixin defined in Randomizer.lua
local BW_RandomizeButton = CreateFrame("Button", "BW_RandomizeButton", WardrobeTransmogFrame, "BetterWardrobeButtonTemplate")
BW_RandomizeButton.Icon:SetTexture("Interface\\Buttons\\UI-GroupLoot-Dice-Up")
Mixin(BW_RandomizeButton, BW_RandomizeButtonMixin)
BW_RandomizeButton:SetPoint("TOPLEFT", BW_LoadQueueButton, "TOPRIGHT" , 0, 0)
BW_RandomizeButton:SetScript("OnMouseUp", BW_RandomizeButton.OnMouseUp)
BW_RandomizeButton:SetScript("OnMouseDown", BW_RandomizeButton.OnMouseDown)
BW_RandomizeButton:SetScript("OnEnter", BW_RandomizeButton.OnEnter)
local BW_SlotHideButton = CreateFrame("Button", "BW_SlotHideButton", WardrobeTransmogFrame, "BetterWardrobeButtonTemplate")
BW_SlotHideButton.buttonID = "HideSlot"
BW_SlotHideButton:SetScript("OnEnter", function(self) BW_DressingRoomButtonMixin:OnEnter() end)
BW_SlotHideButton.Icon:SetTexture("Interface\\PvPRankBadges\\PvPRank12")
--Mixin(BW_SlotHideButton, BW_SlotHideButtonMixin)
BW_SlotHideButton:SetPoint("TOPLEFT", BW_RandomizeButton, "TOPRIGHT" , 0, 0)
BW_SlotHideButton:SetScript("OnClick", function(self) UI:HideSlotMenu_OnClick(self) end)
--BW_SlotHideButton:SetScript("OnMouseUp", BW_SlotHideButton.OnMouseUp)
--BW_SlotHideButton:SetScript("OnMouseDown", BW_SlotHideButton.OnMouseDown)
--BW_SlotHideButton:SetScript("OnEnter", BW_SlotHideButton.OnEnter)
----local BW_TransmogOptionsDropDown= CreateFrame("Frame", "BW_TransmogOptionsDropDown", BetterWardrobeCollectionFrame, "BW_UIDropDownMenuTemplate")
----BW_TransmogOptionsDropDown = BW_TransmogOptionsDropDown
local f = CreateFrame("Frame", "BW_AltIcon1", WardrobeTransmogFrame.HeadButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon3", WardrobeTransmogFrame.ShoulderButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon15", WardrobeTransmogFrame.BackButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon5", WardrobeTransmogFrame.ChestButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon9", WardrobeTransmogFrame.WristButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon10", WardrobeTransmogFrame.HandsButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon6", WardrobeTransmogFrame.WaistButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon7", WardrobeTransmogFrame.LegsButton, "AltItemtemplate")
local f = CreateFrame("Frame", "BW_AltIcon8", WardrobeTransmogFrame.FeetButton, "AltItemtemplate")
end
function UI:HideSlotMenu_OnClick(parent)
local Profile = addon.Profile
local armor = addon.Globals.EmptyArmor
local name = addon.QueueList[3]
local contextMenuData = {{ text = L["Select Slot to Hide"], isTitle = true, notCheckable = true},}
local profile = addon.setdb.profile.autoHideSlot
local function GeneratorFunction(owner, rootDescription)
rootDescription:CreateTitle(L["Select Slot to Hide"]);
for i = 1, 19 do
if armor[i] then
rootDescription:CreateCheckbox(_G[addon.Globals.INVENTORY_SLOT_NAMES[i]], function() return profile[i] end, function(data) profile[i] = not profile[i] end);
end
end
end
MenuUtil.CreateContextMenu(parent, GeneratorFunction);
end
function BW_TransmogOptionsButton_OnEnter(self)
if not addon.Profile.ShowIncomplete then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
GameTooltip:SetText(L["Requires 'Show Incomplete Sets' Enabled"])
GameTooltip:Show()
end
end
function BetterWardrobeTransmogVendorOptionsDropDown_OnLoad(self)
end
local dropdownOrder = {DEFAULT, ALPHABETIC, APPEARANCE, COLOR, EXPANSION, ITEM_SOURCE}
local locationDropDown = addon.Globals.locationDropDown
addon.includeLocation = {}
for i, location in pairs(locationDropDown) do
addon.includeLocation[i] = true
end
-- Base Transmog Sets Window Upates
function UI.ExtendTransmogView(reset)
if WardrobeFrame and addon.TransmogVendorSizeUpdated and not reset or not WardrobeFrame then return end
--if not addon.Profile.LargeTransmogArea or not addon.Profile.ExtraLargeTransmogArea then return end
local scale = 1
--BW_LoadQueueButton:ClearAllPoints()
--BW_LoadQueueButton:SetPoint("TOPLEFT", BetterWardrobeOutfitDropDown.SaveButton, "TOPRIGHT", 5, 0)
if addon.Profile.ExtraLargeTransmogArea then
scale = 1.25
local itemFrameWidth = math.floor(BetterWardrobeCollectionFrame.ItemsCollectionFrame:GetWidth()) + 5
local screenWidth = addon.Profile.ExtraLargeTransmogAreaMax or math.floor(UIParent:GetWidth())-- 1680 --math.floor(UIParent:GetWidth())
local frameWidth = screenWidth - itemFrameWidth
WardrobeFrame:SetWidth(screenWidth)
WardrobeFrame:SetClampedToScreen(true)
WardrobeFrame:SetHeight(UIParent:GetHeight() -25);
WardrobeTransmogFrame:SetWidth(frameWidth);
WardrobeTransmogFrame:SetHeight(WardrobeFrame:GetHeight() -90);
WardrobeTransmogFrame:SetPoint("TOPLEFT", WardrobeFrame, 4, -60)
WardrobeTransmogFrame.ModelScene:ClearAllPoints()
WardrobeTransmogFrame.ModelScene:SetHeight(WardrobeFrame:GetHeight() -90);
if frameWidth > 800 then
WardrobeTransmogFrame.ModelScene:SetWidth(800);
WardrobeTransmogFrame.ModelScene:SetPoint("TOP", WardrobeTransmogFrame)
WardrobeTransmogFrame.ModelScene:SetPoint("BOTTOM", WardrobeTransmogFrame)
else
WardrobeTransmogFrame.ModelScene:SetPoint("TOPLEFT", WardrobeTransmogFrame, 25, -20)
WardrobeTransmogFrame.ModelScene:SetPoint("BOTTOMRIGHT", WardrobeTransmogFrame, -25, 20)
end
WardrobeTransmogFrame.Inset.BG:SetAllPoints()
WardrobeTransmogFrame.HeadButton:ClearAllPoints()
--WardrobeTransmogFrame.HeadButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", math.ceil(frameWidth * -0.3), -41) -- -320
WardrobeTransmogFrame.HeadButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", math.ceil(frameWidth * -0.35625), -41) -- -320
WardrobeTransmogFrame.HandsButton:ClearAllPoints()
--WardrobeTransmogFrame.HandsButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", math.floor(frameWidth * 0.3), -118) --325
WardrobeTransmogFrame.HandsButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", math.floor(frameWidth * 0.35625), -118) --325
WardrobeTransmogFrame.MainHandButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandButton:SetPoint("BOTTOM", WardrobeTransmogFrame.ModelScene, "BOTTOM", -26, 15)
WardrobeTransmogFrame.SecondaryHandButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandButton:SetPoint("BOTTOM", WardrobeTransmogFrame.ModelScene, "BOTTOM", 27, 15)
WardrobeTransmogFrame.MainHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.MainHandButton, "BOTTOM", 0, -20)
WardrobeTransmogFrame.SecondaryHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.SecondaryHandButton, "BOTTOM", 0, -20)
WardrobeTransmogFrame.ModelScene.ClearAllPendingButton:SetPoint("TOPRIGHT", WardrobeTransmogFrame, -20, -20)
WardrobeTransmogFrame.ModelScene.ControlFrame:SetPoint("TOP", WardrobeTransmogFrame, "TOP", 0, -4)
--BetterWardrobeOutfitDropDown:ClearAllPoints()
--BetterWardrobeOutfitDropDown:SetPoint("TOPLEFT", WardrobeTransmogFrame, 35, 28)
--BW_LoadQueueButton:ClearAllPoints()
--BW_LoadQueueButton:SetPoint("TOPLEFT", BetterWardrobeOutfitDropDown, "TOPRIGHT", 85, -5)
BetterWardrobeTMOutfitDropDown:ClearAllPoints()
BetterWardrobeTMOutfitDropDown:SetPoint("TOPLEFT", 50, 28)
if UIPanelWindows["WardrobeFrame"] then
UIPanelWindows["WardrobeFrame"].width = 1280
else
UIPanelWindows["WardrobeFrame"] ={ area = "left", pushable = 0, width = 1280 };
end
elseif addon.Profile.LargeTransmogArea then
WardrobeFrame:SetWidth(1170)
WardrobeFrame:SetHeight(606)
WardrobeTransmogFrame:SetWidth(500)
WardrobeTransmogFrame:SetHeight(495)
WardrobeTransmogFrame:ClearAllPoints()
WardrobeTransmogFrame:SetPoint("TOPLEFT", WardrobeFrame, 4, -60)
WardrobeTransmogFrame.ModelScene:ClearAllPoints()
WardrobeTransmogFrame.ModelScene:SetWidth(420)
WardrobeTransmogFrame.ModelScene:SetHeight(420)
WardrobeTransmogFrame.ModelScene:SetPoint("TOP", WardrobeTransmogFrame, "TOP", 0, -4)
WardrobeTransmogFrame.Inset:SetWidth(494)
WardrobeTransmogFrame.Inset:SetHeight(495)
WardrobeTransmogFrame.Inset:ClearAllPoints()
WardrobeTransmogFrame.Inset:SetAllPoints()
WardrobeTransmogFrame.Inset.BG:ClearAllPoints()
WardrobeTransmogFrame.Inset.BG:SetAllPoints()
WardrobeTransmogFrame.HeadButton:ClearAllPoints()
WardrobeTransmogFrame.HeadButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", -208, -41)
WardrobeTransmogFrame.HandsButton:ClearAllPoints()
WardrobeTransmogFrame.HandsButton:SetPoint("TOP", WardrobeTransmogFrame, "TOP", 205, -118)
WardrobeTransmogFrame.MainHandButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "BOTTOM", -26, -5)
WardrobeTransmogFrame.SecondaryHandButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "BOTTOM", 27, -5)
WardrobeTransmogFrame.MainHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.MainHandButton, "BOTTOM", 0, -20)
WardrobeTransmogFrame.SecondaryHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.SecondaryHandButton, "BOTTOM", 0, -20)
BetterWardrobeTMOutfitDropDown:ClearAllPoints()
BetterWardrobeTMOutfitDropDown:SetPoint("TOPLEFT", 50, 28)
--BetterWardrobeOutfitDropDown:ClearAllPoints()
--BetterWardrobeOutfitDropDown:SetPoint("TOPLEFT", WardrobeTransmogFrame, 35, 28)
if UIPanelWindows["WardrobeFrame"] then
UIPanelWindows["WardrobeFrame"].width = 1170
else
UIPanelWindows["WardrobeFrame"] ={ area = "left", pushable = 0, width = 1170 };
end
else
WardrobeFrame:SetWidth(965)
WardrobeFrame:SetHeight(606)
WardrobeTransmogFrame:SetWidth(300)
WardrobeTransmogFrame:SetHeight(495)
WardrobeTransmogFrame:ClearAllPoints()
WardrobeTransmogFrame:SetPoint("TOPLEFT", WardrobeFrame, 4, -86)
WardrobeTransmogFrame.ModelScene:ClearAllPoints()
WardrobeTransmogFrame.ModelScene:SetWidth(294)
WardrobeTransmogFrame.ModelScene:SetHeight(488)
WardrobeTransmogFrame.ModelScene:SetPoint("TOPLEFT", WardrobeTransmogFrame, "TOPLEFT", 2, -4)
WardrobeTransmogFrame.Inset:SetWidth(294)
WardrobeTransmogFrame.Inset:SetHeight(494)
WardrobeTransmogFrame.Inset:ClearAllPoints()
WardrobeTransmogFrame.Inset:SetAllPoints()
WardrobeTransmogFrame.Inset.BG:ClearAllPoints()
WardrobeTransmogFrame.Inset.BG:SetAllPoints()
WardrobeTransmogFrame.ModelScene.ClearAllPendingButton:ClearAllPoints()
WardrobeTransmogFrame.ModelScene.ClearAllPendingButton:SetPoint("TOPRIGHT", WardrobeTransmogFrame.ModelScene, "TOPRIGHT", -5, -10)
WardrobeTransmogFrame.HeadButton:ClearAllPoints()
WardrobeTransmogFrame.HeadButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", -121, -41)
WardrobeTransmogFrame.HandsButton:ClearAllPoints()
WardrobeTransmogFrame.HandsButton:SetPoint("TOP", WardrobeTransmogFrame.ModelScene, "TOP", 123, -118)
WardrobeTransmogFrame.MainHandButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandButton:SetPoint("BOTTOM", WardrobeTransmogFrame.ModelScene, "BOTTOM", -26, 45)
WardrobeTransmogFrame.SecondaryHandButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandButton:SetPoint("BOTTOM", WardrobeTransmogFrame.ModelScene, "BOTTOM", 27, 45)
WardrobeTransmogFrame.MainHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.MainHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.MainHandButton, "BOTTOM", 0, -20)
WardrobeTransmogFrame.SecondaryHandEnchantButton:ClearAllPoints()
WardrobeTransmogFrame.SecondaryHandEnchantButton:SetPoint("BOTTOM", WardrobeTransmogFrame.SecondaryHandButton, "BOTTOM", 0, -20)
BetterWardrobeTMOutfitDropDown:ClearAllPoints()
BetterWardrobeTMOutfitDropDown:SetPoint("TOPLEFT", 3, 28)
--BetterWardrobeOutfitDropDown:ClearAllPoints()
--BetterWardrobeOutfitDropDown:SetPoint("TOPLEFT", WardrobeTransmogFrame, -14, 28)
BW_LoadQueueButton:ClearAllPoints()
--BW_LoadQueueButton:SetPoint("BOTTOMLEFT", BetterWardrobeOutfitDropDown.SaveButton, "TOPLEFT", 0, 5)
if UIPanelWindows["WardrobeFrame"] then
UIPanelWindows["WardrobeFrame"].width = 965
else
UIPanelWindows["WardrobeFrame"] ={ area = "left", pushable = 0, width = 965 };
end
end
WardrobeTransmogFrame.ToggleSecondaryAppearanceCheckbox:ClearAllPoints()
WardrobeTransmogFrame.ToggleSecondaryAppearanceCheckbox:SetPoint("LEFT", WardrobeCollectionFrame.ItemsCollectionFrame.ModelR3C1, "LEFT", -5, -110);
WardrobeTransmogFrame.ToggleSecondaryAppearanceCheckbox:SetFrameLevel(400)
for i, button in pairs( WardrobeTransmogFrame.SlotButtons) do
button:SetScale(scale);
end
WardrobeTransmogFrame.ModelScene.ControlFrame:SetScale(scale)
WardrobeTransmogFrame.ModelScene.ClearAllPendingButton:SetScale(scale)
UpdateUIPanelPositions()
addon.TransmogVendorSizeUpdated = true
end
addon.ExtendTransmogView = UI.ExtendTransmogView
local function UpdateSlotButtons()
for i, button in pairs(WardrobeTransmogFrame.SlotButtons) do
addon:SecureHook(button, "OnUserSelect", function(slotButton, fromOnClick)
if slotButton then
slotButton:SetSelected(true);
if (fromOnClick and BetterWardrobeCollectionFrame.activeFrame ~= BetterWardrobeCollectionFrame.ItemsCollectionFrame) then
BetterWardrobeCollectionFrame:ClickTab(BetterWardrobeCollectionFrame.ItemsTab);
end
if ( BetterWardrobeCollectionFrame.activeFrame == BetterWardrobeCollectionFrame.ItemsCollectionFrame ) then
local _, _, selectedSourceID = TransmogUtil.GetInfoForEquippedSlot(slotButton.transmogLocation);
local forceGo = slotButton.transmogLocation:IsIllusion();
local forTransmog = true;
local effectiveCategory;
if slotButton.transmogLocation:IsEitherHand() then
effectiveCategory = C_Transmog.GetSlotEffectiveCategory(slotButton.transmogLocation);
end
BetterWardrobeCollectionFrame.ItemsCollectionFrame:GoToSourceID(selectedSourceID, slotButton.transmogLocation, forceGo, forTransmog, effectiveCategory);
BetterWardrobeCollectionFrame.ItemsCollectionFrame:SetTransmogrifierAppearancesShown(true);
end
else
BetterWardrobeCollectionFrame.ItemsCollectionFrame:SetTransmogrifierAppearancesShown(false);
end
end)
end
end