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.
120 lines
3.8 KiB
120 lines
3.8 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local next = next
|
|
local gsub = gsub
|
|
local select = select
|
|
local strmatch = strmatch
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
local function ReplaceGossipFormat(button, textFormat, text)
|
|
local newFormat, count = gsub(textFormat, '000000', 'ffffff')
|
|
if count > 0 then
|
|
button:SetFormattedText(newFormat, text)
|
|
end
|
|
end
|
|
|
|
local ReplacedGossipColor = {
|
|
['000000'] = 'ffffff',
|
|
['414141'] = '7b8489',
|
|
}
|
|
|
|
local function ReplaceGossipText(button, text)
|
|
if text and text ~= '' then
|
|
local newText, count = gsub(text, ':32:32:0:0', ':32:32:0:0:64:64:5:59:5:59')
|
|
if count > 0 then
|
|
text = newText
|
|
button:SetFormattedText('%s', text)
|
|
end
|
|
|
|
local colorStr, rawText = strmatch(text, '|c[fF][fF](%x%x%x%x%x%x)(.-)|r')
|
|
colorStr = ReplacedGossipColor[colorStr]
|
|
if colorStr and rawText then
|
|
button:SetFormattedText('|cff%s%s|r', colorStr, rawText)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function createParchment(frame)
|
|
local tex = frame:CreateTexture(nil, 'ARTWORK')
|
|
tex:SetTexture([[Interface\QuestFrame\QuestBG]])
|
|
tex:SetTexCoord(0, 0.586, 0.02, 0.655)
|
|
return tex
|
|
end
|
|
|
|
function S:GossipFrame()
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.gossip) then return end
|
|
|
|
local GossipFrame = _G.GossipFrame
|
|
S:HandlePortraitFrame(GossipFrame, true)
|
|
S:HandleScrollBar(_G.ItemTextScrollFrameScrollBar)
|
|
S:HandleCloseButton(_G.ItemTextCloseButton)
|
|
|
|
local GreetingPanel = _G.GossipFrame.GreetingPanel
|
|
S:HandleTrimScrollBar(GreetingPanel.ScrollBar)
|
|
S:HandleButton(GreetingPanel.GoodbyeButton, true)
|
|
|
|
GreetingPanel:StripTextures()
|
|
GreetingPanel:CreateBackdrop('Transparent')
|
|
GreetingPanel.backdrop:Point('TOPLEFT', GreetingPanel.ScrollBox, 0, 0)
|
|
GreetingPanel.backdrop:Point('BOTTOMRIGHT', GreetingPanel.ScrollBox, 0, 80)
|
|
|
|
local ItemTextFrame = _G.ItemTextFrame
|
|
ItemTextFrame:StripTextures()
|
|
ItemTextFrame:CreateBackdrop('Transparent')
|
|
ItemTextFrame.backdrop:ClearAllPoints()
|
|
ItemTextFrame.backdrop:Point('TOPLEFT', ItemTextFrame, 5, -10)
|
|
ItemTextFrame.backdrop:Point('BOTTOMRIGHT', ItemTextFrame, -25, 45)
|
|
|
|
local ItemTextScrollFrame = _G.ItemTextScrollFrame
|
|
ItemTextScrollFrame:DisableDrawLayer('ARTWORK')
|
|
ItemTextScrollFrame:DisableDrawLayer('BACKGROUND')
|
|
|
|
GossipFrame.backdrop:ClearAllPoints()
|
|
GossipFrame.backdrop:Point('TOPLEFT', GreetingPanel.ScrollBox, -10, 70)
|
|
GossipFrame.backdrop:Point('BOTTOMRIGHT', GreetingPanel.ScrollBox, 40, 40)
|
|
|
|
S:HandleNextPrevButton(_G.ItemTextNextPageButton)
|
|
S:HandleNextPrevButton(_G.ItemTextPrevPageButton)
|
|
|
|
if not E.private.skins.parchmentRemoverEnable then
|
|
local spellTex = createParchment(GreetingPanel)
|
|
spellTex:SetInside(GreetingPanel.backdrop)
|
|
GreetingPanel.spellTex = spellTex
|
|
|
|
local itemTex = createParchment(ItemTextFrame)
|
|
itemTex:SetInside(ItemTextScrollFrame, -5)
|
|
ItemTextFrame.itemTex = itemTex
|
|
else
|
|
_G.QuestFont:SetTextColor(1, 1, 1)
|
|
_G.ItemTextPageText:SetTextColor('P', 1, 1, 1)
|
|
|
|
hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', function(pageText, headerType, r, g, b)
|
|
if r ~= 1 or g ~= 1 or b ~= 1 then
|
|
pageText:SetTextColor(headerType, 1, 1, 1)
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc(GreetingPanel.ScrollBox, 'Update', function(frame)
|
|
for _, button in next, { frame.ScrollTarget:GetChildren() } do
|
|
if not button.IsSkinned then
|
|
local buttonText = select(3, button:GetRegions())
|
|
if buttonText and buttonText:IsObjectType('FontString') then
|
|
ReplaceGossipText(button, button:GetText())
|
|
hooksecurefunc(button, 'SetText', ReplaceGossipText)
|
|
hooksecurefunc(button, 'SetFormattedText', ReplaceGossipFormat)
|
|
end
|
|
|
|
button.IsSkinned = true
|
|
end
|
|
end
|
|
end)
|
|
|
|
if GossipFrame.Background then
|
|
GossipFrame.Background:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
S:AddCallback('GossipFrame')
|
|
|