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.
342 lines
9.7 KiB
342 lines
9.7 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
local function HandleSetButtons(button)
|
|
if not button then return end
|
|
|
|
if not button.Icon.backdrop then
|
|
S:HandleIcon(button.Icon, true)
|
|
S:HandleIconBorder(button.IconBorder, button.Icon.backdrop)
|
|
end
|
|
|
|
if button.BackgroundTexture then
|
|
button.BackgroundTexture:SetAlpha(0)
|
|
end
|
|
|
|
if button.HighlightTexture then
|
|
button.HighlightTexture:SetColorTexture(1, 1, 1, .25)
|
|
button.HighlightTexture:SetInside()
|
|
end
|
|
end
|
|
|
|
local function HandleCartToggleButton(button)
|
|
if button.text then
|
|
button:StripTextures()
|
|
|
|
--button.texture:SetAtlas('Perks-ShoppingCart')
|
|
--button.texture:SetOutside()
|
|
|
|
button.text:SetText(button.itemInCart and '-' or '+')
|
|
|
|
if button.itemInCart then
|
|
button.text:SetTextColor(1, 0.3, 0.3)
|
|
else
|
|
button.text:SetTextColor(0.3, 1, 0.3)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function HandleRewardButton(child)
|
|
local container = child.ContentsContainer
|
|
if not container then return end
|
|
|
|
local icon = container.Icon
|
|
if icon then
|
|
S:HandleIcon(container.Icon)
|
|
|
|
container.IconMask:Hide()
|
|
end
|
|
|
|
local priceIcon = container.PriceIcon
|
|
if priceIcon then
|
|
S:HandleIcon(priceIcon)
|
|
end
|
|
|
|
local cartButton = container.CartToggleButton
|
|
if cartButton and not cartButton.text then
|
|
S:HandleButton(cartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
|
|
cartButton.text = cartButton:CreateFontString(nil, 'ARTWORK')
|
|
cartButton.text:FontTemplate(nil, 30, 'OUTLINE')
|
|
cartButton.text:Point('CENTER')
|
|
cartButton.text:SetTextColor(0.3, 1, 0.3)
|
|
|
|
--cartButton.texture = cartButton:CreateTexture(nil, 'ARTWORK')
|
|
--cartButton.texture:SetVertexColor(1, 1, 1, 0.8)
|
|
|
|
HandleCartToggleButton(cartButton)
|
|
|
|
hooksecurefunc(cartButton, 'UpdateCartState', HandleCartToggleButton)
|
|
end
|
|
end
|
|
|
|
local function HandleRewards(frame)
|
|
frame:ForEachFrame(HandleRewardButton)
|
|
end
|
|
|
|
local function HandleSortLabel(button)
|
|
if button and button.Label then
|
|
button.Label:FontTemplate()
|
|
end
|
|
end
|
|
|
|
local function HandleNextPrev(button)
|
|
S:HandleNextPrevButton(button)
|
|
|
|
button:SetScript('OnMouseUp', nil)
|
|
button:SetScript('OnMouseDown', nil)
|
|
end
|
|
|
|
local function PurchaseButton_EnterLeave(button, enter)
|
|
local perks = _G.PerksProgramFrame
|
|
local footer = perks and perks.FooterFrame
|
|
local enabled = footer and footer.purchaseButtonEnabled
|
|
local label = button:GetFontString()
|
|
|
|
if enter then
|
|
if enabled then
|
|
label:SetTextColor(0.3, 1, 0.3, 1)
|
|
else
|
|
label:SetTextColor(1, 1, 1, 1)
|
|
end
|
|
elseif enabled then
|
|
label:SetTextColor(0.3, 0.8, 0.3, 1)
|
|
else
|
|
label:SetTextColor(1, 0.8, 0, 1)
|
|
end
|
|
end
|
|
|
|
local function PurchaseButton_OnEnter(button)
|
|
PurchaseButton_EnterLeave(button, true)
|
|
end
|
|
|
|
local function PurchaseButton_OnLeave(button)
|
|
PurchaseButton_EnterLeave(button)
|
|
end
|
|
|
|
local function GlowEmitterFactory_Toggle(frame, target, show)
|
|
local perks = _G.PerksProgramFrame
|
|
local footer = perks and perks.FooterFrame
|
|
local button = footer and footer.PurchaseButton
|
|
if not button or target ~= button then return end
|
|
|
|
if show then
|
|
frame:Hide(target) -- turn the glow off
|
|
end
|
|
|
|
PurchaseButton_EnterLeave(target, target:IsMouseOver()) -- update the text color instantly
|
|
end
|
|
|
|
local function GlowEmitterFactory_Show(frame, target)
|
|
GlowEmitterFactory_Toggle(frame, target, true)
|
|
end
|
|
|
|
local function GlowEmitterFactory_Hide(frame, target)
|
|
GlowEmitterFactory_Toggle(frame, target)
|
|
end
|
|
|
|
local function DetailsScrollBoxUpdate(frame)
|
|
frame:ForEachFrame(HandleSetButtons)
|
|
end
|
|
|
|
local function HandleShoppingCardButtons(button)
|
|
if not button then return end
|
|
|
|
if button.RemoveFromCartItemButton then
|
|
S:HandleCloseButton(button.RemoveFromCartItemButton.RemoveFromListButton)
|
|
end
|
|
|
|
if not button.bgSetTexture then
|
|
button.bgSetTexture = button:CreateTexture(nil, 'BACKGROUND')
|
|
button.bgSetTexture:SetTexture(E.media.blankTex)
|
|
button.bgSetTexture:SetOutside(button, 10, 4)
|
|
end
|
|
|
|
if button.BackgroundTexture then
|
|
if not button.BackgroundTexture.backdrop then
|
|
button.BackgroundTexture:StripTextures()
|
|
button.BackgroundTexture:CreateBackdrop('Transparent', nil, nil, nil, nil, nil, nil, nil, true)
|
|
end
|
|
|
|
local r, g, b = E:GetItemQualityColor(button.elementData and button.elementData.itemQuality)
|
|
button.bgSetTexture:SetVertexColor(r, g, b, button.elementData and button.elementData.isSetItem and 0.2 or 0)
|
|
else
|
|
button.bgSetTexture:SetVertexColor(0, 0, 0, 0.25)
|
|
end
|
|
|
|
if button.TopBraceTexture then
|
|
button.TopBraceTexture:StripTextures()
|
|
end
|
|
|
|
if button.BottomBraceTexture then
|
|
button.BottomBraceTexture:StripTextures()
|
|
end
|
|
|
|
if button.HighlightTexture then
|
|
button.HighlightTexture:SetColorTexture(1, 1, 1, 0.25)
|
|
end
|
|
|
|
local priceIcon = button.PriceIcon
|
|
if priceIcon then
|
|
S:HandleIcon(priceIcon)
|
|
end
|
|
end
|
|
|
|
local function ShoppingCartScrollBoxUpdate(frame)
|
|
frame:ForEachFrame(HandleShoppingCardButtons)
|
|
end
|
|
|
|
local function HandleCheckbox(box)
|
|
S:HandleCheckBox(box)
|
|
|
|
local text = box.Text
|
|
if text then
|
|
text:FontTemplate()
|
|
end
|
|
end
|
|
|
|
function S:Blizzard_PerksProgram() -- Trading Post
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.perks) then return end
|
|
|
|
local frame = _G.PerksProgramFrame
|
|
local products = frame.ProductsFrame
|
|
|
|
if E.private.skins.parchmentRemoverEnable then
|
|
frame.ThemeContainer:SetAlpha(0)
|
|
end
|
|
|
|
if products then
|
|
S:HandleButton(products.PerksProgramFilter)
|
|
|
|
if products.PerksProgramFilter.ResetButton then
|
|
S:HandleCloseButton(products.PerksProgramFilter.ResetButton)
|
|
end
|
|
|
|
local currency = products.PerksProgramCurrencyFrame
|
|
if currency then
|
|
S:HandleIcon(currency.Icon, true)
|
|
currency.Icon:Size(30)
|
|
currency.Text:FontTemplate(nil, 30)
|
|
end
|
|
|
|
local details = products.PerksProgramProductDetailsContainerFrame
|
|
if details then
|
|
details.Border:Hide()
|
|
details:CreateBackdrop('Transparent')
|
|
details.backdrop:OffsetFrameLevel(-10, details.Border)
|
|
|
|
local container = details.SetDetailsScrollBoxContainer
|
|
if container then
|
|
S:HandleTrimScrollBar(container.ScrollBar)
|
|
|
|
hooksecurefunc(container.ScrollBox, 'Update', DetailsScrollBoxUpdate)
|
|
end
|
|
|
|
local carousel = details.CarouselFrame
|
|
if carousel and carousel.IncrementButton then
|
|
HandleNextPrev(carousel.IncrementButton)
|
|
HandleNextPrev(carousel.DecrementButton)
|
|
end
|
|
end
|
|
|
|
local container = products.ProductsScrollBoxContainer
|
|
if container then
|
|
container:StripTextures()
|
|
container:CreateBackdrop('Transparent')
|
|
container.backdrop:OffsetFrameLevel(-10, container.Border)
|
|
|
|
S:HandleTrimScrollBar(container.ScrollBar)
|
|
|
|
local hold = container.PerksProgramHoldFrame
|
|
if hold then
|
|
hold:StripTextures()
|
|
hold:CreateBackdrop('Transparent')
|
|
hold.backdrop:SetInside(hold, 3, 3)
|
|
end
|
|
|
|
HandleSortLabel(container.NameSortButton)
|
|
HandleSortLabel(container.PriceSortButton)
|
|
|
|
hooksecurefunc(container.ScrollBox, 'Update', HandleRewards)
|
|
end
|
|
|
|
local shoppingCart = products.PerksProgramShoppingCartFrame
|
|
if shoppingCart then
|
|
shoppingCart:StripTextures()
|
|
shoppingCart:CreateBackdrop('Transparent')
|
|
S:HandleCloseButton(shoppingCart.CloseButton)
|
|
shoppingCart.CloseButton:OffsetFrameLevel(1, shoppingCart.backdrop)
|
|
|
|
S:HandleButton(shoppingCart.PurchaseCartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
|
|
S:HandleButton(shoppingCart.ClearCartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
|
|
shoppingCart.ClearCartButton.texture = shoppingCart.ClearCartButton:CreateTexture(nil, 'ARTWORK')
|
|
shoppingCart.ClearCartButton.texture:SetAtlas('Perks-ShoppingCart')
|
|
shoppingCart.ClearCartButton.texture:SetInside(nil, 8, 8)
|
|
|
|
shoppingCart.ClearCartButton.text = shoppingCart.ClearCartButton:CreateFontString(nil, 'ARTWORK')
|
|
shoppingCart.ClearCartButton.text:FontTemplate(nil, 40, 'OUTLINE')
|
|
shoppingCart.ClearCartButton.text:Point('CENTER')
|
|
shoppingCart.ClearCartButton.text:SetTextColor(1, 0.3, 0.3)
|
|
shoppingCart.ClearCartButton.text:SetText('/')
|
|
|
|
local itemList = shoppingCart.ItemList
|
|
S:HandleTrimScrollBar(itemList.ScrollBar)
|
|
|
|
hooksecurefunc(itemList.ScrollBox, 'Update', ShoppingCartScrollBoxUpdate)
|
|
end
|
|
end
|
|
|
|
local footer = frame.FooterFrame
|
|
if footer then
|
|
HandleCheckbox(footer.ToggleAttackAnimation)
|
|
HandleCheckbox(footer.TogglePlayerPreview)
|
|
HandleCheckbox(footer.ToggleMountSpecial)
|
|
HandleCheckbox(footer.ToggleHideArmor)
|
|
|
|
local purchase = footer.PurchaseButton
|
|
if purchase then
|
|
S:HandleButton(footer.LeaveButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(footer.RefundButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(footer.PurchaseButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(footer.ViewCartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(footer.AddToCartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(footer.RemoveFromCartButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
|
|
local viewCart = footer.ViewCartButton
|
|
if viewCart then
|
|
if viewCart.ItemCountBG then
|
|
viewCart.ItemCountBG:StripTextures()
|
|
end
|
|
|
|
if viewCart.ItemCountText then
|
|
viewCart.ItemCountText:ClearAllPoints()
|
|
viewCart.ItemCountText:Point('BOTTOMLEFT', 4, 2)
|
|
end
|
|
|
|
viewCart.texture = viewCart:CreateTexture(nil, 'ARTWORK')
|
|
viewCart.texture:SetAtlas('Perks-ShoppingCart')
|
|
viewCart.texture:SetInside(nil, 8, 8)
|
|
end
|
|
|
|
purchase:HookScript('OnEnter', PurchaseButton_OnEnter)
|
|
purchase:HookScript('OnLeave', PurchaseButton_OnLeave)
|
|
|
|
-- handle the glow
|
|
hooksecurefunc(_G.GlowEmitterFactory, 'Show', GlowEmitterFactory_Show)
|
|
hooksecurefunc(_G.GlowEmitterFactory, 'Hide', GlowEmitterFactory_Hide)
|
|
end
|
|
|
|
local rotate = footer.RotateButtonContainer
|
|
if rotate and rotate.RotateLeftButton then
|
|
S:HandleButton(rotate.RotateLeftButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
S:HandleButton(rotate.RotateRightButton, nil, nil, nil, true, nil, nil, nil, true)
|
|
end
|
|
end
|
|
end
|
|
|
|
S:AddCallbackForAddon('Blizzard_PerksProgram')
|
|
|