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.

190 lines
6.7 KiB

local E, L, V, P, G = unpack(ElvUI)
local S = E:GetModule('Skins')
local _G = _G
local strfind, unpack = strfind, unpack
local hooksecurefunc = hooksecurefunc
local GetItemInfo = GetItemInfo
local GetTradeSkillNumReagents = GetTradeSkillNumReagents
local GetTradeSkillInfo = GetTradeSkillInfo
local GetItemQualityColor = GetItemQualityColor
local GetTradeSkillItemLink = GetTradeSkillItemLink
local GetTradeSkillReagentInfo = GetTradeSkillReagentInfo
local GetTradeSkillReagentItemLink = GetTradeSkillReagentItemLink
function S:Blizzard_TradeSkillUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tradeskill) then return end
local TradeSkillFrame = _G.TradeSkillFrame
S:HandleFrame(TradeSkillFrame, true, nil, 11, -12, -32, 76)
_G.TradeSkillRankFrameBorder:StripTextures()
_G.TradeSkillDetailScrollFrame:StripTextures()
_G.TradeSkillListScrollFrame:StripTextures()
_G.TradeSkillDetailScrollChildFrame:StripTextures()
_G.TradeSkillFrameBottomLeftTexture:Kill()
_G.TradeSkillFrameBottomRightTexture:Kill()
local TradeSkillRankFrame = _G.TradeSkillRankFrame
TradeSkillRankFrame:Size(322, 14)
TradeSkillRankFrame:Point('TOPLEFT', 23, -37)
TradeSkillRankFrame:CreateBackdrop()
TradeSkillRankFrame:SetStatusBarTexture(E.media.normTex)
TradeSkillRankFrame:SetStatusBarColor(0.13, 0.35, 0.80)
E:RegisterStatusBar(TradeSkillRankFrame)
local TradeSkillFrameEditBox = _G.TradeSkillFrameEditBox
S:HandleEditBox(TradeSkillFrameEditBox)
TradeSkillFrameEditBox:ClearAllPoints()
TradeSkillFrameEditBox:Point('TOPLEFT', TradeSkillFrame, 'TOPLEFT', 23, -16)
TradeSkillFrameEditBox:Size(122, 18)
_G.TradeSkillExpandButtonFrame:StripTextures()
local TradeSkillCollapseAllButton = _G.TradeSkillCollapseAllButton
TradeSkillCollapseAllButton:GetNormalTexture():SetPoint('LEFT', 3, 2)
TradeSkillCollapseAllButton:GetNormalTexture():Size(15)
TradeSkillCollapseAllButton:SetHighlightTexture(E.ClearTexture)
TradeSkillCollapseAllButton.SetHighlightTexture = E.noop
TradeSkillCollapseAllButton:SetDisabledTexture(E.Media.Textures.MinusButton)
TradeSkillCollapseAllButton.SetDisabledTexture = E.noop
TradeSkillCollapseAllButton:GetDisabledTexture():SetPoint('LEFT', 3, 2)
TradeSkillCollapseAllButton:GetDisabledTexture():Size(15)
TradeSkillCollapseAllButton:GetDisabledTexture():SetDesaturated(true)
S:HandleDropDownBox(_G.TradeSkillInvSlotDropDown, 140)
_G.TradeSkillInvSlotDropDown:ClearAllPoints()
_G.TradeSkillInvSlotDropDown:Point('TOPRIGHT', TradeSkillFrame, 'TOPRIGHT', -32, -68)
S:HandleDropDownBox(_G.TradeSkillSubClassDropDown, 140)
_G.TradeSkillSubClassDropDown:ClearAllPoints()
_G.TradeSkillSubClassDropDown:Point('RIGHT', _G.TradeSkillInvSlotDropDown, 'RIGHT', -120, 0)
_G.TradeSkillFrameTitleText:ClearAllPoints()
_G.TradeSkillFrameTitleText:Point('TOP', TradeSkillFrame, 'TOP', 0, -18)
local TradeSkillFrameAvailableFilterCheckButton = _G.TradeSkillFrameAvailableFilterCheckButton
S:HandleCheckBox(TradeSkillFrameAvailableFilterCheckButton)
TradeSkillFrameAvailableFilterCheckButton:Point('TOPLEFT', 18, -50)
for i = 1, _G.TRADE_SKILLS_DISPLAYED do
local button = _G['TradeSkillSkill'..i]
local highlight = _G['TradeSkillSkill'..i..'Highlight']
button:GetNormalTexture():Size(14)
button:GetNormalTexture():SetPoint('LEFT', 2, 1)
highlight:SetTexture('')
highlight.SetTexture = E.noop
end
hooksecurefunc('TradeSkillFrame_Update', function()
for i = 1, _G.TRADE_SKILLS_DISPLAYED do
local button = _G['TradeSkillSkill'..i]
local texture = button:GetNormalTexture():GetTexture()
if texture then
if strfind(texture, 'MinusButton') then
button:SetNormalTexture(E.Media.Textures.MinusButton)
elseif strfind(texture, 'PlusButton') then
button:SetNormalTexture(E.Media.Textures.PlusButton)
end
end
end
if TradeSkillCollapseAllButton.collapsed then
TradeSkillCollapseAllButton:SetNormalTexture(E.Media.Textures.PlusButton)
else
TradeSkillCollapseAllButton:SetNormalTexture(E.Media.Textures.MinusButton)
end
end)
S:HandleScrollBar(_G.TradeSkillListScrollFrameScrollBar)
S:HandleScrollBar(_G.TradeSkillDetailScrollFrameScrollBar)
_G.TradeSkillSkillIcon:Size(40)
_G.TradeSkillSkillIcon:Point('TOPLEFT', 2, -3)
for i = 1, _G.MAX_TRADE_SKILL_REAGENTS do
local icon = _G['TradeSkillReagent'..i..'IconTexture']
local count = _G['TradeSkillReagent'..i..'Count']
local nameFrame = _G['TradeSkillReagent'..i..'NameFrame']
S:HandleIcon(icon, true)
icon:SetDrawLayer('OVERLAY')
count:SetDrawLayer('OVERLAY')
nameFrame:SetAlpha(0)
end
_G.TradeSkillHighlight:SetTexture(E.Media.Textures.Highlight)
_G.TradeSkillHighlight:SetAlpha(0.3)
S:HandleButton(_G.TradeSkillCancelButton)
S:HandleButton(_G.TradeSkillCreateButton)
S:HandleButton(_G.TradeSkillCreateAllButton)
S:HandleNextPrevButton(_G.TradeSkillDecrementButton)
_G.TradeSkillInputBox:Size(36, 16)
S:HandleEditBox(_G.TradeSkillInputBox)
S:HandleNextPrevButton(_G.TradeSkillIncrementButton)
S:HandleCloseButton(_G.TradeSkillFrameCloseButton, TradeSkillFrame.backdrop)
_G.TradeSkillSkillIcon:CreateBackdrop()
hooksecurefunc('TradeSkillFrame_SetSelection', function(id)
local _, skillType = GetTradeSkillInfo(id)
if skillType == 'header' then return end
if _G.TradeSkillSkillIcon:GetNormalTexture() then
S:HandleIcon(_G.TradeSkillSkillIcon:GetNormalTexture())
end
local skillLink = GetTradeSkillItemLink(id)
local r, g, b
if skillLink then
local _, _, quality = GetItemInfo(skillLink)
if quality and quality > 1 then
r, g, b = GetItemQualityColor(quality)
_G.TradeSkillSkillIcon.backdrop:SetBackdropBorderColor(r, g, b)
_G.TradeSkillSkillName:SetTextColor(r, g, b)
else
_G.TradeSkillSkillIcon.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
_G.TradeSkillSkillName:SetTextColor(1, 1, 1)
end
end
for i = 1, GetTradeSkillNumReagents(id) do
local _, _, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(id, i)
local reagentLink = GetTradeSkillReagentItemLink(id, i)
if reagentLink then
local icon = _G['TradeSkillReagent'..i..'IconTexture']
local _, _, quality = GetItemInfo(reagentLink)
if quality and quality > 1 then
local name = _G['TradeSkillReagent'..i..'Name']
r, g, b = GetItemQualityColor(quality)
icon.backdrop:SetBackdropBorderColor(r, g, b)
if playerReagentCount < reagentCount then
name:SetTextColor(0.5, 0.5, 0.5)
else
name:SetTextColor(r, g, b)
end
else
icon.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end
end
end)
end
S:AddCallbackForAddon('Blizzard_TradeSkillUI')