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.
151 lines
4.0 KiB
151 lines
4.0 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local pairs = pairs
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
local trackers = {
|
|
_G.ScenarioObjectiveTracker,
|
|
_G.UIWidgetObjectiveTracker,
|
|
_G.CampaignQuestObjectiveTracker,
|
|
_G.QuestObjectiveTracker,
|
|
_G.AdventureObjectiveTracker,
|
|
_G.AchievementObjectiveTracker,
|
|
_G.MonthlyActivitiesObjectiveTracker,
|
|
_G.ProfessionsRecipeTracker,
|
|
_G.BonusObjectiveTracker,
|
|
_G.WorldQuestObjectiveTracker,
|
|
}
|
|
|
|
local function SkinOjectiveTrackerHeaders(header)
|
|
if header and header.Background then
|
|
header.Background:SetAtlas(nil)
|
|
end
|
|
end
|
|
|
|
local function ReskinQuestIcon(button)
|
|
if not button then return end
|
|
|
|
if not button.IsSkinned then
|
|
button:SetSize(24, 24)
|
|
button:SetNormalTexture(E.ClearTexture)
|
|
button:SetPushedTexture(E.ClearTexture)
|
|
button:GetHighlightTexture():SetColorTexture(1, 1, 1, .25)
|
|
|
|
local icon = button.icon or button.Icon
|
|
if icon then
|
|
S:HandleIcon(icon, true)
|
|
icon:SetInside()
|
|
end
|
|
|
|
button.IsSkinned = true
|
|
end
|
|
|
|
if button.backdrop then
|
|
button.backdrop:SetFrameLevel(0)
|
|
end
|
|
end
|
|
|
|
local function HandleQuestIcons(_, block)
|
|
ReskinQuestIcon(block.ItemButton)
|
|
ReskinQuestIcon(block.itemButton)
|
|
|
|
local check = block.currentLine and block.currentLine.Check
|
|
if check and not check.IsSkinned then
|
|
check:SetAtlas('checkmark-minimal')
|
|
check:SetDesaturated(true)
|
|
check:SetVertexColor(0, 1, 0)
|
|
|
|
check.styled = true
|
|
end
|
|
end
|
|
|
|
local function ReskinBarTemplate(bar)
|
|
if bar.backdrop then return end
|
|
|
|
bar:StripTextures()
|
|
bar:CreateBackdrop('Transparent')
|
|
bar:SetStatusBarTexture(E.media.normTex)
|
|
E:RegisterStatusBar(bar)
|
|
end
|
|
|
|
local function HandleProgressBar(tracker, key)
|
|
local progressBar = tracker.usedProgressBars[key]
|
|
local bar = progressBar and progressBar.Bar
|
|
|
|
if bar then
|
|
ReskinBarTemplate(bar)
|
|
|
|
local _, maxValue = bar:GetMinMaxValues()
|
|
S:StatusBarColorGradient(bar, bar:GetValue(), maxValue)
|
|
|
|
local icon = bar.Icon
|
|
if icon and icon:IsShown() and not icon.backdrop then
|
|
icon:SetMask('') -- This needs to be before S:HandleIcon
|
|
S:HandleIcon(icon, true)
|
|
|
|
icon:ClearAllPoints()
|
|
icon:Point('LEFT', bar, 'RIGHT', E.PixelMode and 3 or 7, 0)
|
|
end
|
|
|
|
local label = bar.Label
|
|
if label then
|
|
label:ClearAllPoints()
|
|
label:Point('CENTER', bar)
|
|
label:FontTemplate(nil, E.db.general.fontSize, E.db.general.fontStyle)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function HandleTimers(tracker, key)
|
|
local timerBar = tracker.usedTimerBars[key]
|
|
local bar = timerBar and timerBar.Bar
|
|
|
|
if bar then
|
|
ReskinBarTemplate(bar)
|
|
end
|
|
end
|
|
|
|
local function SetCollapsed(header, collapsed)
|
|
local MinimizeButton = header.MinimizeButton
|
|
local normalTexture = MinimizeButton:GetNormalTexture()
|
|
local pushedTexture = MinimizeButton:GetPushedTexture()
|
|
|
|
if collapsed then
|
|
normalTexture:SetAtlas('UI-QuestTrackerButton-Secondary-Expand', true)
|
|
pushedTexture:SetAtlas('UI-QuestTrackerButton-Secondary-Expand-Pressed', true)
|
|
else
|
|
normalTexture:SetAtlas('UI-QuestTrackerButton-Secondary-Collapse', true)
|
|
pushedTexture:SetAtlas('UI-QuestTrackerButton-Secondary-Collapse-Pressed', true)
|
|
end
|
|
end
|
|
|
|
function S:Blizzard_ObjectiveTracker()
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.objectiveTracker) then return end
|
|
|
|
local TrackerFrame = _G.ObjectiveTrackerFrame
|
|
local TrackerHeader = TrackerFrame and TrackerFrame.Header
|
|
if TrackerHeader then
|
|
SkinOjectiveTrackerHeaders(TrackerHeader)
|
|
|
|
local MinimizeButton = TrackerHeader.MinimizeButton
|
|
if MinimizeButton then
|
|
MinimizeButton:Size(16)
|
|
MinimizeButton:SetHighlightAtlas('UI-QuestTrackerButton-Yellow-Highlight', 'ADD')
|
|
|
|
SetCollapsed(TrackerHeader, TrackerFrame.isCollapsed)
|
|
hooksecurefunc(TrackerHeader, 'SetCollapsed', SetCollapsed)
|
|
end
|
|
end
|
|
|
|
for _, tracker in pairs(trackers) do
|
|
SkinOjectiveTrackerHeaders(tracker.Header)
|
|
|
|
hooksecurefunc(tracker, 'AddBlock', HandleQuestIcons)
|
|
hooksecurefunc(tracker, 'GetProgressBar', HandleProgressBar)
|
|
hooksecurefunc(tracker, 'GetTimerBar', HandleTimers)
|
|
end
|
|
end
|
|
|
|
S:AddCallbackForAddon('Blizzard_ObjectiveTracker')
|
|
|