714ca84456
* Support for Extended Vendor Accommodate the additional vendor slots and buyback slots. * Adjust Repair Icons as well
258 lines
8.6 KiB
Lua
258 lines
8.6 KiB
Lua
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local S = E:GetModule("Skins")
|
|
|
|
--Lua functions
|
|
local _G = _G
|
|
local unpack = unpack
|
|
--WoW API / Variables
|
|
local GetBuybackItemInfo = GetBuybackItemInfo
|
|
local GetItemInfo = GetItemInfo
|
|
local GetItemQualityColor = GetItemQualityColor
|
|
local GetMerchantNumItems = GetMerchantNumItems
|
|
|
|
S:AddCallback("Skin_Merchant", function()
|
|
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.merchant then return end
|
|
local extLoaded = IsAddOnLoaded("ExtVendor")
|
|
local MerchantFrame = _G.MerchantFrame
|
|
MerchantFrame:StripTextures(true)
|
|
MerchantFrame:CreateBackdrop("Transparent")
|
|
MerchantFrame.backdrop:Point("TOPLEFT", 11, -12)
|
|
MerchantFrame.backdrop:Point("BOTTOMRIGHT", -32, 76)
|
|
|
|
S:SetUIPanelWindowInfo(MerchantFrame, "width")
|
|
S:SetBackdropHitRect(MerchantFrame)
|
|
|
|
MerchantFrame:EnableMouseWheel(true)
|
|
MerchantFrame:SetScript("OnMouseWheel", function(_, value)
|
|
if value > 0 then
|
|
if MerchantPrevPageButton:IsShown() and MerchantPrevPageButton:IsEnabled() == 1 then
|
|
MerchantPrevPageButton_OnClick()
|
|
end
|
|
else
|
|
if MerchantNextPageButton:IsShown() and MerchantNextPageButton:IsEnabled() == 1 then
|
|
MerchantNextPageButton_OnClick()
|
|
end
|
|
end
|
|
end)
|
|
|
|
S:HandleCloseButton(MerchantFrameCloseButton, MerchantFrame.backdrop)
|
|
|
|
local function skinMerchantButton(buttonName, buyback)
|
|
local button = _G[buttonName]
|
|
local itemButton = _G[buttonName.."ItemButton"]
|
|
local icon = _G[buttonName.."ItemButtonIconTexture"]
|
|
local name = _G[buttonName.."Name"]
|
|
local nameFrame = _G[buttonName.."NameFrame"]
|
|
local money = _G[buttonName.."MoneyFrame"]
|
|
local slot = _G[buttonName.."SlotTexture"]
|
|
|
|
button:StripTextures(true)
|
|
button:CreateBackdrop("Default")
|
|
button.backdrop:Point("TOPLEFT", -2, 2)
|
|
|
|
if buyback then
|
|
button.backdrop:Point("BOTTOMRIGHT", 4, -13)
|
|
else
|
|
button.backdrop:Point("BOTTOMRIGHT", 4, -6)
|
|
end
|
|
|
|
itemButton:StripTextures()
|
|
itemButton:StyleButton()
|
|
itemButton:SetTemplate("Default", true)
|
|
itemButton:Size(40)
|
|
itemButton:Point("TOPLEFT", 4, -4)
|
|
|
|
icon:SetTexCoord(unpack(E.TexCoords))
|
|
icon:SetInside()
|
|
|
|
name:Point("LEFT", slot, "RIGHT", -4, 5)
|
|
nameFrame:Point("LEFT", slot, "RIGHT", -6, -17)
|
|
|
|
money:ClearAllPoints()
|
|
money:Point("BOTTOMLEFT", itemButton, "BOTTOMRIGHT", 3, 0)
|
|
|
|
if not buyback then
|
|
for j = 1, 2 do
|
|
local currencyItem = _G[buttonName.."AltCurrencyFrameItem"..j]
|
|
local currencyIcon = _G[buttonName.."AltCurrencyFrameItem"..j.."Texture"]
|
|
|
|
currencyIcon.backdrop = CreateFrame("Frame", nil, currencyItem)
|
|
currencyIcon.backdrop:SetTemplate("Default")
|
|
currencyIcon.backdrop:SetFrameLevel(currencyItem:GetFrameLevel())
|
|
currencyIcon.backdrop:SetOutside(currencyIcon)
|
|
|
|
currencyIcon:SetTexCoord(unpack(E.TexCoords))
|
|
currencyIcon:SetParent(currencyIcon.backdrop)
|
|
end
|
|
end
|
|
end
|
|
|
|
for i = 1, 20 do
|
|
if _G["MerchantItem"..i] then
|
|
skinMerchantButton("MerchantItem"..i)
|
|
|
|
if not extLoaded then
|
|
if i % 2 == 0 then
|
|
_G["MerchantItem"..i]:Point("TOPLEFT", _G["MerchantItem"..i-1], "TOPRIGHT", 13, 0)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
skinMerchantButton("MerchantBuyBackItem", true)
|
|
|
|
S:HandleNextPrevButton(MerchantNextPageButton, nil, nil, true)
|
|
S:HandleNextPrevButton(MerchantPrevPageButton, nil, nil, true)
|
|
|
|
S:HandleCheckBox(MerchantFrameSellJunkFrameAutoSellCheck)
|
|
|
|
S:HandleButton(MerchantRepairItemButton)
|
|
|
|
if extLoaded then
|
|
S:HandleEditBox(MerchantFrameSearchBox)
|
|
S:HandleButton(MerchantFrameFilterButton)
|
|
end
|
|
|
|
MerchantRepairItemButton:StyleButton(false)
|
|
-- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 26, 26, 5, 6
|
|
MerchantRepairItemButton:GetRegions():SetTexCoord(0.0390625, 0.2421875, 0.09375, 0.5)
|
|
MerchantRepairItemButton:GetRegions():SetInside()
|
|
|
|
S:HandleButton(MerchantRepairAllButton)
|
|
MerchantRepairAllIcon:StyleButton(false)
|
|
-- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 26, 26, 41, 6
|
|
MerchantRepairAllIcon:SetTexCoord(0.3203125, 0.5234375, 0.09375, 0.5)
|
|
MerchantRepairAllIcon:SetInside()
|
|
|
|
S:HandleButton(MerchantGuildBankRepairButton)
|
|
MerchantGuildBankRepairButton:StyleButton()
|
|
-- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 26, 26, 77, 6
|
|
MerchantGuildBankRepairButtonIcon:SetTexCoord(0.6015625, 0.8046875, 0.09375, 0.5)
|
|
MerchantGuildBankRepairButtonIcon:SetInside()
|
|
|
|
S:HandleTab(MerchantFrameTab1)
|
|
S:HandleTab(MerchantFrameTab2)
|
|
|
|
MerchantNameText:Point("TOP", -6, -22)
|
|
|
|
MerchantItem1:SetPoint("TOPLEFT", 21, -54)
|
|
|
|
MerchantFrameSellJunkFrameAutoSellCheck:Point("BOTTOMLEFT", MerchantFrame, "BOTTOMLEFT", 18, 80)
|
|
MerchantRepairSettingsButton:Point("BOTTOM", MerchantFrame, "BOTTOM", -38, 112)
|
|
if not extLoaded then
|
|
MerchantPrevPageButton:Point("CENTER", MerchantFrame, "BOTTOMLEFT", 37, 172)
|
|
MerchantNextPageButton:Point("CENTER", MerchantFrame, "BOTTOMLEFT", 324, 172)
|
|
|
|
MerchantPageText:Point("BOTTOM", -14, 166)
|
|
|
|
MerchantBuyBackItem:Point("TOPLEFT", MerchantItem10, "BOTTOMLEFT", 0, -39)
|
|
end
|
|
|
|
MerchantGuildBankRepairButton:Point("LEFT", MerchantRepairAllButton, "RIGHT", 5, 0)
|
|
MerchantRepairItemButton:Point("RIGHT", MerchantRepairAllButton, "LEFT", -5, 0)
|
|
MerchantRepairItemButton.SetPoint = E.noop
|
|
|
|
MerchantMoneyFrame:Point("BOTTOMRIGHT", -30, 86)
|
|
|
|
MerchantFrameTab1:Point("CENTER", MerchantFrame, "BOTTOMLEFT", 54, 62)
|
|
MerchantFrameTab2:Point("LEFT", MerchantFrameTab1, "RIGHT", -15, 0)
|
|
|
|
hooksecurefunc(MerchantRepairAllButton, "Show", function(self)
|
|
-- CanMerchantRepair && CanGuildBankRepair
|
|
if self:GetWidth() == 32 then
|
|
MerchantRepairText:SetPoint("CENTER", MerchantFrame, "BOTTOMLEFT", 82, 151)
|
|
MerchantRepairAllButton:Point("BOTTOMRIGHT", MerchantFrame, "BOTTOMLEFT", 100, 105)
|
|
else
|
|
MerchantRepairText:SetPoint("BOTTOMLEFT", MerchantFrame, "BOTTOMLEFT", 11, 125)
|
|
MerchantRepairAllButton:Point("BOTTOMRIGHT", MerchantFrame, "BOTTOMLEFT", 157, extLoaded and 103 or 113)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc("MerchantFrame_UpdateMerchantInfo", function()
|
|
local numMerchantItems = GetMerchantNumItems()
|
|
local index = (MerchantFrame.page - 1) * MERCHANT_ITEMS_PER_PAGE
|
|
local _, button, name, quality
|
|
|
|
-- for i = 1, BUYBACK_ITEMS_PER_PAGE do
|
|
for i = 1, MERCHANT_ITEMS_PER_PAGE do
|
|
index = index + 1
|
|
|
|
if index <= numMerchantItems then
|
|
button = _G["MerchantItem"..i.."ItemButton"]
|
|
name = _G["MerchantItem"..i.."Name"]
|
|
|
|
if button.link then
|
|
_, _, quality = GetItemInfo(button.link)
|
|
|
|
if quality then
|
|
local r, g, b = GetItemQualityColor(quality)
|
|
button:SetBackdropBorderColor(r, g, b)
|
|
name:SetTextColor(r, g, b)
|
|
else
|
|
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
name:SetTextColor(1, 1, 1)
|
|
end
|
|
else
|
|
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
name:SetTextColor(1, 1, 1)
|
|
end
|
|
end
|
|
|
|
local itemName = GetBuybackItemInfo(GetNumBuybackItems())
|
|
if itemName then
|
|
_, _, quality = GetItemInfo(itemName)
|
|
|
|
if quality then
|
|
local r, g, b = GetItemQualityColor(quality)
|
|
MerchantBuyBackItemItemButton:SetBackdropBorderColor(r, g, b)
|
|
MerchantBuyBackItemName:SetTextColor(r, g, b)
|
|
else
|
|
MerchantBuyBackItemItemButton:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
MerchantBuyBackItemName:SetTextColor(1, 1, 1)
|
|
end
|
|
else
|
|
MerchantBuyBackItemItemButton:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
end
|
|
end
|
|
if not extLoaded then
|
|
MerchantItem3:SetPoint("TOPLEFT", "MerchantItem1", "BOTTOMLEFT", 0, -11)
|
|
MerchantItem5:SetPoint("TOPLEFT", "MerchantItem3", "BOTTOMLEFT", 0, -11)
|
|
MerchantItem7:SetPoint("TOPLEFT", "MerchantItem5", "BOTTOMLEFT", 0, -11)
|
|
MerchantItem9:SetPoint("TOPLEFT", "MerchantItem7", "BOTTOMLEFT", 0, -11)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc("MerchantFrame_UpdateBuybackInfo", function()
|
|
local numBuybackItems = GetNumBuybackItems()
|
|
local _, button, name, quality
|
|
|
|
for i = 1, BUYBACK_ITEMS_PER_PAGE do
|
|
if i <= numBuybackItems then
|
|
local itemName = GetBuybackItemInfo(i)
|
|
|
|
if itemName then
|
|
button = _G["MerchantItem"..i.."ItemButton"]
|
|
name = _G["MerchantItem"..i.."Name"]
|
|
_, _, quality = GetItemInfo(itemName)
|
|
|
|
if quality then
|
|
local r, g, b = GetItemQualityColor(quality)
|
|
button:SetBackdropBorderColor(r, g, b)
|
|
name:SetTextColor(r, g, b)
|
|
else
|
|
button:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
name:SetTextColor(1, 1, 1)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if not extLoaded then
|
|
MerchantItem3:SetPoint("TOPLEFT", "MerchantItem1", "BOTTOMLEFT", 0, -15)
|
|
MerchantItem5:SetPoint("TOPLEFT", "MerchantItem3", "BOTTOMLEFT", 0, -15)
|
|
MerchantItem7:SetPoint("TOPLEFT", "MerchantItem5", "BOTTOMLEFT", 0, -15)
|
|
MerchantItem9:SetPoint("TOPLEFT", "MerchantItem7", "BOTTOMLEFT", 0, -15)
|
|
end
|
|
end)
|
|
end)
|