|
|
|
|
local E, L, V, P, G = unpack(ElvUI)
|
|
|
|
|
local S = E:GetModule('Skins')
|
|
|
|
|
|
|
|
|
|
local _G = _G
|
|
|
|
|
local gsub, next = gsub, next
|
|
|
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
|
|
|
|
|
|
local GossipTextColors = {
|
|
|
|
|
['000000'] = 'ffffff',
|
|
|
|
|
['414141'] = '7b8489',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local function Gossip_SetTextColor(text, r, g, b)
|
|
|
|
|
if r ~= 1 or g ~= 1 or b ~= 1 then
|
|
|
|
|
text:SetTextColor(1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function Gossip_ReplaceColor(color)
|
|
|
|
|
return '|cFF' .. (GossipTextColors[color] or color)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function Gossip_SetFormattedText(button, textFormat, text, skip)
|
|
|
|
|
if skip or not text or text == '' then return end
|
|
|
|
|
|
|
|
|
|
local colorText, colorCount = gsub(textFormat, '|c[fF][fF](%x%x%x%x%x%x)', Gossip_ReplaceColor)
|
|
|
|
|
if colorCount > 0 then
|
|
|
|
|
button:SetFormattedText(colorText, text, true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function Gossip_SetText(button, text)
|
|
|
|
|
if not text or text == '' then return end
|
|
|
|
|
|
|
|
|
|
local startText = text
|
|
|
|
|
|
|
|
|
|
local iconText, iconCount = gsub(text, ':32:32:0:0', ':32:32:0:0:64:64:5:59:5:59')
|
|
|
|
|
if iconCount > 0 then text = iconText end
|
|
|
|
|
|
|
|
|
|
local colorText, colorCount = gsub(text, '|c[fF][fF](%x%x%x%x%x%x)', Gossip_ReplaceColor)
|
|
|
|
|
if colorCount > 0 then text = colorText end
|
|
|
|
|
|
|
|
|
|
if startText ~= text then
|
|
|
|
|
button:SetFormattedText('%s', text, true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function ItemTextPage_SetTextColor(pageText, headerType, r, g, b)
|
|
|
|
|
if r ~= 1 or g ~= 1 or b ~= 1 then
|
|
|
|
|
pageText:SetTextColor(headerType, 1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function GreetingPanel_Update(frame)
|
|
|
|
|
for _, button in next, { frame.ScrollTarget:GetChildren() } do
|
|
|
|
|
if not button.IsSkinned then
|
|
|
|
|
if button.GreetingText then
|
|
|
|
|
button.GreetingText:SetTextColor(1, 1, 1)
|
|
|
|
|
hooksecurefunc(button.GreetingText, 'SetTextColor', Gossip_SetTextColor)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local fontString = button.GetFontString and button:GetFontString()
|
|
|
|
|
if fontString then
|
|
|
|
|
fontString:SetTextColor(1, 1, 1)
|
|
|
|
|
hooksecurefunc(fontString, 'SetTextColor', Gossip_SetTextColor)
|
|
|
|
|
|
|
|
|
|
Gossip_SetText(button, button:GetText())
|
|
|
|
|
hooksecurefunc(button, 'SetText', Gossip_SetText)
|
|
|
|
|
hooksecurefunc(button, 'SetFormattedText', Gossip_SetFormattedText)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
button.IsSkinned = true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function GossipFrame_SetAtlas(frame)
|
|
|
|
|
frame:Height(frame:GetHeight() - 2)
|
|
|
|
|
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:HandleTrimScrollBar(_G.ItemTextScrollFrame.ScrollBar)
|
|
|
|
|
S:HandleTrimScrollBar(_G.GossipFrame.GreetingPanel.ScrollBar)
|
|
|
|
|
S:HandleButton(_G.GossipFrame.GreetingPanel.GoodbyeButton, true)
|
|
|
|
|
S:HandleCloseButton(_G.ItemTextFrameCloseButton)
|
|
|
|
|
|
|
|
|
|
S:HandleNextPrevButton(_G.ItemTextNextPageButton)
|
|
|
|
|
S:HandleNextPrevButton(_G.ItemTextPrevPageButton)
|
|
|
|
|
|
|
|
|
|
for i = 1, 4 do
|
|
|
|
|
local notch = GossipFrame.FriendshipStatusBar['Notch'..i]
|
|
|
|
|
if notch then
|
|
|
|
|
notch:SetColorTexture(0, 0, 0)
|
|
|
|
|
notch:SetSize(E.mult, 16)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if E.private.skins.parchmentRemoverEnable then
|
|
|
|
|
_G.ItemTextFrame:StripTextures(true)
|
|
|
|
|
_G.ItemTextFrame:SetTemplate('Transparent')
|
|
|
|
|
_G.ItemTextScrollFrame:StripTextures()
|
|
|
|
|
|
|
|
|
|
_G.GossipFrameInset:Hide()
|
|
|
|
|
_G.QuestFont:SetTextColor(1, 1, 1)
|
|
|
|
|
|
|
|
|
|
_G.ItemTextPageText:SetTextColor('P', 1, 1, 1)
|
|
|
|
|
hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', ItemTextPage_SetTextColor)
|
|
|
|
|
hooksecurefunc(GossipFrame.GreetingPanel.ScrollBox, 'Update', GreetingPanel_Update)
|
|
|
|
|
|
|
|
|
|
if GossipFrame.Background then
|
|
|
|
|
GossipFrame.Background:Hide()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
local pageBG = _G.ItemTextFramePageBg:GetTexture()
|
|
|
|
|
_G.ItemTextFrame:StripTextures()
|
|
|
|
|
_G.ItemTextFrame:SetTemplate('Transparent')
|
|
|
|
|
_G.ItemTextScrollFrame:StripTextures()
|
|
|
|
|
_G.ItemTextScrollFrame:CreateBackdrop('Transparent')
|
|
|
|
|
|
|
|
|
|
_G.ItemTextFramePageBg:SetTexture(pageBG)
|
|
|
|
|
_G.ItemTextFramePageBg:SetDrawLayer('BACKGROUND', 1)
|
|
|
|
|
_G.ItemTextFramePageBg:SetInside(_G.ItemTextScrollFrame.backdrop)
|
|
|
|
|
|
|
|
|
|
if GossipFrame.Background then
|
|
|
|
|
GossipFrame.Background:CreateBackdrop('Transparent')
|
|
|
|
|
|
|
|
|
|
hooksecurefunc(GossipFrame.Background, 'SetAtlas', GossipFrame_SetAtlas)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
S:AddCallback('GossipFrame')
|