|
|
|
|
local AS = unpack(AddOnSkins)
|
|
|
|
|
|
|
|
|
|
-- Cache global variables
|
|
|
|
|
--Lua functions
|
|
|
|
|
local _G = _G
|
|
|
|
|
local pairs, select, unpack = pairs, select, unpack
|
|
|
|
|
--WoW API / Variables
|
|
|
|
|
local hooksecurefunc = hooksecurefunc
|
|
|
|
|
-- GLOBALS:
|
|
|
|
|
|
|
|
|
|
function AS:SkinAchievement(Achievement, BiggerIcon)
|
|
|
|
|
if Achievement.Backdrop then return end
|
|
|
|
|
AS:SkinBackdropFrame(Achievement, nil, nil, true)
|
|
|
|
|
AS:SetInside(Achievement.Backdrop, Achievement)
|
|
|
|
|
|
|
|
|
|
AS:SetTemplate(Achievement.icon)
|
|
|
|
|
local Size = BiggerIcon and 56 or 38
|
|
|
|
|
Achievement.icon:SetSize(Size, Size)
|
|
|
|
|
Achievement.icon:ClearAllPoints()
|
|
|
|
|
Achievement.icon:SetPoint("LEFT", 6, 0)
|
|
|
|
|
|
|
|
|
|
AS:Kill(Achievement.icon.bling)
|
|
|
|
|
AS:Kill(Achievement.icon.frame)
|
|
|
|
|
|
|
|
|
|
AS:SkinTexture(Achievement.icon.texture)
|
|
|
|
|
AS:SetInside(Achievement.icon.texture)
|
|
|
|
|
|
|
|
|
|
if Achievement.label then
|
|
|
|
|
Achievement.label:SetTextColor(1, .8, .1)
|
|
|
|
|
hooksecurefunc(Achievement.label, 'SetVertexColor', function(s, r, g, b) if r == 1 and g == 1 and b == 1 then s:SetTextColor(1, .8, .1) end end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if Achievement.highlight then
|
|
|
|
|
AS:StripTextures(Achievement.highlight, true)
|
|
|
|
|
Achievement:HookScript('OnEnter', function(s) s.Backdrop:SetBackdropBorderColor(1, .8, .1) end)
|
|
|
|
|
Achievement:HookScript('OnLeave', function(s) s.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if Achievement.description then
|
|
|
|
|
Achievement.description:SetTextColor(1, 1, 1)
|
|
|
|
|
hooksecurefunc(Achievement.description, 'SetTextColor', function(s, r, g, b) if r == 0 and g == 0 and b == 0 then s:SetTextColor(1, 1, 1) end end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if Achievement.hiddenDescription then
|
|
|
|
|
Achievement.hiddenDescription:SetTextColor(1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if Achievement.tracked then
|
|
|
|
|
AS:SkinCheckBox(Achievement.tracked)
|
|
|
|
|
Achievement.tracked:GetRegions():SetTextColor(1, 1, 1)
|
|
|
|
|
Achievement.tracked:ClearAllPoints()
|
|
|
|
|
Achievement.tracked:SetPoint('TOPLEFT', Achievement.icon, 'BOTTOMLEFT', 0, 0)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function AS:SkinAchievementStatusBar(StatusBar)
|
|
|
|
|
AS:SkinStatusBar(StatusBar)
|
|
|
|
|
|
|
|
|
|
local StatusBarName = StatusBar:GetName()
|
|
|
|
|
local title, label, text = StatusBar.title or _G[StatusBarName..'Title'], StatusBar.label or _G[StatusBarName..'Label'], StatusBar.text or _G[StatusBarName..'Text']
|
|
|
|
|
|
|
|
|
|
if title then
|
|
|
|
|
title:SetPoint("LEFT", 4, 0)
|
|
|
|
|
title:SetTextColor(1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if label then
|
|
|
|
|
label:SetPoint("LEFT", 4, 0)
|
|
|
|
|
label:SetTextColor(1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if text then
|
|
|
|
|
if not (title and label) then
|
|
|
|
|
text:SetPoint("CENTER", StatusBar, "CENTER", 0, -1)
|
|
|
|
|
else
|
|
|
|
|
text:SetPoint("RIGHT", -4, 0)
|
|
|
|
|
end
|
|
|
|
|
text:SetTextColor(1, 1, 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function AS:Blizzard_AchievementUI(event, addon)
|
|
|
|
|
if addon ~= 'Blizzard_AchievementUI' then return end
|
|
|
|
|
|
|
|
|
|
local TooltipBorders = { _G.AchievementFrameStats, _G.AchievementFrameSummary, _G.AchievementFrameAchievements, _G.AchievementFrameComparison }
|
|
|
|
|
|
|
|
|
|
for _, Frame in pairs(TooltipBorders) do
|
|
|
|
|
for i = 1, Frame:GetNumChildren() do
|
|
|
|
|
local Child = select(i, Frame:GetChildren())
|
|
|
|
|
if Child and Child:IsObjectType('Frame') and not Child:GetName() then
|
|
|
|
|
Child:SetBackdrop(nil)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
AS:SkinBackdropFrame(_G.AchievementFrame, nil, nil, true)
|
|
|
|
|
_G.AchievementFrame.Backdrop:SetPoint('TOPLEFT', 0, 3)
|
|
|
|
|
_G.AchievementFrame.Backdrop:SetPoint('BOTTOMRIGHT', 0, 0)
|
|
|
|
|
|
|
|
|
|
AS:SkinCloseButton(_G.AchievementFrameCloseButton)
|
|
|
|
|
_G.AchievementFrameCloseButton:SetPoint("TOPRIGHT", _G.AchievementFrame, "TOPRIGHT", 5, 6)
|
|
|
|
|
|
|
|
|
|
AS:SkinBackdropFrame(_G.AchievementFrameCategories, nil, nil, true)
|
|
|
|
|
_G.AchievementFrameCategories.Backdrop:SetPoint('TOPLEFT', _G.AchievementFrameCategories, 'TOPLEFT', 2, -2)
|
|
|
|
|
_G.AchievementFrameCategories.Backdrop:SetPoint('BOTTOMRIGHT', _G.AchievementFrameCategories, 'BOTTOMRIGHT', -2, 2)
|
|
|
|
|
_G.AchievementFrameCategories.SetBackdrop = AS.Noop
|
|
|
|
|
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameHeader, true)
|
|
|
|
|
AS:SkinBackdropFrame(_G.AchievementFrameSummary, nil, nil, true)
|
|
|
|
|
_G.AchievementFrameSummary.Backdrop:SetPoint('TOPLEFT', 1, -3)
|
|
|
|
|
_G.AchievementFrameSummary.Backdrop:SetPoint('BOTTOMRIGHT', -1, 2)
|
|
|
|
|
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameSummaryCategoriesHeader, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameSummaryAchievementsHeader, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameAchievements, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameComparison, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameStatsBG, true)
|
|
|
|
|
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameComparisonSummaryPlayer, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameComparisonSummaryFriend, true)
|
|
|
|
|
AS:StripTextures(_G.AchievementFrameComparisonHeader, true)
|
|
|
|
|
|
|
|
|
|
AS:SkinDropDownBox(_G.AchievementFrameFilterDropDown, 130)
|
|
|
|
|
_G.AchievementFrameFilterDropDownText:SetJustifyH('RIGHT')
|
|
|
|
|
_G.AchievementFrameFilterDropDownText:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrameFilterDropDownText:SetPoint('RIGHT', _G.AchievementFrameFilterDropDown, 'RIGHT', -34, 0)
|
|
|
|
|
_G.AchievementFrameFilterDropDown:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrameFilterDropDown:SetPoint("TOPLEFT", _G.AchievementFrame, "TOPLEFT", 98, 7)
|
|
|
|
|
_G.AchievementFrameFilterDropDownButton:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrameFilterDropDownButton:SetPoint("TOPRIGHT", _G.AchievementFrameFilterDropDown, "TOPRIGHT", -14, -8)
|
|
|
|
|
_G.AchievementFrameFilterDropDownButton.SetWidth = AS.Noop
|
|
|
|
|
|
|
|
|
|
_G.AchievementFrameComparisonHeader:SetPoint("BOTTOMRIGHT", _G.AchievementFrameComparison, "TOPRIGHT", 45, -20)
|
|
|
|
|
|
|
|
|
|
_G.AchievementFrameHeaderTitle:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrameHeaderTitle:SetPoint("TOPLEFT", _G.AchievementFrame, "TOP", -200, -3)
|
|
|
|
|
_G.AchievementFrameHeaderPoints:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrameHeaderPoints:SetPoint("LEFT", _G.AchievementFrameHeaderTitle, "RIGHT", 2, 0)
|
|
|
|
|
AS:SkinEditBox(_G.AchievementFrame.searchBox)
|
|
|
|
|
_G.AchievementFrame.searchBox:SetHeight(16)
|
|
|
|
|
_G.AchievementFrame.searchBox:ClearAllPoints()
|
|
|
|
|
_G.AchievementFrame.searchBox:SetPoint("LEFT", _G.AchievementFrameHeaderPoints, "RIGHT", 50, 0)
|
|
|
|
|
|
|
|
|
|
AS:SkinAchievementStatusBar(_G.AchievementFrameSummaryCategoriesStatusBar)
|
|
|
|
|
_G.AchievementFrameSummaryCategoriesStatusBarTitle:SetTextColor(1, 1, 1)
|
|
|
|
|
|
|
|
|
|
AS:SkinAchievementStatusBar(_G.AchievementFrameComparisonSummaryPlayerStatusBar)
|
|
|
|
|
AS:SkinAchievementStatusBar(_G.AchievementFrameComparisonSummaryFriendStatusBar)
|
|
|
|
|
|
|
|
|
|
AS:SkinBackdropFrame(_G.AchievementFrameAchievementsContainer, nil, nil, true)
|
|
|
|
|
_G.AchievementFrameAchievementsContainer.Backdrop:SetPoint('TOPLEFT', _G.AchievementFrameAchievementsContainer, 'TOPLEFT', -2, 1)
|
|
|
|
|
_G.AchievementFrameAchievementsContainer.Backdrop:SetPoint('BOTTOMRIGHT', _G.AchievementFrameAchievementsContainer, 'BOTTOMRIGHT', 0, -3)
|
|
|
|
|
|
|
|
|
|
AS:SkinBackdropFrame(_G.AchievementFrameComparisonContainer, nil, nil, true)
|
|
|
|
|
_G.AchievementFrameComparisonContainer.Backdrop:SetPoint('TOPLEFT', _G.AchievementFrameComparisonContainer, 'TOPLEFT', -2, 1)
|
|
|
|
|
_G.AchievementFrameComparisonContainer.Backdrop:SetPoint('BOTTOMRIGHT', _G.AchievementFrameComparisonContainer, 'BOTTOMRIGHT', 0, -3)
|
|
|
|
|
|
|
|
|
|
AS:SkinScrollBar(_G.AchievementFrameCategoriesContainerScrollBar)
|
|
|
|
|
AS:SkinScrollBar(_G.AchievementFrameAchievementsContainerScrollBar)
|
|
|
|
|
AS:SkinScrollBar(_G.AchievementFrameStatsContainerScrollBar)
|
|
|
|
|
AS:SkinScrollBar(_G.AchievementFrameComparisonContainerScrollBar)
|
|
|
|
|
AS:SkinScrollBar(_G.AchievementFrameComparisonStatsContainerScrollBar)
|
|
|
|
|
|
|
|
|
|
for i = 1, 3 do
|
|
|
|
|
AS:SkinTab(_G["AchievementFrameTab"..i])
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for i = 1, 12 do
|
|
|
|
|
local StatusBar = "AchievementFrameSummaryCategoriesCategory"..i
|
|
|
|
|
AS:SkinAchievementStatusBar(_G[StatusBar])
|
|
|
|
|
|
|
|
|
|
AS:StripTextures(_G[StatusBar.."ButtonHighlight"])
|
|
|
|
|
_G[StatusBar.."Button"]:HookScript('OnEnter', function(self) _G[StatusBar].Backdrop:SetBackdropBorderColor(1, .8, .1) end)
|
|
|
|
|
_G[StatusBar.."Button"]:HookScript('OnLeave', function(self) _G[StatusBar].Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for _, Achievement in pairs(_G.AchievementFrameAchievementsContainer.buttons) do
|
|
|
|
|
AS:SkinAchievement(Achievement, true)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for _, Stats in pairs(_G.AchievementFrameStatsContainer.buttons) do
|
|
|
|
|
AS:StripTextures(Stats)
|
|
|
|
|
Stats.background:SetTexture([[Interface\AddOns\AddOnSkins\Media\Textures\Highlight]])
|
|
|
|
|
Stats.background:SetTexCoord(0, 1, 0, 1)
|
|
|
|
|
Stats.background.SetTexCoord = AS.Noop
|
|
|
|
|
Stats.background:SetAlpha(.3)
|
|
|
|
|
Stats.background.SetAlpha = AS.Noop
|
|
|
|
|
hooksecurefunc(Stats.background, 'SetBlendMode', function(self, blend) if blend == 'BLEND' then self:Hide() else self:Show() end end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for _, Achievement in pairs(_G.AchievementFrameComparisonContainer.buttons) do
|
|
|
|
|
AS:SkinAchievement(Achievement.player)
|
|
|
|
|
AS:SkinAchievement(Achievement.friend)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function setAchievementColor(frame)
|
|
|
|
|
if frame and frame.Backdrop then
|
|
|
|
|
if frame.accountWide then
|
|
|
|
|
frame.Backdrop:SetBackdropColor(.1, .2, .3)
|
|
|
|
|
else
|
|
|
|
|
frame.Backdrop:SetBackdropColor(unpack(AS.BackdropColor))
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
hooksecurefunc('AchievementButton_DisplayAchievement', setAchievementColor)
|
|
|
|
|
|
|
|
|
|
hooksecurefunc('AchievementFrameSummary_UpdateAchievements', function()
|
|
|
|
|
for _, Achievement in pairs(_G.AchievementFrameSummaryAchievements.buttons) do
|
|
|
|
|
AS:SkinAchievement(Achievement)
|
|
|
|
|
setAchievementColor(Achievement)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
hooksecurefunc('AchievementFrameCategories_Update', function()
|
|
|
|
|
for _, Category in pairs(_G.AchievementFrameCategoriesContainer.buttons) do
|
|
|
|
|
if not Category.isSkinned then
|
|
|
|
|
AS:SkinFrame(Category)
|
|
|
|
|
Category:HookScript('OnEnter', function(s) s:SetBackdropColor(unpack(AS.Color)) end)
|
|
|
|
|
Category:HookScript('OnLeave', function(s)
|
|
|
|
|
if s.isSelected then
|
|
|
|
|
s:SetBackdropColor(1, .82, 0)
|
|
|
|
|
else
|
|
|
|
|
s:SetBackdropColor(unpack(AS.BackdropColor))
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
hooksecurefunc(Category, 'LockHighlight', function(self) self:SetBackdropColor(1, .82, 0) end)
|
|
|
|
|
hooksecurefunc(Category, 'UnlockHighlight', function(self) self:SetBackdropColor(unpack(AS.BackdropColor)) end)
|
|
|
|
|
Category.label:SetTextColor(1, 1, 1)
|
|
|
|
|
Category.isSkinned = true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
hooksecurefunc('AchievementButton_GetProgressBar', function(index)
|
|
|
|
|
local frame = _G['AchievementFrameProgressBar'..index]
|
|
|
|
|
if frame and not frame.Backdrop then
|
|
|
|
|
AS:SkinStatusBar(frame)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
hooksecurefunc('AchievementObjectives_DisplayCriteria', function(objectivesFrame, id)
|
|
|
|
|
local numCriteria = GetAchievementNumCriteria(id)
|
|
|
|
|
local textStrings, metas, criteria, object = 0, 0
|
|
|
|
|
for i = 1, numCriteria do
|
|
|
|
|
local _, criteriaType, completed, _, _, _, _, assetID = GetAchievementCriteriaInfo(id, i)
|
|
|
|
|
|
|
|
|
|
if ( criteriaType == _G.CRITERIA_TYPE_ACHIEVEMENT and assetID ) then
|
|
|
|
|
metas = metas + 1
|
|
|
|
|
criteria, object = AchievementButton_GetMeta(metas), 'label'
|
|
|
|
|
elseif criteriaType ~= 1 then
|
|
|
|
|
textStrings = textStrings + 1
|
|
|
|
|
criteria, object = AchievementButton_GetCriteria(textStrings), 'name'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local r, g, b, x, y = .6, .6, .6, 1, -1
|
|
|
|
|
if ( objectivesFrame.completed and completed ) then
|
|
|
|
|
r, g, b, x, y = 1, 1, 1, 0, 0
|
|
|
|
|
elseif ( completed ) then
|
|
|
|
|
r, g, b, x, y = 0, 1, 0, 1, -1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
criteria[object]:SetTextColor(r, g, b)
|
|
|
|
|
criteria[object]:SetShadowOffset(x, y)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
AS:UnregisterSkinEvent(addon, event)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
AS:RegisterSkin("Blizzard_AchievementUI", AS.Blizzard_AchievementUI, 'ADDON_LOADED')
|