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

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')