initial commit

This commit is contained in:
Gitea
2020-11-13 14:27:50 -05:00
commit e2015fd9bb
581 changed files with 101308 additions and 0 deletions

View File

@@ -0,0 +1,503 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select, unpack = pairs, select, unpack
local hooksecurefunc = hooksecurefunc
local GetAchievementCriteriaInfo = GetAchievementCriteriaInfo
local GetAchievementNumCriteria = GetAchievementNumCriteria
local GetNumFilteredAchievements = GetNumFilteredAchievements
local IsAddOnLoaded = IsAddOnLoaded
local CreateFrame = CreateFrame
local blueAchievement = { r = 0.1, g = 0.2, b = 0.3 }
local function blueBackdrop(self)
self:SetBackdropColor(blueAchievement.r, blueAchievement.g, blueAchievement.b)
end
local function skinAch(Achievement, BiggerIcon)
if Achievement.isSkinned then return; end
Achievement:SetFrameLevel(Achievement:GetFrameLevel() + 2)
Achievement:StripTextures(true)
Achievement:CreateBackdrop(nil, true)
Achievement.backdrop:SetInside()
Achievement.icon:CreateBackdrop()
Achievement.icon.backdrop:SetAllPoints()
Achievement.icon:Size(BiggerIcon and 54 or 36, BiggerIcon and 54 or 36)
Achievement.icon:ClearAllPoints()
Achievement.icon:Point('TOPLEFT', 8, -8)
Achievement.icon.bling:Kill()
Achievement.icon.frame:Kill()
Achievement.icon.texture:SetTexCoord(unpack(E.TexCoords))
Achievement.icon.texture:SetInside()
if Achievement.highlight then
Achievement.highlight:StripTextures()
Achievement:HookScript('OnEnter', function(self) self.backdrop:SetBackdropBorderColor(1, 1, 0) end)
Achievement:HookScript('OnLeave', function(self) self.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor)) end)
end
if Achievement.label then
Achievement.label:SetTextColor(1, 1, 1)
end
if Achievement.description then
Achievement.description:SetTextColor(.6, .6, .6)
hooksecurefunc(Achievement.description, 'SetTextColor', function(_, r, g, b)
if r == 0 and g == 0 and b == 0 then
Achievement.description:SetTextColor(.6, .6, .6)
end
end)
end
if Achievement.hiddenDescription then
Achievement.hiddenDescription:SetTextColor(1, 1, 1)
end
if Achievement.tracked then
Achievement.tracked:GetRegions():SetTextColor(1, 1, 1)
S:HandleCheckBox(Achievement.tracked)
Achievement.tracked:Size(18)
Achievement.tracked:ClearAllPoints()
Achievement.tracked:Point('TOPLEFT', Achievement.icon, 'BOTTOMLEFT', 0, -2)
end
Achievement.isSkinned = true
end
local function SkinStatusBar(bar)
bar:StripTextures()
bar:SetStatusBarTexture(E.media.normTex)
bar:SetStatusBarColor(4/255, 179/255, 30/255)
bar:CreateBackdrop()
E:RegisterStatusBar(bar)
local StatusBarName = bar:GetName()
if _G[StatusBarName..'Title'] then
_G[StatusBarName..'Title']:Point('LEFT', 4, 0)
end
if _G[StatusBarName..'Label'] then
_G[StatusBarName..'Label']:Point('LEFT', 4, 0)
end
if _G[StatusBarName..'Text'] then
_G[StatusBarName..'Text']:Point('RIGHT', -4, 0)
end
end
local function SkinSearchButton(self)
self:StripTextures()
if self.icon then
S:HandleIcon(self.icon)
end
self:CreateBackdrop('Transparent')
self:SetHighlightTexture(E.media.normTex)
local hl = self:GetHighlightTexture()
hl:SetVertexColor(1, 1, 1, 0.3)
hl:Point('TOPLEFT', 1, -1)
hl:Point('BOTTOMRIGHT', -1, 1)
end
local function playerSaturate(self) -- self is Achievement.player
local Achievement = self:GetParent()
local r, g, b = unpack(E.media.bordercolor)
Achievement.player.backdrop.callbackBackdropColor = nil
Achievement.friend.backdrop.callbackBackdropColor = nil
if Achievement.player.accountWide then
r, g, b = blueAchievement.r, blueAchievement.g, blueAchievement.b
Achievement.player.backdrop.callbackBackdropColor = blueBackdrop
Achievement.friend.backdrop.callbackBackdropColor = blueBackdrop
end
Achievement.player.backdrop:SetBackdropColor(r, g, b)
Achievement.friend.backdrop:SetBackdropColor(r, g, b)
end
local function setAchievementColor(frame)
if frame and frame.backdrop then
if frame.accountWide then
frame.backdrop.callbackBackdropColor = blueBackdrop
frame.backdrop:SetBackdropColor(blueAchievement.r, blueAchievement.g, blueAchievement.b)
else
frame.backdrop.callbackBackdropColor = nil
frame.backdrop:SetBackdropColor(unpack(E.media.backdropcolor))
end
end
end
function S:Blizzard_AchievementUI(event)
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.achievement) then return end
if event == 'PLAYER_ENTERING_WORLD' then
hooksecurefunc('HybridScrollFrame_CreateButtons', function(frame, template)
if template == 'AchievementCategoryTemplate' then
for _, button in pairs(frame.buttons) do
if button.isSkinned then return; end
button:StripTextures(true)
button:StyleButton()
button.isSkinned = true
end
end
if template == 'AchievementTemplate' then
for _, Achievement in pairs(frame.buttons) do
skinAch(Achievement, true)
end
end
if template == 'ComparisonTemplate' then
for _, Achievement in pairs(frame.buttons) do
if Achievement.isSkinned then return; end
skinAch(Achievement.player)
skinAch(Achievement.friend)
hooksecurefunc(Achievement.player, 'Saturate', playerSaturate)
end
end
if template == 'StatTemplate' then
for _, Stats in pairs(frame.buttons) do
-- Stats:StripTextures(true)
Stats:StyleButton()
end
end
end)
end
if not IsAddOnLoaded('Blizzard_AchievementUI') then return end
_G.AchievementFrameSummary:StripTextures()
_G.AchievementFrameSummaryBackground:Hide()
_G.AchievementFrameSummary:GetChildren():Hide()
for i = 1, 4 do
select(i, _G.AchievementFrameHeader:GetRegions()):Hide()
end
_G.AchievementFrameHeaderRightDDLInset:SetAlpha(0)
_G.AchievementFrameHeaderLeftDDLInset:SetAlpha(0)
select(2, _G.AchievementFrameAchievements:GetChildren()):Hide()
_G.AchievementFrameAchievementsBackground:Hide()
select(3, _G.AchievementFrameAchievements:GetRegions()):Hide()
_G.AchievementFrameStatsBG:Hide()
_G.AchievementFrameSummaryAchievementsHeaderHeader:Hide()
_G.AchievementFrameSummaryCategoriesHeaderTexture:Hide()
select(3, _G.AchievementFrameStats:GetChildren()):Hide()
select(5, _G.AchievementFrameComparison:GetChildren()):Hide()
_G.AchievementFrameComparisonHeaderBG:Hide()
_G.AchievementFrameComparisonHeaderPortrait:Hide()
_G.AchievementFrameComparisonHeaderPortraitBg:Hide()
_G.AchievementFrameComparisonBackground:Hide()
_G.AchievementFrameComparisonDark:SetAlpha(0)
_G.AchievementFrameComparisonSummaryPlayerBackground:Hide()
_G.AchievementFrameComparisonSummaryFriendBackground:Hide()
local summaries = {_G.AchievementFrameComparisonSummaryPlayer, _G.AchievementFrameComparisonSummaryFriend}
for _, frame in pairs(summaries) do
frame:SetBackdrop()
end
_G.AchievementFrameMetalBorderTopLeft:Hide()
_G.AchievementFrameWoodBorderTopLeft:Hide()
_G.AchievementFrameMetalBorderTopRight:Hide()
_G.AchievementFrameWoodBorderTopRight:Hide()
_G.AchievementFrameMetalBorderBottomRight:Hide()
_G.AchievementFrameWoodBorderBottomRight:Hide()
_G.AchievementFrameMetalBorderBottomLeft:Hide()
_G.AchievementFrameWoodBorderBottomLeft:Hide()
local noname_frames = {
_G.AchievementFrameStats,
_G.AchievementFrameSummary,
_G.AchievementFrameAchievements,
_G.AchievementFrameComparison
}
for _, frame in pairs(noname_frames) do
if frame and frame.GetNumChildren then
for i=1, frame:GetNumChildren() do
local child = select(i, frame:GetChildren())
if child and not child:GetName() then
child:SetBackdrop()
end
end
end
end
local AchievementFrame = _G.AchievementFrame
AchievementFrame:StripTextures()
AchievementFrame:CreateBackdrop('Transparent')
AchievementFrame.backdrop:Point('TOPLEFT', 0, 7)
AchievementFrame.backdrop:Point('BOTTOMRIGHT')
_G.AchievementFrameHeaderTitle:ClearAllPoints()
_G.AchievementFrameHeaderTitle:Point('TOP', AchievementFrame.backdrop, 'TOP', 0, -8)
_G.AchievementFrameHeaderPoints:ClearAllPoints()
_G.AchievementFrameHeaderPoints:Point('CENTER', _G.AchievementFrameHeaderTitle, 'CENTER', 0, 0)
--Backdrops
_G.AchievementFrameCategories:StripTextures()
_G.AchievementFrameCategoriesContainerScrollBarBG:SetAlpha(0)
_G.AchievementFrameCategoriesContainer:CreateBackdrop('Transparent')
_G.AchievementFrameCategoriesContainer.backdrop:Point('TOPLEFT', 0, 4)
_G.AchievementFrameCategoriesContainer.backdrop:Point('BOTTOMRIGHT', -2, -3)
_G.AchievementFrameCategoriesBG:SetAlpha(0)
_G.AchievementFrameWaterMark:SetAlpha(0)
--_G.AchievementFrameCategoriesBG:SetInside(_G.AchievementFrameCategoriesContainer.backdrop)
_G.AchievementFrameAchievementsContainer:CreateBackdrop('Transparent')
_G.AchievementFrameAchievementsContainer.backdrop:Point('TOPLEFT', -2, 2)
_G.AchievementFrameAchievementsContainer.backdrop:Point('BOTTOMRIGHT', -2, -3)
_G.AchievementFrameGuildEmblemRight:Kill()
_G.AchievementFrameGuildEmblemLeft:Kill()
S:HandleCloseButton(_G.AchievementFrameCloseButton, AchievementFrame.backdrop)
S:HandleDropDownBox(_G.AchievementFrameFilterDropDown)
_G.AchievementFrameFilterDropDown:ClearAllPoints()
_G.AchievementFrameFilterDropDown:Point('TOPLEFT', _G.AchievementFrameAchievements, 'TOPLEFT', -18, 24)
S:HandleEditBox(AchievementFrame.searchBox)
AchievementFrame.searchBox.backdrop:Point('TOPLEFT', AchievementFrame.searchBox, 'TOPLEFT', -3, -3)
AchievementFrame.searchBox.backdrop:Point('BOTTOMRIGHT', AchievementFrame.searchBox, 'BOTTOMRIGHT', 0, 3)
AchievementFrame.searchBox:ClearAllPoints()
AchievementFrame.searchBox:Point('TOPRIGHT', AchievementFrame, 'TOPRIGHT', -50, 8)
AchievementFrame.searchBox:Size(107, 25)
local scrollBars = {
_G.AchievementFrameCategoriesContainerScrollBar,
_G.AchievementFrameAchievementsContainerScrollBar,
_G.AchievementFrameStatsContainerScrollBar,
_G.AchievementFrameComparisonContainerScrollBar,
_G.AchievementFrameComparisonStatsContainerScrollBar,
}
for _, scrollbar in pairs(scrollBars) do
if scrollbar then
S:HandleScrollBar(scrollbar, 5)
end
end
-- Search
AchievementFrame.searchResults:StripTextures()
AchievementFrame.searchResults:CreateBackdrop('Transparent')
AchievementFrame.searchPreviewContainer:StripTextures()
AchievementFrame.searchPreviewContainer:ClearAllPoints()
AchievementFrame.searchPreviewContainer:Point('TOPLEFT', AchievementFrame, 'TOPRIGHT', 2, 6)
for i = 1, 5 do
SkinSearchButton(AchievementFrame.searchPreviewContainer['searchPreview'..i])
end
SkinSearchButton(AchievementFrame.searchPreviewContainer.showAllSearchResults)
hooksecurefunc('AchievementFrame_UpdateFullSearchResults', function()
local numResults = GetNumFilteredAchievements()
local scrollFrame = AchievementFrame.searchResults.scrollFrame
local offset = _G.HybridScrollFrame_GetOffset(scrollFrame)
local results = scrollFrame.buttons
local result, index
for i = 1, #results do
result = results[i]
index = offset + i
if index <= numResults then
if not result.styled then
result:SetNormalTexture('')
result:SetPushedTexture('')
result:GetRegions():Hide()
result.resultType:SetTextColor(1, 1, 1)
result.path:SetTextColor(1, 1, 1)
result.styled = true
end
if result.icon:GetTexCoord() == 0 then
result.icon:SetTexCoord(unpack(E.TexCoords))
end
end
end
end)
hooksecurefunc(AchievementFrame.searchResults.scrollFrame, 'update', function(self)
for i = 1, #self.buttons do
local result = self.buttons[i]
if result.icon:GetTexCoord() == 0 then
result.icon:SetTexCoord(unpack(E.TexCoords))
end
end
end)
S:HandleCloseButton(AchievementFrame.searchResults.closeButton)
S:HandleScrollBar(_G.AchievementFrameScrollFrameScrollBar)
--Tabs
for i = 1, 3 do
S:HandleTab(_G['AchievementFrameTab'..i])
_G['AchievementFrameTab'..i]:SetFrameLevel(_G['AchievementFrameTab'..i]:GetFrameLevel() + 2)
end
SkinStatusBar(_G.AchievementFrameSummaryCategoriesStatusBar)
SkinStatusBar(_G.AchievementFrameComparisonSummaryPlayerStatusBar)
SkinStatusBar(_G.AchievementFrameComparisonSummaryFriendStatusBar)
_G.AchievementFrameComparisonSummaryFriendStatusBar.text:ClearAllPoints()
_G.AchievementFrameComparisonSummaryFriendStatusBar.text:Point('CENTER')
_G.AchievementFrameComparisonHeader:Point('BOTTOMRIGHT', _G.AchievementFrameComparison, 'TOPRIGHT', 45, -20)
for i=1, 12 do
local frame = _G['AchievementFrameSummaryCategoriesCategory'..i]
local button = _G['AchievementFrameSummaryCategoriesCategory'..i..'Button']
local highlight = _G['AchievementFrameSummaryCategoriesCategory'..i..'ButtonHighlight']
SkinStatusBar(frame)
button:StripTextures()
highlight:StripTextures()
_G[highlight:GetName()..'Middle']:SetColorTexture(1, 1, 1, 0.3)
_G[highlight:GetName()..'Middle']:SetAllPoints(frame)
end
hooksecurefunc('AchievementButton_DisplayAchievement', setAchievementColor)
hooksecurefunc('AchievementFrameSummary_UpdateAchievements', function()
for i=1, _G.ACHIEVEMENTUI_MAX_SUMMARY_ACHIEVEMENTS do
local frame = _G['AchievementFrameSummaryAchievement'..i]
if not frame.isSkinned then
skinAch(frame)
frame.isSkinned = true
end
--The backdrop borders tend to overlap so add a little more space between summary achievements
local prevFrame = _G['AchievementFrameSummaryAchievement'..i-1]
if i ~= 1 then
frame:ClearAllPoints()
frame:Point('TOPLEFT', prevFrame, 'BOTTOMLEFT', 0, 1)
frame:Point('TOPRIGHT', prevFrame, 'BOTTOMRIGHT', 0, 1)
end
setAchievementColor(frame)
end
end)
for i=1, 20 do
local frame = _G['AchievementFrameStatsContainerButton'..i]
frame:StyleButton()
_G['AchievementFrameStatsContainerButton'..i..'BG']:SetColorTexture(1, 1, 1, 0.2)
_G['AchievementFrameStatsContainerButton'..i..'HeaderLeft']:Kill()
_G['AchievementFrameStatsContainerButton'..i..'HeaderRight']:Kill()
_G['AchievementFrameStatsContainerButton'..i..'HeaderMiddle']:Kill()
frame = 'AchievementFrameComparisonStatsContainerButton'..i
_G[frame]:StripTextures()
_G[frame]:StyleButton()
_G[frame..'BG']:SetColorTexture(1, 1, 1, 0.2)
_G[frame..'HeaderLeft']:Kill()
_G[frame..'HeaderRight']:Kill()
_G[frame..'HeaderMiddle']:Kill()
end
hooksecurefunc('AchievementButton_GetProgressBar', function(index)
local frame = _G['AchievementFrameProgressBar'..index]
if frame then
if not frame.skinned then
frame:StripTextures()
frame:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(frame)
frame:SetStatusBarColor(4/255, 179/255, 30/255)
frame:CreateBackdrop('Transparent')
frame:SetFrameLevel(frame:GetFrameLevel() + 3)
frame:Height(frame:GetHeight() - 2)
frame.text:ClearAllPoints()
frame.text:Point('CENTER', frame, 'CENTER', 0, -1)
frame.text:SetJustifyH('CENTER')
if index > 1 then
frame:ClearAllPoints()
frame:Point('TOP', _G['AchievementFrameProgressBar'..index-1], 'BOTTOM', 0, -5)
frame.SetPoint = E.noop
frame.ClearAllPoints = E.noop
end
frame.skinned = true
end
end
end)
hooksecurefunc('AchievementObjectives_DisplayCriteria', function(objectivesFrame, id)
local numCriteria = GetAchievementNumCriteria(id)
local textStrings, metas = 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;
local metaCriteria = _G.AchievementButton_GetMeta(metas);
if objectivesFrame.completed and completed then
metaCriteria.label:SetShadowOffset(0, 0)
metaCriteria.label:SetTextColor(1, 1, 1, 1);
elseif completed then
metaCriteria.label:SetShadowOffset(1, -1)
metaCriteria.label:SetTextColor(0, 1, 0, 1);
else
metaCriteria.label:SetShadowOffset(1, -1)
metaCriteria.label:SetTextColor(.6, .6, .6, 1);
end
elseif criteriaType ~= 1 then
textStrings = textStrings + 1;
local criteria = _G.AchievementButton_GetCriteria(textStrings);
if objectivesFrame.completed and completed then
criteria.name:SetTextColor(1, 1, 1, 1);
criteria.name:SetShadowOffset(0, 0);
elseif completed then
criteria.name:SetTextColor(0, 1, 0, 1);
criteria.name:SetShadowOffset(1, -1);
else
criteria.name:SetTextColor(.6, .6, .6, 1);
criteria.name:SetShadowOffset(1, -1);
end
end
end
end)
--The section below is usually handled in our hook, but another addon may have loaded the AchievementUI before we were ready
--Categories
for i = 1, 20 do
local button = _G['AchievementFrameCategoriesContainerButton'..i]
if not button or (button and button.isSkinned) then return end
button:StripTextures(true)
button:StyleButton()
button.isSkinned = true
end
--Comparison
for i = 1, 10 do
local Achievement = _G['AchievementFrameComparisonContainerButton'..i]
if not Achievement or (Achievement and Achievement.isSkinned) then return end
skinAch(Achievement.player)
skinAch(Achievement.friend)
hooksecurefunc(Achievement.player, 'Saturate', playerSaturate)
Achievement.isSkinned = true
end
end
local f = CreateFrame('Frame')
f:RegisterEvent('PLAYER_ENTERING_WORLD')
f:SetScript('OnEvent', function(self, event)
self:UnregisterEvent(event)
S:Blizzard_AchievementUI(event)
end)
S:AddCallbackForAddon('Blizzard_AchievementUI')

View File

@@ -0,0 +1,113 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local LSM = E.Libs.LSM
local _G = _G
local gsub = gsub
local unpack = unpack
local GetNumAddOns = GetNumAddOns
local GetAddOnInfo = GetAddOnInfo
local GetAddOnEnableState = GetAddOnEnableState
local UIDropDownMenu_GetSelectedValue = UIDropDownMenu_GetSelectedValue
local hooksecurefunc = hooksecurefunc
function S:AddonList()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.addonManager) then return end
local AddonList = _G.AddonList
local maxShown = _G.MAX_ADDONS_DISPLAYED
local AddonCharacterDropDown = _G.AddonCharacterDropDown
S:HandlePortraitFrame(AddonList)
S:HandleButton(AddonList.EnableAllButton, true)
S:HandleButton(AddonList.DisableAllButton, true)
S:HandleButton(AddonList.OkayButton, true)
S:HandleButton(AddonList.CancelButton, true)
S:HandleDropDownBox(AddonCharacterDropDown, 165)
S:HandleScrollBar(_G.AddonListScrollFrameScrollBar)
S:HandleCheckBox(_G.AddonListForceLoad)
_G.AddonListForceLoad:Size(26, 26)
_G.AddonListScrollFrame:StripTextures()
_G.AddonListScrollFrame:CreateBackdrop('Transparent')
_G.AddonListScrollFrame.backdrop:Point('TOPLEFT', -14, 0)
_G.AddonListScrollFrame.backdrop:Point('BOTTOMRIGHT', 0, -1)
for i = 1, maxShown do
S:HandleCheckBox(_G['AddonListEntry'..i..'Enabled'])
S:HandleButton(_G['AddonListEntry'..i].LoadAddonButton)
end
local font = LSM:Fetch('font', 'Expressway')
hooksecurefunc('AddonList_Update', function()
local numEntrys = GetNumAddOns()
for i = 1, maxShown do
local index = AddonList.offset + i
if index <= numEntrys then
local entry = _G['AddonListEntry'..i]
local string = _G['AddonListEntry'..i..'Title']
local checkbox = _G['AddonListEntry'..i..'Enabled']
local name, title, _, loadable, reason = GetAddOnInfo(index)
-- Get the character from the current list (nil is all characters)
local checkall
local character = UIDropDownMenu_GetSelectedValue(AddonCharacterDropDown)
if character == true then
character = nil
else
checkall = GetAddOnEnableState(nil, index)
end
local checkstate = GetAddOnEnableState(character, index)
local enabled = checkstate > 0
string:FontTemplate(font, 13, 'NONE')
entry.Status:FontTemplate(font, 11, 'NONE')
entry.Reload:FontTemplate(font, 11, 'NONE')
entry.Reload:SetTextColor(1.0, 0.3, 0.3)
entry.LoadAddonButton.Text:FontTemplate(font, 11, 'NONE')
local enabledForSome = not character and checkstate == 1
local disabled = not enabled or enabledForSome
if disabled then
entry.Status:SetTextColor(0.4, 0.4, 0.4)
else
entry.Status:SetTextColor(0.7, 0.7, 0.7)
end
if disabled or reason == 'DEP_DISABLED' then
string:SetText(gsub(title or name, '|c%x%x%x%x%x%x%x%x(.-)|?r?','%1'))
end
if enabledForSome then
string:SetTextColor(0.5, 0.5, 0.5)
elseif enabled and (loadable or reason == 'DEP_DEMAND_LOADED' or reason == 'DEMAND_LOADED') then
string:SetTextColor(0.9, 0.9, 0.9)
elseif enabled and reason ~= 'DEP_DISABLED' then
string:SetTextColor(1.0, 0.2, 0.2)
else
string:SetTextColor(0.3, 0.3, 0.3)
end
local checktex = checkbox:GetCheckedTexture()
checktex:Show()
if not enabled and checkall == 1 then
checktex:SetVertexColor(0.3, 0.3, 0.3)
checktex:SetDesaturated(true)
elseif not checkbox.state or checkbox.state == 0 then
checktex:Hide()
elseif checkbox.state == 1 then
checktex:SetVertexColor(0.6, 0.6, 0.6)
checktex:SetDesaturated(true)
elseif checkbox.state == 2 then
checktex:SetVertexColor(unpack(E.media.rgbvaluecolor))
checktex:SetDesaturated(false)
end
end
end
end)
end
S:AddCallback('AddonList')

View File

@@ -0,0 +1,44 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local hooksecurefunc = hooksecurefunc
local function SkinRewards()
for reward in pairs(_G.AdventureMapQuestChoiceDialog.rewardPool.activeObjects) do
if not reward.isSkinned then
S:HandleItemButton(reward)
S:HandleIcon(reward.Icon)
reward.Icon:SetDrawLayer('OVERLAY')
reward.isSkinned = true
end
end
end
function S:Blizzard_AdventureMap()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.adventureMap) then return end
--Quest Choise
local AdventureMapQuestChoiceDialog = _G.AdventureMapQuestChoiceDialog
AdventureMapQuestChoiceDialog:StripTextures()
AdventureMapQuestChoiceDialog:CreateBackdrop('Transparent')
AdventureMapQuestChoiceDialog.backdrop:SetFrameStrata('LOW')
-- Rewards
hooksecurefunc(AdventureMapQuestChoiceDialog, 'RefreshRewards', SkinRewards)
-- Quick Fix for the Font Color
AdventureMapQuestChoiceDialog.Details.Child.TitleHeader:SetTextColor(1, 1, 0)
AdventureMapQuestChoiceDialog.Details.Child.DescriptionText:SetTextColor(1, 1, 1)
AdventureMapQuestChoiceDialog.Details.Child.ObjectivesHeader:SetTextColor(1, 1, 0)
AdventureMapQuestChoiceDialog.Details.Child.ObjectivesText:SetTextColor(1, 1, 1)
--Buttons
S:HandleCloseButton(AdventureMapQuestChoiceDialog.CloseButton)
S:HandleScrollBar(AdventureMapQuestChoiceDialog.Details.ScrollBar)
S:HandleButton(AdventureMapQuestChoiceDialog.AcceptButton)
S:HandleButton(AdventureMapQuestChoiceDialog.DeclineButton)
end
S:AddCallbackForAddon('Blizzard_AdventureMap')

View File

@@ -0,0 +1,853 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack, select = unpack, select
local CreateFrame = CreateFrame
local GetItemInfo = GetItemInfo
local SetLargeGuildTabardTextures = SetLargeGuildTabardTextures
local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS
local hooksecurefunc = hooksecurefunc
local function forceAlpha(self, alpha, forced)
if alpha ~= 1 and forced ~= true then
self:SetAlpha(1, true)
end
end
local function SkinAchievementAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Background, 'TOPLEFT', -2, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame.Background, 'BOTTOMRIGHT', -2, 6)
end
-- Background
frame.Background:SetTexture()
frame.OldAchievement:Kill()
frame.glow:Kill()
frame.shine:Kill()
frame.GuildBanner:Kill()
frame.GuildBorder:Kill()
-- Text
frame.Unlocked:FontTemplate(nil, 12)
frame.Unlocked:SetTextColor(1, 1, 1)
frame.Name:FontTemplate(nil, 12)
-- Icon
frame.Icon.Texture:SetTexCoord(unpack(E.TexCoords))
frame.Icon.Overlay:Kill()
frame.Icon.Texture:ClearAllPoints()
frame.Icon.Texture:Point('LEFT', frame, 7, 0)
if not frame.Icon.Texture.b then
frame.Icon.Texture.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.Texture.b:SetTemplate()
frame.Icon.Texture.b:SetOutside(frame.Icon.Texture)
frame.Icon.Texture:SetParent(frame.Icon.Texture.b)
end
end
local function SkinCriteriaAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', -2, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -2, 6)
end
frame.Unlocked:SetTextColor(1, 1, 1)
frame.Name:SetTextColor(1, 1, 0)
frame.Background:Kill()
frame.glow:Kill()
frame.shine:Kill()
frame.Icon.Bling:Kill()
frame.Icon.Overlay:Kill()
-- Icon border
if not frame.Icon.Texture.b then
frame.Icon.Texture.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.Texture.b:SetTemplate()
frame.Icon.Texture.b:Point('TOPLEFT', frame.Icon.Texture, 'TOPLEFT', -3, 3)
frame.Icon.Texture.b:Point('BOTTOMRIGHT', frame.Icon.Texture, 'BOTTOMRIGHT', 3, -2)
frame.Icon.Texture:SetParent(frame.Icon.Texture.b)
end
frame.Icon.Texture:SetTexCoord(unpack(E.TexCoords))
end
local function SkinDungeonCompletionAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', -2, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -2, 6)
end
if frame.glowFrame then
frame.glowFrame:Kill()
if frame.glowFrame.glow then
frame.glowFrame.glow:Kill()
end
end
if frame.shine then frame.shine:Kill() end
if frame.raidArt then frame.raidArt:Kill() end
if frame.heroicIcon then frame.heroicIcon:Kill() end
if frame.dungeonArt1 then frame.dungeonArt1:Kill() end
if frame.dungeonArt2 then frame.dungeonArt2:Kill() end
if frame.dungeonArt3 then frame.dungeonArt3:Kill() end
if frame.dungeonArt4 then frame.dungeonArt4:Kill() end
-- Icon
frame.dungeonTexture:SetTexCoord(unpack(E.TexCoords))
frame.dungeonTexture:SetDrawLayer('OVERLAY')
frame.dungeonTexture:ClearAllPoints()
frame.dungeonTexture:Point('LEFT', frame, 7, 0)
if not frame.dungeonTexture.b then
frame.dungeonTexture.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.dungeonTexture.b:SetTemplate()
frame.dungeonTexture.b:SetOutside(frame.dungeonTexture)
frame.dungeonTexture:SetParent(frame.dungeonTexture.b)
end
end
local function SkinGuildChallengeAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', -2, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -2, 6)
end
-- Background
local region = select(2, frame:GetRegions())
if region:IsObjectType('Texture') then
if region:GetTexture() == [[Interface\GuildFrame\GuildChallenges]] then
region:Kill()
end
end
frame.glow:Kill()
frame.shine:Kill()
frame.EmblemBorder:Kill()
-- Icon border
local EmblemIcon = frame.EmblemIcon
if not EmblemIcon.b then
EmblemIcon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
EmblemIcon.b:SetTemplate()
EmblemIcon.b:Point('TOPLEFT', EmblemIcon, 'TOPLEFT', -3, 3)
EmblemIcon.b:Point('BOTTOMRIGHT', EmblemIcon, 'BOTTOMRIGHT', 3, -2)
EmblemIcon:SetParent(EmblemIcon.b)
end
SetLargeGuildTabardTextures('player', EmblemIcon, nil, nil)
end
local function SkinHonorAwardedAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then hooksecurefunc(frame, 'SetAlpha', forceAlpha); frame.hooked = true end
frame.Background:Kill()
frame.IconBorder:Kill()
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate('Default')
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Icon.b, 'TOPLEFT', -4, 4)
frame.backdrop:Point('BOTTOMRIGHT', frame.Icon.b, 'BOTTOMRIGHT', 180, -4)
end
end
local function SkinInvasionAlert(frame)
if not frame.isSkinned then
frame:SetAlpha(1)
hooksecurefunc(frame, 'SetAlpha', forceAlpha);
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 4, 4)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -7, 6)
--Background contains the item border too, so have to remove it
if frame.GetRegions then
local region, icon = frame:GetRegions()
if region and region:IsObjectType('Texture') then
if region:GetAtlas() == 'legioninvasion-Toast-Frame' then
region:Kill()
end
end
-- Icon border
if icon and icon:IsObjectType('Texture') then
if icon:GetTexture() == [[Interface\Icons\Ability_Warlock_DemonicPower]] then
icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
icon.b:SetTemplate()
icon.b:SetOutside(icon)
icon:SetParent(icon.b)
icon:SetDrawLayer('OVERLAY')
icon:SetTexCoord(unpack(E.TexCoords))
end
end
end
frame.isSkinned = true
end
end
local function SkinScenarioAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 4, 4)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -7, 6)
end
-- Background
for i = 1, frame:GetNumRegions() do
local region = select(i, frame:GetRegions())
if region:IsObjectType('Texture') then
if region:GetAtlas() == 'Toast-IconBG' or region:GetAtlas() == 'Toast-Frame' then
region:Kill()
end
end
end
frame.shine:Kill()
frame.glowFrame:Kill()
frame.glowFrame.glow:Kill()
-- Icon
frame.dungeonTexture:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.dungeonTexture:ClearAllPoints()
frame.dungeonTexture:Point('LEFT', frame.backdrop, 9, 0)
frame.dungeonTexture:SetDrawLayer('OVERLAY')
-- Icon border
if not frame.dungeonTexture.b then
frame.dungeonTexture.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.dungeonTexture.b:SetTemplate()
frame.dungeonTexture.b:SetOutside(frame.dungeonTexture)
frame.dungeonTexture:SetParent(frame.dungeonTexture.b)
end
end
local function SkinWorldQuestCompleteAlert(frame)
if not frame.isSkinned then
frame:SetAlpha(1)
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 10, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -14, 6)
frame.shine:Kill()
-- Background
if frame.GetNumRegions then
for i = 1, frame:GetNumRegions() do
local region = select(i, frame:GetRegions())
if region:IsObjectType('Texture') then
if region:GetTexture() == [[Interface\LFGFrame\UI-LFG-DUNGEONTOAST]] then
region:Kill()
end
end
end
end
--Icon
frame.QuestTexture:SetTexCoord(unpack(E.TexCoords))
frame.QuestTexture:SetDrawLayer('ARTWORK')
frame.QuestTexture.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.QuestTexture.b:SetTemplate()
frame.QuestTexture.b:SetOutside(frame.QuestTexture)
frame.QuestTexture:SetParent(frame.QuestTexture.b)
frame.isSkinned = true
end
end
local function SkinGarrisonFollowerAlert(frame, _, _, _, quality)
if not frame.isSkinned then
frame.glow:Kill()
frame.shine:Kill()
frame.FollowerBG:SetAlpha(0)
frame.DieIcon:SetAlpha(0)
--Background
if frame.GetNumRegions then
for i = 1, frame:GetNumRegions() do
local region = select(i, frame:GetRegions())
if region:IsObjectType('Texture') then
if region:GetAtlas() == 'Garr_MissionToast' then
region:Kill()
end
end
end
end
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 16, -3)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -16, 16)
frame.PortraitFrame.PortraitRing:Hide()
frame.PortraitFrame.PortraitRingQuality:SetTexture()
frame.PortraitFrame.LevelBorder:SetAlpha(0)
local level = frame.PortraitFrame.Level
level:ClearAllPoints()
level:Point('BOTTOM', frame.PortraitFrame, 0, 12)
local squareBG = CreateFrame('Frame', nil, frame.PortraitFrame, 'BackdropTemplate')
squareBG:SetFrameLevel(frame.PortraitFrame:GetFrameLevel()-1)
squareBG:Point('TOPLEFT', 3, -3)
squareBG:Point('BOTTOMRIGHT', -3, 11)
squareBG:SetTemplate()
frame.PortraitFrame.squareBG = squareBG
local cover = frame.PortraitFrame.PortraitRingCover
if cover then
cover:SetColorTexture(0, 0, 0)
cover:SetAllPoints(squareBG)
end
frame.isSkinned = true
end
local color = ITEM_QUALITY_COLORS[quality]
if color then
frame.PortraitFrame.squareBG:SetBackdropBorderColor(color.r, color.g, color.b)
else
frame.PortraitFrame.squareBG:SetBackdropBorderColor(0, 0, 0)
end
end
local function SkinGarrisonShipFollowerAlert(frame)
if not frame.isSkinned then
frame.glow:Kill()
frame.shine:Kill()
frame.FollowerBG:SetAlpha(0)
frame.DieIcon:SetAlpha(0)
--Background
frame.Background:Kill()
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 16, -3)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -16, 16)
frame.isSkinned = true
end
end
local function SkinGarrisonTalentAlert(frame)
if not frame.isSkinned then
frame:GetRegions():Hide()
frame.glow:Kill()
frame.shine:Kill()
--Icon
frame.Icon:SetTexCoord(unpack(E.TexCoords))
frame.Icon:SetDrawLayer('ARTWORK')
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 8, -2)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -6, 2)
frame.isSkinned = true
end
end
local function SkinGarrisonBuildingAlert(frame)
if not frame.isSkinned then
frame.glow:Kill()
frame.shine:Kill()
frame:GetRegions():Hide()
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 8, -8)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -6, 8)
--Icon
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:SetDrawLayer('ARTWORK')
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
frame.isSkinned = true
end
end
local function SkinGarrisonMissionAlert(frame)
if not frame.isSkinned then
frame.glow:Kill()
frame.shine:Kill()
frame.IconBG:Hide()
frame.Background:Kill()
--Icon
frame.MissionType:SetTexCoord(unpack(E.TexCoords))
frame.MissionType:SetDrawLayer('ARTWORK')
frame.MissionType.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.MissionType.b:SetTemplate()
frame.MissionType.b:SetOutside(frame.MissionType)
frame.MissionType:SetParent(frame.MissionType.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 8, -2)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -6, 2)
frame.isSkinned = true
end
end
local function SkinGarrisonShipMissionAlert(frame)
if not frame.isSkinned then
frame.Background:Kill()
frame.glow:Kill()
frame.shine:Kill()
--Icon
frame.MissionType:SetTexCoord(unpack(E.TexCoords))
frame.MissionType:SetDrawLayer('ARTWORK')
frame.MissionType.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.MissionType.b:SetTemplate()
frame.MissionType.b:SetOutside(frame.MissionType)
frame.MissionType:SetParent(frame.MissionType.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 8, -2)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -6, 2)
frame.isSkinned = true
end
end
local function SkinGarrisonRandomMissionAlert(frame, _, _, _, _, _, quality)
if not frame.isSkinned then
frame.Background:Kill()
frame.Blank:Kill()
frame.IconBG:Kill()
frame.glow:Kill()
frame.shine:Kill()
--Icon
frame.MissionType:SetTexCoord(unpack(E.TexCoords))
frame.MissionType:SetDrawLayer('ARTWORK')
frame.MissionType.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.MissionType.b:SetTemplate()
frame.MissionType.b:SetOutside(frame.MissionType)
frame.MissionType:SetParent(frame.MissionType.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 8, -2)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -6, 2)
frame.isSkinned = true
end
if frame.PortraitFrame and frame.PortraitFrame.squareBG then
local color = quality and ITEM_QUALITY_COLORS[quality]
if color then
frame.PortraitFrame.squareBG:SetBackdropBorderColor(color.r, color.g, color.b)
else
frame.PortraitFrame.squareBG:SetBackdropBorderColor(0, 0, 0)
end
end
end
local function SkinLegendaryItemAlert(frame, itemLink)
if not frame.isSkinned then
frame.Background:Kill()
frame.Background2:Kill()
frame.Background3:Kill()
frame.Ring1:Kill()
frame.Particles3:Kill()
frame.Particles2:Kill()
frame.Particles1:Kill()
frame.Starglow:Kill()
frame.glow:Kill()
frame.shine:Kill()
--Icon
frame.Icon:SetTexCoord(unpack(E.TexCoords))
frame.Icon:SetDrawLayer('ARTWORK')
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 20, -20)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -20, 20)
frame.isSkinned = true
end
local _, _, itemRarity = GetItemInfo(itemLink)
local color = ITEM_QUALITY_COLORS[itemRarity]
if color then
frame.Icon.b:SetBackdropBorderColor(color.r, color.g, color.b)
else
frame.Icon.b:SetBackdropBorderColor(0, 0, 0)
end
end
local function SkinLootWonAlert(frame)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
frame:SetAlpha(1)
frame.Background:Kill()
local lootItem = frame.lootItem or frame
lootItem.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
lootItem.Icon:SetDrawLayer('BORDER')
lootItem.IconBorder:Kill()
lootItem.SpecRing:SetTexture('')
frame.glow:Kill()
frame.shine:Kill()
frame.BGAtlas:Kill()
frame.PvPBackground:Kill()
-- Icon border
if not lootItem.Icon.b then
lootItem.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
lootItem.Icon.b:SetTemplate()
lootItem.Icon.b:SetOutside(lootItem.Icon)
lootItem.Icon:SetParent(lootItem.Icon.b)
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', lootItem.Icon.b, 'TOPLEFT', -4, 4)
frame.backdrop:Point('BOTTOMRIGHT', lootItem.Icon.b, 'BOTTOMRIGHT', 180, -4)
end
end
local function SkinLootUpgradeAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
frame.Background:Kill()
frame.Sheen:Kill()
frame.BorderGlow:Kill()
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:SetDrawLayer('BORDER', 5)
frame.Icon:ClearAllPoints()
frame.Icon:SetInside(frame.BaseQualityBorder, 5, 5)
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Icon.b, 'TOPLEFT', -8, 8)
frame.backdrop:Point('BOTTOMRIGHT', frame.Icon.b, 'BOTTOMRIGHT', 180, -8)
end
end
local function SkinMoneyWonAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
frame.Background:Kill()
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.IconBorder:Kill()
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Icon.b, 'TOPLEFT', -4, 4)
frame.backdrop:Point('BOTTOMRIGHT', frame.Icon.b, 'BOTTOMRIGHT', 180, -4)
end
end
local function SkinEntitlementDeliveredAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 10, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -14, 6)
end
-- Background
frame.Background:Kill()
frame.glow:Kill()
frame.shine:Kill()
-- Icon
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:ClearAllPoints()
frame.Icon:Point('LEFT', frame.backdrop, 9, 0)
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:Point('TOPLEFT', frame.Icon, 'TOPLEFT', -2, 2)
frame.Icon.b:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMRIGHT', 2, -2)
frame.Icon:SetParent(frame.Icon.b)
end
end
local function SkinRafRewardDeliveredAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 10, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -14, 6)
end
-- Background
frame.StandardBackground:Kill()
frame.glow:Kill()
frame.shine:Kill()
-- Icon
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:ClearAllPoints()
frame.Icon:Point('LEFT', frame.backdrop, 9, 0)
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:Point('TOPLEFT', frame.Icon, 'TOPLEFT', -2, 2)
frame.Icon.b:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMRIGHT', 2, -2)
frame.Icon:SetParent(frame.Icon.b)
end
end
local function SkinDigsiteCompleteAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', -16, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', 13, 6)
end
frame.glow:Kill()
frame.shine:Kill()
frame:GetRegions():Hide()
frame.DigsiteTypeTexture:Point('LEFT', -10, -14)
end
local function SkinNewRecipeLearnedAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame, 'TOPLEFT', 19, -6)
frame.backdrop:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -23, 6)
end
frame.glow:Kill()
frame.shine:Kill()
frame:GetRegions():Hide()
frame.Icon:SetMask('')
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.Icon:SetDrawLayer('BORDER', 5)
frame.Icon:ClearAllPoints()
frame.Icon:Point('LEFT', frame.backdrop, 9, 0)
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:Point('TOPLEFT', frame.Icon, 'TOPLEFT', -2, 2)
frame.Icon.b:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMRIGHT', 2, -2)
frame.Icon:SetParent(frame.Icon.b)
end
end
local function SkinNewPetAlert(frame)
frame:SetAlpha(1)
if not frame.hooked then
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.hooked = true
end
frame.Background:Kill()
frame.IconBorder:Kill()
frame.Icon:SetMask('')
frame.Icon:SetTexCoord(unpack(E.TexCoords))
frame.Icon:SetDrawLayer('BORDER', 5)
-- Icon border
if not frame.Icon.b then
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:Point('TOPLEFT', frame.Icon, 'TOPLEFT', -2, 2)
frame.Icon.b:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMRIGHT', 2, -2)
frame.Icon:SetParent(frame.Icon.b)
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Icon.b, 'TOPLEFT', -8, 8)
frame.backdrop:Point('BOTTOMRIGHT', frame.Icon.b, 'BOTTOMRIGHT', 180, -8)
end
end
function S:AlertSystem()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.alertframes) then return end
-- Achievements
hooksecurefunc(_G.AchievementAlertSystem, 'setUpFunction', SkinAchievementAlert)
hooksecurefunc(_G.CriteriaAlertSystem, 'setUpFunction', SkinCriteriaAlert)
-- Encounters
hooksecurefunc(_G.DungeonCompletionAlertSystem, 'setUpFunction', SkinDungeonCompletionAlert)
hooksecurefunc(_G.GuildChallengeAlertSystem, 'setUpFunction', SkinGuildChallengeAlert)
hooksecurefunc(_G.InvasionAlertSystem, 'setUpFunction', SkinInvasionAlert)
hooksecurefunc(_G.ScenarioAlertSystem, 'setUpFunction', SkinScenarioAlert)
hooksecurefunc(_G.WorldQuestCompleteAlertSystem, 'setUpFunction', SkinWorldQuestCompleteAlert)
-- Garrisons
hooksecurefunc(_G.GarrisonFollowerAlertSystem, 'setUpFunction', SkinGarrisonFollowerAlert)
hooksecurefunc(_G.GarrisonShipFollowerAlertSystem, 'setUpFunction', SkinGarrisonShipFollowerAlert)
hooksecurefunc(_G.GarrisonTalentAlertSystem, 'setUpFunction', SkinGarrisonTalentAlert)
hooksecurefunc(_G.GarrisonBuildingAlertSystem, 'setUpFunction', SkinGarrisonBuildingAlert)
hooksecurefunc(_G.GarrisonMissionAlertSystem, 'setUpFunction', SkinGarrisonMissionAlert)
hooksecurefunc(_G.GarrisonShipMissionAlertSystem, 'setUpFunction', SkinGarrisonShipMissionAlert)
hooksecurefunc(_G.GarrisonRandomMissionAlertSystem, 'setUpFunction', SkinGarrisonRandomMissionAlert)
-- Honor
hooksecurefunc(_G.HonorAwardedAlertSystem, 'setUpFunction', SkinHonorAwardedAlert)
-- Loot
hooksecurefunc(_G.LegendaryItemAlertSystem, 'setUpFunction', SkinLegendaryItemAlert)
hooksecurefunc(_G.LootAlertSystem, 'setUpFunction', SkinLootWonAlert)
hooksecurefunc(_G.LootUpgradeAlertSystem, 'setUpFunction', SkinLootUpgradeAlert)
hooksecurefunc(_G.MoneyWonAlertSystem, 'setUpFunction', SkinMoneyWonAlert)
hooksecurefunc(_G.EntitlementDeliveredAlertSystem, 'setUpFunction', SkinEntitlementDeliveredAlert) -- 8.2.5 New
hooksecurefunc(_G.RafRewardDeliveredAlertSystem, 'setUpFunction', SkinRafRewardDeliveredAlert) -- 8.2.5 New
-- Professions
hooksecurefunc(_G.DigsiteCompleteAlertSystem, 'setUpFunction', SkinDigsiteCompleteAlert)
hooksecurefunc(_G.NewRecipeLearnedAlertSystem, 'setUpFunction', SkinNewRecipeLearnedAlert)
-- Pets/Mounts
hooksecurefunc(_G.NewPetAlertSystem, 'setUpFunction', SkinNewPetAlert)
hooksecurefunc(_G.NewMountAlertSystem, 'setUpFunction', SkinNewPetAlert)
hooksecurefunc(_G.NewToyAlertSystem, 'setUpFunction', SkinNewPetAlert)
--Bonus Roll Money
local frame = _G.BonusRollMoneyWonFrame
frame:SetAlpha(1)
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.Background:Kill()
frame.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
frame.IconBorder:Kill()
-- Icon border
frame.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
frame.Icon.b:SetTemplate()
frame.Icon.b:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.Icon.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', frame.Icon.b, 'TOPLEFT', -4, 4)
frame.backdrop:Point('BOTTOMRIGHT', frame.Icon.b, 'BOTTOMRIGHT', 180, -4)
--Bonus Roll Loot
frame = _G.BonusRollLootWonFrame
frame:SetAlpha(1)
hooksecurefunc(frame, 'SetAlpha', forceAlpha)
frame.Background:Kill()
frame.glow:Kill()
frame.shine:Kill()
local lootItem = frame.lootItem or frame
lootItem.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
lootItem.IconBorder:Kill()
-- Icon border
lootItem.Icon.b = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
lootItem.Icon.b:SetTemplate()
lootItem.Icon.b:SetOutside(lootItem.Icon)
lootItem.Icon:SetParent(lootItem.Icon.b)
--Create Backdrop
frame:CreateBackdrop('Transparent')
frame.backdrop:Point('TOPLEFT', lootItem.Icon.b, 'TOPLEFT', -4, 4)
frame.backdrop:Point('BOTTOMRIGHT', lootItem.Icon.b, 'BOTTOMRIGHT', 180, -4)
end
S:AddCallback('AlertSystem')

View File

@@ -0,0 +1,57 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
function S:Blizzard_AlliedRacesUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.alliedRaces) then return end
local AlliedRacesFrame = _G.AlliedRacesFrame
if E.private.skins.parchmentRemoverEnable then
S:HandlePortraitFrame(AlliedRacesFrame)
select(2, AlliedRacesFrame.ModelFrame:GetRegions()):Hide()
local scrollFrame = AlliedRacesFrame.RaceInfoFrame.ScrollFrame
scrollFrame.ScrollBar.Border:Hide()
scrollFrame.ScrollBar.ScrollUpBorder:Hide()
scrollFrame.ScrollBar.ScrollDownBorder:Hide()
S:HandleScrollBar(scrollFrame.ScrollBar)
scrollFrame.Child.ObjectivesFrame:StripTextures()
scrollFrame.Child.ObjectivesFrame:CreateBackdrop('Transparent')
AlliedRacesFrame.RaceInfoFrame.AlliedRacesRaceName:SetTextColor(1, .8, 0)
scrollFrame.Child.RaceDescriptionText:SetTextColor(1, 1, 1)
scrollFrame.Child.RacialTraitsLabel:SetTextColor(1, .8, 0)
else
AlliedRacesFrame.NineSlice:SetAlpha(0)
_G.AlliedRacesFramePortrait:SetAlpha(0)
_G.AlliedRacesFrameBg:SetAlpha(0)
AlliedRacesFrame.TitleBg:SetAlpha(0)
AlliedRacesFrame.ModelFrame:StripTextures()
AlliedRacesFrame:CreateBackdrop('Transparent')
local scrollFrame = AlliedRacesFrame.RaceInfoFrame.ScrollFrame
scrollFrame.ScrollBar.Border:Hide()
scrollFrame.ScrollBar.ScrollUpBorder:Hide()
scrollFrame.ScrollBar.ScrollDownBorder:Hide()
S:HandleScrollBar(scrollFrame.ScrollBar)
S:HandleCloseButton(_G.AlliedRacesFrameCloseButton)
end
AlliedRacesFrame:HookScript('OnShow', function(s)
for button in s.abilityPool:EnumerateActive() do
select(3, button:GetRegions()):Hide()
S:HandleIcon(button.Icon, true)
if E.private.skins.parchmentRemoverEnable then
button.Text:SetTextColor(1, 1, 1)
end
end
end)
end
S:AddCallbackForAddon('Blizzard_AlliedRacesUI')

View File

@@ -0,0 +1,41 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
function S:Blizzard_AnimaDiversionUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.animaDiversion) then return end
local frame = _G.AnimaDiversionFrame
frame:StripTextures()
frame:CreateBackdrop('Transparent')
S:HandleCloseButton(frame.CloseButton)
frame.CloseButton:ClearAllPoints()
frame.CloseButton:Point('TOPRIGHT', frame, 'TOPRIGHT', 4, 4) --default is -5, -5
frame.AnimaDiversionCurrencyFrame.Background:SetAlpha(0)
S:HandleIcon(frame.AnimaDiversionCurrencyFrame.CurrencyFrame.CurrencyIcon)
S:HandleButton(frame.ReinforceInfoFrame.AnimaNodeReinforceButton)
-- Tooltip
local InfoFrame = frame.SelectPinInfoFrame
InfoFrame:StripTextures()
InfoFrame:CreateBackdrop()
S:HandleButton(InfoFrame.SelectButton)
S:HandleCloseButton(InfoFrame.CloseButton)
hooksecurefunc(InfoFrame, 'SetupCosts', function(frame)
for currency in frame.currencyPool:EnumerateActive() do
if not currency.IsSkinned then
S:HandleIcon(currency.CurrencyIcon)
currency.IsSkinned = true
end
end
end)
end
S:AddCallbackForAddon('Blizzard_AnimaDiversionUI')

View File

@@ -0,0 +1,77 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select = pairs, select
function S:Blizzard_ArchaeologyUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.archaeology) then return end
local ArchaeologyFrame = _G.ArchaeologyFrame
S:HandlePortraitFrame(ArchaeologyFrame)
S:HandleButton(ArchaeologyFrame.artifactPage.solveFrame.solveButton, true)
S:HandleButton(ArchaeologyFrame.artifactPage.backButton, true)
S:HandleDropDownBox(_G.ArchaeologyFrame.raceFilterDropDown)
_G.ArchaeologyFrame.raceFilterDropDown.Text:ClearAllPoints()
_G.ArchaeologyFrame.raceFilterDropDown.Text:Point('LEFT', _G.ArchaeologyFrame.raceFilterDropDown.backdrop, 'LEFT', 4, 0)
if E.private.skins.parchmentRemoverEnable then
_G.ArchaeologyFrameBgLeft:Kill()
_G.ArchaeologyFrameBgRight:Kill()
ArchaeologyFrame.completedPage.infoText:SetTextColor(1, 1, 1)
ArchaeologyFrame.helpPage.titleText:SetTextColor(1, 1, 0)
_G.ArchaeologyFrameHelpPageDigTitle:SetTextColor(1, 1, 0)
_G.ArchaeologyFrameHelpPageHelpScrollHelpText:SetTextColor(1, 1, 1)
ArchaeologyFrame.artifactPage.historyTitle:SetTextColor(1, 1, 0)
_G.ArchaeologyFrameArtifactPageHistoryScrollChildText:SetTextColor(1, 1, 1)
for i = 1, _G.ARCHAEOLOGY_MAX_RACES do
local frame = ArchaeologyFrame.summaryPage['race'..i]
local artifact = ArchaeologyFrame.completedPage['artifact'..i]
frame.raceName:SetTextColor(1, 1, 1)
artifact.border:SetTexture()
S:HandleIcon(artifact.icon, true)
artifact.artifactName:SetTextColor(1, .8, .1)
artifact.artifactSubText:SetTextColor(0.6, 0.6, 0.6)
end
for _, Frame in pairs({ ArchaeologyFrame.completedPage, ArchaeologyFrame.summaryPage }) do
for i = 1, Frame:GetNumRegions() do
local Region = select(i, Frame:GetRegions())
if Region:IsObjectType('FontString') then
Region:SetTextColor(1, .8, .1)
end
end
end
end
S:HandleButton(ArchaeologyFrame.summaryPage.prevPageButton)
S:HandleButton(ArchaeologyFrame.summaryPage.nextPageButton)
S:HandleButton(ArchaeologyFrame.completedPage.prevPageButton)
S:HandleButton(ArchaeologyFrame.completedPage.nextPageButton)
ArchaeologyFrame.rankBar:StripTextures()
ArchaeologyFrame.rankBar:SetStatusBarTexture(E.media.normTex)
ArchaeologyFrame.rankBar:CreateBackdrop()
E:RegisterStatusBar(ArchaeologyFrame.rankBar)
S:HandleStatusBar(ArchaeologyFrame.artifactPage.solveFrame.statusBar, {0.7, 0.2, 0})
S:HandleIcon(_G.ArchaeologyFrameArtifactPageIcon)
_G.ArcheologyDigsiteProgressBar:StripTextures()
S:HandleStatusBar(_G.ArcheologyDigsiteProgressBar.FillBar, {0.7, 0.2, 0})
_G.ArcheologyDigsiteProgressBar.BarTitle:FontTemplate(nil, nil, 'OUTLINE')
_G.ArcheologyDigsiteProgressBar:ClearAllPoints()
_G.ArcheologyDigsiteProgressBar:Point('TOP', _G.UIParent, 'TOP', 0, -400)
E:RegisterStatusBar(_G.ArcheologyDigsiteProgressBar.FillBar)
_G.UIPARENT_MANAGED_FRAME_POSITIONS.ArcheologyDigsiteProgressBar = nil
E:CreateMover(_G.ArcheologyDigsiteProgressBar, 'DigSiteProgressBarMover', L["Archeology Progress Bar"])
end
S:AddCallbackForAddon('Blizzard_ArchaeologyUI')

View File

@@ -0,0 +1,58 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local unpack = unpack
local hooksecurefunc = hooksecurefunc
function S:Blizzard_ArtifactUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.artifact) then return end
local ArtifactFrame = _G.ArtifactFrame
ArtifactFrame:StripTextures()
ArtifactFrame:CreateBackdrop('Transparent')
ArtifactFrame.BorderFrame:StripTextures()
S:HandleCloseButton(ArtifactFrame.CloseButton)
for i = 1, 2 do
S:HandleTab(_G['ArtifactFrameTab' .. i])
end
local ArtifactFrameTab1 = _G.ArtifactFrameTab1
ArtifactFrameTab1:ClearAllPoints()
ArtifactFrameTab1:Point('TOPLEFT', ArtifactFrame, 'BOTTOMLEFT', 0, 0)
ArtifactFrame.ForgeBadgeFrame.ItemIcon:Hide()
ArtifactFrame.ForgeBadgeFrame.ForgeLevelBackground:ClearAllPoints()
ArtifactFrame.ForgeBadgeFrame.ForgeLevelBackground:Point('TOPLEFT', ArtifactFrame)
ArtifactFrame.AppearancesTab:HookScript('OnShow', function(s)
for i=1, s:GetNumChildren() do
local child = select(i, s:GetChildren())
if child and child.appearanceID and not child.backdrop then
child:CreateBackdrop('Transparent')
child.SwatchTexture:SetTexCoord(.20,.80,.20,.80)
child.SwatchTexture:SetInside(child.backdrop)
child.Border:SetAlpha(0)
child.Background:SetAlpha(0)
child.HighlightTexture:SetAlpha(0)
child.HighlightTexture.SetAlpha = E.noop
if child.Selected:IsShown() then
child.backdrop:SetBackdropBorderColor(1,1,1)
end
child.Selected:SetAlpha(0)
child.Selected.SetAlpha = E.noop
hooksecurefunc(child.Selected, 'SetShown', function(_, isActive)
if isActive then
child.backdrop:SetBackdropBorderColor(1,1,1)
else
child.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
end
end
end)
end
S:AddCallbackForAddon('Blizzard_ArtifactUI')

View File

@@ -0,0 +1,401 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, ipairs, select = pairs, ipairs, select
local hooksecurefunc = hooksecurefunc
--[[
TO DO:
* Skin Multisell .ProgressBar
]]
-- Credits: siweia (AuroraClassic)
local function SkinEditBoxes(Frame)
S:HandleEditBox(Frame.MinLevel)
S:HandleEditBox(Frame.MaxLevel)
end
local function SkinFilterButton(Button)
SkinEditBoxes(Button.LevelRangeFrame)
S:HandleCloseButton(Button.ClearFiltersButton)
S:HandleButton(Button)
end
local function HandleSearchBarFrame(Frame)
SkinFilterButton(Frame.FilterButton)
S:HandleButton(Frame.SearchButton)
S:HandleEditBox(Frame.SearchBox)
S:HandleButton(Frame.FavoritesSearchButton)
Frame.FavoritesSearchButton:Size(22)
end
local function HandleListIcon(frame)
if not frame.tableBuilder then return end
for i = 1, 22 do
local row = frame.tableBuilder.rows[i]
if row then
for j = 1, 4 do
local cell = row.cells and row.cells[j]
if cell and cell.Icon then
if not cell.IsSkinned then
S:HandleIcon(cell.Icon)
if cell.IconBorder then
cell.IconBorder:Kill()
end
cell.IsSkinned = true
end
end
end
end
end
end
local function HandleSummaryIcons(frame)
for i = 1, 23 do
local child = select(i, frame.ScrollFrame.scrollChild:GetChildren())
if child and child.Icon then
if not child.IsSkinned then
S:HandleIcon(child.Icon)
if child.IconBorder then
child.IconBorder:Kill()
end
child.IsSkinned = true
end
end
end
end
local function SkinItemDisplay(frame)
local ItemDisplay = frame.ItemDisplay
ItemDisplay:StripTextures()
ItemDisplay:CreateBackdrop('Transparent')
ItemDisplay.backdrop:Point('TOPLEFT', 3, -3)
ItemDisplay.backdrop:Point('BOTTOMRIGHT', -3, 0)
local ItemButton = ItemDisplay.ItemButton
ItemButton.CircleMask:Hide()
-- We skin the new IconBorder from the AH, it looks really cool tbh.
ItemButton.Icon:SetTexCoord(.08, .92, .08, .92)
ItemButton.Icon:Size(44)
ItemButton.IconBorder:SetTexCoord(.08, .92, .08, .92)
end
local function HandleHeaders(frame)
local maxHeaders = frame.HeaderContainer:GetNumChildren()
for i = 1, maxHeaders do
local header = select(i, frame.HeaderContainer:GetChildren())
if header and not header.IsSkinned then
header:DisableDrawLayer('BACKGROUND')
if not header.backdrop then
header:CreateBackdrop('Transparent')
end
header.IsSkinned = true
end
if header.backdrop then
header.backdrop:Point('BOTTOMRIGHT', i < maxHeaders and -5 or 0, -2)
end
end
HandleListIcon(frame)
end
local function HandleAuctionButtons(button)
S:HandleButton(button)
button:Size(22)
end
local function HandleSellFrame(frame)
frame:StripTextures()
local ItemDisplay = frame.ItemDisplay
ItemDisplay:StripTextures()
ItemDisplay:CreateBackdrop('Transparent')
local ItemButton = ItemDisplay.ItemButton
if ItemButton.IconMask then ItemButton.IconMask:Hide() end
if ItemButton.IconBorder then ItemButton.IconBorder:Kill() end
ItemButton.EmptyBackground:Hide()
ItemButton:SetPushedTexture('')
ItemButton.Highlight:SetColorTexture(1, 1, 1, .25)
ItemButton.Highlight:SetAllPoints(ItemButton.Icon)
S:HandleIcon(ItemButton.Icon, true)
S:HandleEditBox(frame.QuantityInput.InputBox)
S:HandleButton(frame.QuantityInput.MaxButton)
S:HandleEditBox(frame.PriceInput.MoneyInputFrame.GoldBox)
S:HandleEditBox(frame.PriceInput.MoneyInputFrame.SilverBox)
if frame.SecondaryPriceInput then
S:HandleEditBox(frame.SecondaryPriceInput.MoneyInputFrame.GoldBox)
S:HandleEditBox(frame.SecondaryPriceInput.MoneyInputFrame.SilverBox)
end
S:HandleDropDownBox(frame.DurationDropDown.DropDown)
S:HandleButton(frame.PostButton)
if frame.BuyoutModeCheckButton then
S:HandleCheckBox(frame.BuyoutModeCheckButton)
frame.BuyoutModeCheckButton:Size(20)
end
end
local function HandleTokenSellFrame(frame)
frame:StripTextures()
local ItemDisplay = frame.ItemDisplay
ItemDisplay:StripTextures()
ItemDisplay:CreateBackdrop('Transparent')
local ItemButton = ItemDisplay.ItemButton
if ItemButton.IconMask then ItemButton.IconMask:Hide() end
if ItemButton.IconBorder then ItemButton.IconBorder:Kill() end
ItemButton.EmptyBackground:Hide()
ItemButton:SetPushedTexture('')
ItemButton.Highlight:SetColorTexture(1, 1, 1, .25)
ItemButton.Highlight:SetAllPoints(ItemButton.Icon)
S:HandleIcon(ItemButton.Icon, true)
S:HandleButton(frame.PostButton)
HandleAuctionButtons(frame.DummyRefreshButton)
frame.DummyItemList:StripTextures()
frame.DummyItemList:CreateBackdrop('Transparent')
HandleAuctionButtons(frame.DummyRefreshButton)
S:HandleScrollBar(frame.DummyItemList.DummyScrollBar)
end
local function HandleSellList(frame, hasHeader)
frame:StripTextures()
if frame.RefreshFrame then
HandleAuctionButtons(frame.RefreshFrame.RefreshButton)
end
S:HandleScrollBar(frame.ScrollFrame.scrollBar)
if hasHeader then
frame.ScrollFrame:CreateBackdrop('Transparent')
hooksecurefunc(frame, 'RefreshScrollFrame', HandleHeaders)
else
hooksecurefunc(frame, 'RefreshListDisplay', HandleSummaryIcons)
end
end
local function LoadSkin()
if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.auctionhouse ~= true then return end
--[[ Main Frame | TAB 1]]--
local Frame = _G.AuctionHouseFrame
S:HandlePortraitFrame(Frame)
local Tabs = {
_G.AuctionHouseFrameBuyTab,
_G.AuctionHouseFrameSellTab,
_G.AuctionHouseFrameAuctionsTab,
}
for _, tab in pairs(Tabs) do
if tab then
S:HandleTab(tab)
end
end
_G.AuctionHouseFrameBuyTab:ClearAllPoints()
_G.AuctionHouseFrameBuyTab:SetPoint('BOTTOMLEFT', Frame, 'BOTTOMLEFT', 0, -30)
-- SearchBar Frame
HandleSearchBarFrame(Frame.SearchBar)
Frame.MoneyFrameBorder:StripTextures()
Frame.MoneyFrameInset:StripTextures()
--[[ Categorie List ]]--
local Categories = Frame.CategoriesList
Categories.ScrollFrame:StripTextures()
Categories.Background:Hide()
Categories.NineSlice:Hide()
S:HandleScrollBar(_G.AuctionHouseFrameScrollBar)
for i = 1, _G.NUM_FILTERS_TO_DISPLAY do
local button = Categories.FilterButtons[i]
button:StripTextures(true)
button:StyleButton()
button.SelectedTexture:SetInside(button)
end
hooksecurefunc('AuctionFrameFilters_UpdateCategories', function(categoriesList, _)
for _, button in ipairs(categoriesList.FilterButtons) do
button.SelectedTexture:SetAtlas(nil)
button.SelectedTexture:SetColorTexture(0.7, 0.7, 0.7, 0.4)
end
end)
--[[ Browse Frame ]]--
local Browse = Frame.BrowseResultsFrame
local ItemList = Browse.ItemList
ItemList:StripTextures()
hooksecurefunc(ItemList, 'RefreshScrollFrame', HandleHeaders)
S:HandleScrollBar(ItemList.ScrollFrame.scrollBar)
--[[ BuyOut Frame]]
local CommoditiesBuyFrame = Frame.CommoditiesBuyFrame
CommoditiesBuyFrame.BuyDisplay:StripTextures()
S:HandleButton(CommoditiesBuyFrame.BackButton)
local ItemList = Frame.CommoditiesBuyFrame.ItemList
ItemList:StripTextures()
ItemList:CreateBackdrop('Transparent')
S:HandleButton(ItemList.RefreshFrame.RefreshButton)
S:HandleScrollBar(ItemList.ScrollFrame.scrollBar)
local BuyDisplay = Frame.CommoditiesBuyFrame.BuyDisplay
S:HandleEditBox(BuyDisplay.QuantityInput.InputBox)
S:HandleButton(BuyDisplay.BuyButton)
SkinItemDisplay(BuyDisplay)
--[[ ItemBuyOut Frame]]
local ItemBuyFrame = Frame.ItemBuyFrame
S:HandleButton(ItemBuyFrame.BackButton)
S:HandleButton(ItemBuyFrame.BuyoutFrame.BuyoutButton)
SkinItemDisplay(ItemBuyFrame)
local ItemList = ItemBuyFrame.ItemList
ItemList:StripTextures()
ItemList:CreateBackdrop('Transparent')
S:HandleScrollBar(ItemList.ScrollFrame.scrollBar)
S:HandleButton(ItemList.RefreshFrame.RefreshButton)
hooksecurefunc(ItemList, 'RefreshScrollFrame', HandleHeaders)
local EditBoxes = {
_G.AuctionHouseFrameGold,
_G.AuctionHouseFrameSilver,
}
for _, EditBox in pairs(EditBoxes) do
S:HandleEditBox(EditBox)
--EditBox:SetTextInsets(1, 1, -1, 1)
end
S:HandleButton(ItemBuyFrame.BidFrame.BidButton)
ItemBuyFrame.BidFrame.BidButton:ClearAllPoints()
ItemBuyFrame.BidFrame.BidButton:Point('LEFT', ItemBuyFrame.BidFrame.BidAmount, 'RIGHT', 2, -2)
S:HandleButton(ItemBuyFrame.BidFrame.BidButton)
--[[ Item Sell Frame | TAB 2 ]]--
local SellFrame = Frame.ItemSellFrame
HandleSellFrame(SellFrame)
local ItemList = Frame.ItemSellList
HandleSellList(ItemList, true)
local CommoditiesSellFrame = Frame.CommoditiesSellFrame
HandleSellFrame(CommoditiesSellFrame)
local ItemList = Frame.CommoditiesSellList
HandleSellList(ItemList, true)
local TokenSellFrame = Frame.WoWTokenSellFrame
HandleTokenSellFrame(TokenSellFrame)
--[[ Auctions Frame | TAB 3 ]]--
local AuctionsFrame = _G.AuctionHouseFrameAuctionsFrame
AuctionsFrame:StripTextures()
SkinItemDisplay(AuctionsFrame)
local CommoditiesList = AuctionsFrame.CommoditiesList
HandleSellList(CommoditiesList, true)
S:HandleButton(CommoditiesList.RefreshFrame.RefreshButton)
local ItemList = AuctionsFrame.ItemList
HandleSellList(ItemList, true)
S:HandleButton(ItemList.RefreshFrame.RefreshButton)
local Tabs = {
_G.AuctionHouseFrameAuctionsFrameAuctionsTab,
_G.AuctionHouseFrameAuctionsFrameBidsTab,
}
for _, tab in pairs(Tabs) do
if tab then
S:HandleTab(tab)
end
end
local SummaryList = AuctionsFrame.SummaryList
HandleSellList(SummaryList)
S:HandleButton(AuctionsFrame.CancelAuctionButton)
local AllAuctionsList = AuctionsFrame.AllAuctionsList
HandleSellList(AllAuctionsList, true)
S:HandleButton(AllAuctionsList.RefreshFrame.RefreshButton)
local BidsList = AuctionsFrame.BidsList
HandleSellList(BidsList, true)
S:HandleButton(BidsList.RefreshFrame.RefreshButton)
S:HandleEditBox(_G.AuctionHouseFrameAuctionsFrameGold)
S:HandleEditBox(_G.AuctionHouseFrameAuctionsFrameSilver)
S:HandleButton(AuctionsFrame.BidFrame.BidButton)
--[[ ProgressBars ]]--
--[[ WoW Token Category ]]--
local TokenFrame = Frame.WoWTokenResults
TokenFrame:StripTextures()
S:HandleButton(TokenFrame.Buyout)
S:HandleScrollBar(TokenFrame.DummyScrollBar) --MONITOR THIS
local Token = TokenFrame.TokenDisplay
Token:StripTextures()
Token:CreateBackdrop('Transparent')
local ItemButton = Token.ItemButton
S:HandleIcon(ItemButton.Icon, true)
ItemButton.Icon.backdrop:SetBackdropBorderColor(0, .8, 1)
ItemButton.IconBorder:Kill()
--WoW Token Tutorial Frame
local WowTokenGameTimeTutorial = Frame.WoWTokenResults.GameTimeTutorial
WowTokenGameTimeTutorial.NineSlice:Hide()
WowTokenGameTimeTutorial.TitleBg:SetAlpha(0)
WowTokenGameTimeTutorial:CreateBackdrop('Transparent')
S:HandleCloseButton(WowTokenGameTimeTutorial.CloseButton)
S:HandleButton(WowTokenGameTimeTutorial.RightDisplay.StoreButton)
WowTokenGameTimeTutorial.RightDisplay.StoreButton.backdrop:SetFrameLevel(WowTokenGameTimeTutorial.RightDisplay.StoreButton:GetFrameLevel())
WowTokenGameTimeTutorial.Bg:SetAlpha(0)
WowTokenGameTimeTutorial.LeftDisplay.Label:SetTextColor(1, 1, 1)
WowTokenGameTimeTutorial.LeftDisplay.Tutorial1:SetTextColor(1, 0, 0)
WowTokenGameTimeTutorial.RightDisplay.Label:SetTextColor(1, 1, 1)
WowTokenGameTimeTutorial.RightDisplay.Tutorial1:SetTextColor(1, 0, 0)
--[[ Dialogs ]]--
Frame.BuyDialog:StripTextures()
Frame.BuyDialog:CreateBackdrop('Transparent')
S:HandleButton(Frame.BuyDialog.BuyNowButton)
S:HandleButton(Frame.BuyDialog.CancelButton)
end
S:AddCallbackForAddon('Blizzard_AuctionHouseUI', 'AuctionHouse', LoadSkin)

View File

@@ -0,0 +1,16 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_AzeriteUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.azerite) then return end
_G.AzeriteEmpoweredItemUI:StripTextures()
_G.AzeriteEmpoweredItemUIPortrait:Hide()
_G.AzeriteEmpoweredItemUI.ClipFrame.BackgroundFrame.Bg:Hide()
_G.AzeriteEmpoweredItemUI:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.AzeriteEmpoweredItemUICloseButton)
end
S:AddCallbackForAddon('Blizzard_AzeriteUI')

View File

@@ -0,0 +1,50 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local C_AzeriteEssence_CanOpenUI = C_AzeriteEssence.CanOpenUI
function S:Blizzard_AzeriteEssenceUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.azeriteEssence) then return end
if not C_AzeriteEssence_CanOpenUI() then return end
local AzeriteEssenceUI = _G.AzeriteEssenceUI
S:HandlePortraitFrame(AzeriteEssenceUI)
-- Reposition the Level Badge
AzeriteEssenceUI.PowerLevelBadgeFrame:ClearAllPoints()
AzeriteEssenceUI.PowerLevelBadgeFrame:Point('TOPLEFT')
AzeriteEssenceUI.PowerLevelBadgeFrame.Ring:Hide()
AzeriteEssenceUI.PowerLevelBadgeFrame.BackgroundBlack:Hide()
AzeriteEssenceUI.OrbBackground:SetAllPoints(AzeriteEssenceUI.ItemModelScene)
AzeriteEssenceUI.OrbRing:Size(483, 480)
S:HandleScrollBar(AzeriteEssenceUI.EssenceList.ScrollBar)
-- Essence List on the right
for _, button in pairs(AzeriteEssenceUI.EssenceList.buttons) do
button:DisableDrawLayer('ARTWORK')
button:StyleButton()
S:HandleIcon(button.Icon)
button.Icon:Point('LEFT', button, 'LEFT', 6, 0)
button:CreateBackdrop()
button.backdrop:Point('TOPLEFT', 2, -3)
button.backdrop:Point('BOTTOMRIGHT', -2, 3)
end
-- Header on the Essence List
AzeriteEssenceUI:HookScript('OnShow', function(s)
s.EssenceList.HeaderButton:StripTextures()
if not s.EssenceList.HeaderButton.backdrop then
s.EssenceList.HeaderButton:CreateBackdrop('Transparent')
s.EssenceList.HeaderButton.backdrop:SetAllPoints()
end
end)
end
S:AddCallbackForAddon('Blizzard_AzeriteEssenceUI')

View File

@@ -0,0 +1,47 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_AzeriteRespecUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.azeriteRespec) then return end
local AzeriteRespecFrame = _G.AzeriteRespecFrame
AzeriteRespecFrame:SetClipsChildren(true)
AzeriteRespecFrame.Background:Hide()
AzeriteRespecFrame:StripTextures()
AzeriteRespecFrame:CreateBackdrop('Transparent')
local Lines = AzeriteRespecFrame:CreateTexture(nil, 'BACKGROUND')
Lines:ClearAllPoints()
Lines:Point('TOPLEFT', -50, 25)
Lines:Point('BOTTOMRIGHT')
Lines:SetTexture([[Interface\Transmogrify\EtherealLines]], true, true)
Lines:SetHorizTile(true)
Lines:SetVertTile(true)
Lines:SetAlpha(0.5)
local ItemSlot = AzeriteRespecFrame.ItemSlot
ItemSlot:Size(64, 64)
ItemSlot:Point('CENTER', AzeriteRespecFrame)
ItemSlot.Icon:SetInside()
ItemSlot.GlowOverlay:SetAlpha(0)
ItemSlot:CreateBackdrop('Transparent')
ItemSlot.backdrop:SetBackdropColor(.6, 0, .6, .5)
S:HandleIcon(ItemSlot.Icon)
local ButtonFrame = AzeriteRespecFrame.ButtonFrame
ButtonFrame:GetRegions():Hide()
ButtonFrame.ButtonBorder:Hide()
ButtonFrame.ButtonBottomBorder:Hide()
ButtonFrame.MoneyFrameEdge:Hide()
ButtonFrame.MoneyFrame:ClearAllPoints()
ButtonFrame.MoneyFrame:Point('BOTTOMRIGHT', ButtonFrame.MoneyFrameEdge, 7, 5)
S:HandleButton(ButtonFrame.AzeriteRespecButton, true)
S:HandleCloseButton(AzeriteRespecFrame.CloseButton)
end
S:AddCallbackForAddon('Blizzard_AzeriteRespecUI')

View File

@@ -0,0 +1,93 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
local function GetOpacity()
return 1 - (_G.BattlefieldMapOptions and _G.BattlefieldMapOptions.opacity or 1)
end
local function InitializeOptionsDropDown()
_G.BattlefieldMapTab:InitializeOptionsDropDown()
end
local function setBackdropAlpha()
if _G.BattlefieldMapFrame.backdrop then
_G.BattlefieldMapFrame.backdrop:SetBackdropColor(0, 0, 0, GetOpacity())
end
end
-- alpha stuff
local oldAlpha = 0
local function setOldAlpha()
if oldAlpha then
_G.BattlefieldMapFrame:SetGlobalAlpha(oldAlpha)
oldAlpha = nil
end
end
local function setRealAlpha()
oldAlpha = GetOpacity()
_G.BattlefieldMapFrame:SetGlobalAlpha(1)
end
local function refreshAlpha()
oldAlpha = GetOpacity()
end
function S:Blizzard_BattlefieldMap()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.bgmap) then return end
local BattlefieldMapFrame = _G.BattlefieldMapFrame
local BattlefieldMapTab = _G.BattlefieldMapTab
BattlefieldMapFrame:SetClampedToScreen(true)
BattlefieldMapFrame:StripTextures()
refreshAlpha() -- will need this soon
BattlefieldMapFrame:CreateBackdrop()
BattlefieldMapFrame:SetFrameStrata('LOW')
BattlefieldMapFrame.backdrop:SetOutside(BattlefieldMapFrame.ScrollContainer)
BattlefieldMapFrame.backdrop:SetBackdropColor(0, 0, 0, oldAlpha)
BattlefieldMapFrame:EnableMouse(true)
BattlefieldMapFrame:SetMovable(true)
BattlefieldMapFrame.BorderFrame:StripTextures()
BattlefieldMapFrame.BorderFrame.CloseButton:SetFrameLevel(BattlefieldMapFrame.BorderFrame.CloseButton:GetFrameLevel()+1)
S:HandleCloseButton(BattlefieldMapFrame.BorderFrame.CloseButton)
BattlefieldMapTab:Kill()
BattlefieldMapFrame.ScrollContainer:HookScript('OnMouseUp', function(_, btn)
if btn == 'LeftButton' then
BattlefieldMapTab:StopMovingOrSizing()
if not _G.BattlefieldMapOptions.position then _G.BattlefieldMapOptions.position = {} end
_G.BattlefieldMapOptions.position.x, _G.BattlefieldMapOptions.position.y = BattlefieldMapTab:GetCenter()
elseif btn == 'RightButton' then
_G.UIDropDownMenu_Initialize(BattlefieldMapTab.OptionsDropDown, InitializeOptionsDropDown, 'MENU')
_G.ToggleDropDownMenu(1, nil, BattlefieldMapTab.OptionsDropDown, BattlefieldMapFrame:GetName(), 0, -4)
end
if _G.OpacityFrame:IsShown() then
_G.OpacityFrame:Hide()
end
end)
BattlefieldMapFrame.ScrollContainer:HookScript('OnMouseDown', function(_, btn)
if btn == 'LeftButton' and (_G.BattlefieldMapOptions and not _G.BattlefieldMapOptions.locked) then
BattlefieldMapTab:StartMoving()
end
end)
hooksecurefunc(BattlefieldMapFrame, 'SetGlobalAlpha', setBackdropAlpha)
hooksecurefunc(BattlefieldMapFrame, 'RefreshAlpha', refreshAlpha)
BattlefieldMapFrame:HookScript('OnShow', setBackdropAlpha)
BattlefieldMapFrame.ScrollContainer:HookScript('OnLeave', setOldAlpha)
BattlefieldMapFrame.ScrollContainer:HookScript('OnEnter', setRealAlpha)
BattlefieldMapFrame.BorderFrame.CloseButton:HookScript('OnLeave', setOldAlpha)
BattlefieldMapFrame.BorderFrame.CloseButton:HookScript('OnEnter', setRealAlpha)
end
S:AddCallbackForAddon('Blizzard_BattlefieldMap')

View File

@@ -0,0 +1,278 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local AB = E:GetModule('ActionBars')
local S = E:GetModule('Skins')
local _G = _G
local unpack, select = unpack, select
local CreateFrame = CreateFrame
local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor
local GetContainerItemInfo = GetContainerItemInfo
local GetContainerItemQuestInfo = GetContainerItemQuestInfo
local GetInventoryItemTexture = GetInventoryItemTexture
local GetInventorySlotInfo = GetInventorySlotInfo
local GetContainerItemID = GetContainerItemID
local hooksecurefunc = hooksecurefunc
local BACKPACK_TOOLTIP = BACKPACK_TOOLTIP
local MAX_WATCHED_TOKENS = MAX_WATCHED_TOKENS
local NUM_CONTAINER_FRAMES = NUM_CONTAINER_FRAMES
local QUESTS_LABEL = QUESTS_LABEL
local TEXTURE_ITEM_QUEST_BORDER = TEXTURE_ITEM_QUEST_BORDER
local function UpdateBorderColors(button)
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
if button.type and button.type == QUESTS_LABEL then
button.backdrop:SetBackdropBorderColor(1, 0.2, 0.2)
elseif button.quality and button.quality > 1 then
local r, g, b = GetItemQualityColor(button.quality)
button.backdrop:SetBackdropBorderColor(r, g, b)
end
end
local function BagButtonOnEnter(self)
AB:BindUpdate(self, 'BAG')
end
local function SkinButton(button)
if not button.skinned then
for i=1, button:GetNumRegions() do
local region = select(i, button:GetRegions())
if region and region:IsObjectType('Texture') and region ~= button.searchOverlay and region ~= button.UpgradeIcon and region ~= button.ItemContextOverlay then
region:SetTexture()
end
end
button:CreateBackdrop()
button:StyleButton()
button.IconBorder:Kill()
local icon = button.icon
icon:SetInside()
icon:SetTexCoord(unpack(E.TexCoords))
button.searchOverlay:ClearAllPoints()
button.searchOverlay:SetAllPoints(icon)
if button.IconQuestTexture then
button.IconQuestTexture:SetTexCoord(unpack(E.TexCoords))
button.IconQuestTexture:SetInside(button)
end
if button.Cooldown then
E:RegisterCooldown(button.Cooldown)
end
button.skinned = true
-- bag keybind support from actionbar module
if E.private.actionbar.enable then
button:HookScript('OnEnter', BagButtonOnEnter)
end
end
end
local function SkinBagButtons(container, button)
SkinButton(button)
local bagID, slotID = container:GetID(), button:GetID()
local texture, _, _, _, _, _, itemLink = GetContainerItemInfo(bagID, slotID)
local isQuestItem, questId = GetContainerItemQuestInfo(bagID, slotID)
_G[button:GetName()..'IconTexture']:SetTexture(texture)
button.type, button.quality, button.itemID = nil, nil, nil
button.ilink = itemLink
if button.ilink then
button.name, _, button.quality, _, _, button.type = GetItemInfo(button.ilink)
button.itemID = GetContainerItemID(bagID, slotID)
end
if questId or isQuestItem then
button.type = QUESTS_LABEL
end
UpdateBorderColors(button)
end
local function BagIcon(container, texture)
if not container.PortraitButton then return end
if not container.BagIcon then
container.BagIcon = container.PortraitButton:CreateTexture()
container.BagIcon:SetTexCoord(unpack(E.TexCoords))
container.BagIcon:SetInside()
end
container.BagIcon:SetTexture(texture)
end
local function SkinContainer(container)
if container and container.size then
for b=1, container.size, 1 do
local button = _G[container:GetName()..'Item'..b]
if button then
SkinBagButtons(container, button)
end
end
end
end
local function SkinBags()
for i = 1, NUM_CONTAINER_FRAMES, 1 do
local container = _G['ContainerFrame'..i]
if container and not container.backdrop then
container:SetFrameStrata('HIGH')
container:StripTextures(true)
container:CreateBackdrop('Transparent')
container.backdrop:SetInside()
S:HandleCloseButton(_G[container:GetName()..'CloseButton'])
S:HandleButton(container.PortraitButton)
container.PortraitButton:Size(35)
container.PortraitButton.Highlight:SetAlpha(0)
container:HookScript('OnShow', SkinContainer)
if i == 1 then
_G.BackpackTokenFrame:StripTextures(true)
for j = 1, MAX_WATCHED_TOKENS do
local token = _G['BackpackTokenFrameToken'..j]
token:CreateBackdrop()
token.backdrop:SetOutside(token.icon)
token.icon:SetTexCoord(unpack(E.TexCoords))
end
end
end
SkinContainer(container)
end
end
local bagIconCache = {}
function S:ContainerFrame()
if E.private.bags.enable or not (E.private.skins.blizzard.enable and E.private.skins.blizzard.bags) then return end
_G.BankSlotsFrame:StripTextures()
S:HandleTab(_G.BankFrameTab1)
S:HandleTab(_G.BankFrameTab2)
S:HandleButton(_G.ReagentBankFrame.DespositButton)
_G.ReagentBankFrame:HookScript('OnShow', function(b)
b:StripTextures()
end)
hooksecurefunc('ContainerFrame_Update', function(frame)
local frameName = frame:GetName()
for i=1, frame.size, 1 do
local questTexture = _G[frameName..'Item'..i..'IconQuestTexture'];
if questTexture:IsShown() and questTexture:GetTexture() == TEXTURE_ITEM_QUEST_BORDER then
questTexture:Hide()
end
end
local title = _G[frameName..'Name']
if title and title.GetText then
local name = title:GetText()
if bagIconCache[name] then
BagIcon(frame, bagIconCache[name])
else
if not name then return end
if name == BACKPACK_TOOLTIP then
bagIconCache[name] = _G.MainMenuBarBackpackButtonIconTexture:GetTexture()
else
bagIconCache[name] = select(10, GetItemInfo(name))
end
BagIcon(frame, bagIconCache[name])
end
end
end)
--Bank
local BankFrame = _G.BankFrame
hooksecurefunc('BankFrameItemButton_Update', function(button)
if not BankFrame.backdrop then
BankFrame:StripTextures(true)
BankFrame:CreateBackdrop('Transparent')
S:HandleButton(_G.BankFramePurchaseButton, true)
S:HandleCloseButton(_G.BankFrameCloseButton)
BankFrame.backdrop2 = CreateFrame('Frame', nil, _G.BankSlotsFrame, 'BackdropTemplate')
BankFrame.backdrop2:SetTemplate()
BankFrame.backdrop2:Point('TOPLEFT', _G.BankFrameItem1, 'TOPLEFT', -6, 6)
BankFrame.backdrop2:Point('BOTTOMRIGHT', _G.BankFrameItem28, 'BOTTOMRIGHT', 6, -6)
BankFrame.backdrop3 = CreateFrame('Frame', nil, _G.BankSlotsFrame, 'BackdropTemplate')
BankFrame.backdrop3:SetTemplate()
BankFrame.backdrop3:Point('TOPLEFT', _G.BankSlotsFrame.Bag1, 'TOPLEFT', -6, 6)
BankFrame.backdrop3:Point('BOTTOMRIGHT', _G.BankSlotsFrame.Bag7, 'BOTTOMRIGHT', 6, -6)
_G.BankFrameMoneyFrameInset:Kill()
_G.BankFrameMoneyFrameBorder:Kill()
BankFrame.backdrop = true;
end
SkinButton(button)
if not button.levelAdjusted then
button:SetFrameLevel(button:GetFrameLevel() + 1)
button.levelAdjusted = true;
end
local inventoryID = button:GetInventorySlot()
local textureName = GetInventoryItemTexture('player',inventoryID);
if textureName then
button.icon:SetTexture(textureName)
elseif button.isBag then
local _, slotTextureName = GetInventorySlotInfo('Bag'..button:GetID())
button.icon:SetTexture(slotTextureName)
end
if not button.isBag then
local container = button:GetParent():GetID();
local _, _, _, _, _, _, itemLink = GetContainerItemInfo(container, button:GetID())
local isQuestItem, questId = GetContainerItemQuestInfo(container, button:GetID())
button.type = nil
button.ilink = itemLink
button.quality = nil
if button.ilink then
button.name, _, button.quality, _, _, button.type = GetItemInfo(button.ilink)
end
if isQuestItem or questId then
button.type = QUESTS_LABEL
end
UpdateBorderColors(button)
end
end)
local BagItemSearchBox = _G.BagItemSearchBox
S:HandleEditBox(BagItemSearchBox)
BagItemSearchBox:Height(BagItemSearchBox:GetHeight() - 5)
local BankItemSearchBox = _G.BankItemSearchBox
BankItemSearchBox:StripTextures()
BankItemSearchBox:CreateBackdrop('Overlay')
BankItemSearchBox.backdrop:Point('TOPLEFT', 10, -1)
BankItemSearchBox.backdrop:Point('BOTTOMRIGHT', 4, 1)
local AutoSort = _G.BagItemAutoSortButton
AutoSort:StripTextures()
--AutoSort:SetTemplate()
AutoSort:CreateBackdrop()
AutoSort.Icon = AutoSort:CreateTexture()
AutoSort.Icon:SetTexture([[Interface\ICONS\INV_Pet_Broom]])
AutoSort.Icon:SetTexCoord(unpack(E.TexCoords))
AutoSort.Icon:SetInside()
local Bags = CreateFrame('Frame')
Bags:RegisterEvent('BAG_UPDATE')
Bags:RegisterEvent('ITEM_LOCK_CHANGED')
Bags:RegisterEvent('BAG_CLOSED')
Bags:SetScript('OnEvent', SkinBags)
SkinBags()
end
S:AddCallback('ContainerFrame')

View File

@@ -0,0 +1,66 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
-- 9.0 Shadowlands
function S:Blizzard_BarbershopUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.barber) then return end
local frame = _G.BarberShopFrame
S:HandleButton(frame.ResetButton)
S:HandleButton(frame.CancelButton)
S:HandleButton(frame.AcceptButton)
frame.TopBackgroundOverlay:SetDrawLayer('BACKGROUND', 0)
frame.LeftBackgroundOverlay:SetDrawLayer('BACKGROUND', 0)
frame.RightBackgroundOverlay:SetDrawLayer('BACKGROUND', 0)
end
S:AddCallbackForAddon('Blizzard_BarbershopUI')
local function ReskinCustomizeButton(button)
S:HandleButton(button)
button.backdrop:SetInside(nil, 3, 3)
end
function S:Blizzard_CharacterCustomize()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.barber) then return end -- yes, it belongs also to tbe BarberUI
-- backdrop is ugly, so dont use a style
local frame = _G.CharCustomizeFrame
S:HandleButton(frame.SmallButtons.ResetCameraButton, nil, nil, true)
S:HandleButton(frame.SmallButtons.ZoomOutButton, nil, nil, true)
S:HandleButton(frame.SmallButtons.ZoomInButton, nil, nil, true)
S:HandleButton(frame.SmallButtons.RotateLeftButton, nil, nil, true)
S:HandleButton(frame.SmallButtons.RotateRightButton, nil, nil, true)
hooksecurefunc(frame, 'SetSelectedCatgory', function(list)
for button in list.selectionPopoutPool:EnumerateActive() do
if not button.IsSkinned then
S:HandleNextPrevButton(button.DecrementButton)
S:HandleNextPrevButton(button.IncrementButton)
local popoutButton = button.SelectionPopoutButton
popoutButton.HighlightTexture:SetAlpha(0)
popoutButton.NormalTexture:SetAlpha(0)
popoutButton.Popout:StripTextures()
popoutButton.Popout:CreateBackdrop('Transparent')
popoutButton.Popout.backdrop:SetFrameLevel(popoutButton.Popout:GetFrameLevel())
ReskinCustomizeButton(popoutButton)
button.IsSkinned = true
end
end
local optionPool = list.pools:GetPool('CharCustomizeOptionCheckButtonTemplate')
for button in optionPool:EnumerateActive() do
if not button.IsSkinned then
S:HandleCheckBox(button.Button)
button.IsSkinned = true
end
end
end)
end
S:AddCallbackForAddon('Blizzard_CharacterCustomize')

View File

@@ -0,0 +1,47 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
function S:BattleNetFrames()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.misc) then return end
local skins = {
_G.BNToastFrame,
_G.TicketStatusFrameButton,
}
for i = 1, #skins do
skins[i]:SetTemplate('Transparent')
end
local ReportFrame = _G.PlayerReportFrame
ReportFrame:StripTextures()
ReportFrame:CreateBackdrop('Transparent')
ReportFrame.Comment:StripTextures()
S:HandleEditBox(ReportFrame.Comment)
S:HandleButton(ReportFrame.ReportButton)
S:HandleButton(ReportFrame.CancelButton)
local ReportCheatingDialog = _G.ReportCheatingDialog
ReportCheatingDialog:StripTextures()
_G.ReportCheatingDialogCommentFrame:StripTextures()
S:HandleButton(_G.ReportCheatingDialogReportButton)
S:HandleButton(_G.ReportCheatingDialogCancelButton)
ReportCheatingDialog:CreateBackdrop('Transparent')
S:HandleEditBox(_G.ReportCheatingDialogCommentFrameEditBox)
local BattleTagInviteFrame = _G.BattleTagInviteFrame
BattleTagInviteFrame:StripTextures()
BattleTagInviteFrame:CreateBackdrop('Transparent')
for i=1, BattleTagInviteFrame:GetNumChildren() do
local child = select(i, BattleTagInviteFrame:GetChildren())
if child:IsObjectType('Button') then
S:HandleButton(child)
end
end
end
S:AddCallback('BattleNetFrames')

View File

@@ -0,0 +1,77 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local hooksecurefunc = hooksecurefunc
function S:Blizzard_BindingUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.binding) then return end
local buttons = {
'defaultsButton',
'unbindButton',
'okayButton',
'cancelButton',
'quickKeybindButton'
}
local KeyBindingFrame = _G.KeyBindingFrame
for _, v in pairs(buttons) do
S:HandleButton(KeyBindingFrame[v])
end
_G.KeyBindingFrameScrollFrame:StripTextures()
S:HandleScrollBar(_G.KeyBindingFrameScrollFrameScrollBar)
S:HandleCheckBox(KeyBindingFrame.characterSpecificButton)
KeyBindingFrame.Header:StripTextures()
KeyBindingFrame.Header:ClearAllPoints()
KeyBindingFrame.Header:Point('TOP', KeyBindingFrame, 'TOP', 0, -4)
KeyBindingFrame:StripTextures()
KeyBindingFrame:CreateBackdrop('Transparent')
_G.KeyBindingFrameCategoryList:StripTextures()
_G.KeyBindingFrameCategoryList:SetTemplate('Transparent')
KeyBindingFrame.bindingsContainer:StripTextures()
KeyBindingFrame.bindingsContainer:SetTemplate('Transparent')
for i = 1, _G.KEY_BINDINGS_DISPLAYED, 1 do
local button1 = _G['KeyBindingFrameKeyBinding'..i..'Key1Button']
local button2 = _G['KeyBindingFrameKeyBinding'..i..'Key2Button']
button2:Point('LEFT', button1, 'RIGHT', 1, 0) -- Needed for new Pixel Perfect
end
hooksecurefunc('BindingButtonTemplate_SetupBindingButton', function(_, button)
if not button.IsSkinned then
local selected = button.selectedHighlight
selected:SetTexture(E.media.normTex)
selected:Point('TOPLEFT', 1, -1)
selected:Point('BOTTOMRIGHT', -1, 1)
selected:SetColorTexture(1, 1, 1, .25)
S:HandleButton(button)
button.IsSkinned = true
end
end)
-- QuickKeybind
local Quickie = _G.QuickKeybindFrame
Quickie:StripTextures()
Quickie.Header:StripTextures()
Quickie:CreateBackdrop('Transparent')
local quickies = {
'okayButton',
'defaultsButton',
'cancelButton'
}
for _, v in pairs(quickies) do
S:HandleButton(Quickie[v])
end
S:HandleCheckBox(Quickie.characterSpecificButton)
end
S:AddCallbackForAddon('Blizzard_BindingUI')

View File

@@ -0,0 +1,77 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select, unpack, pairs = select, unpack, pairs
local GetItemInfo = GetItemInfo
local hooksecurefunc = hooksecurefunc
local GetItemQualityColor = GetItemQualityColor
local function SkinTab(tab)
tab.Left:SetAlpha(0)
if tab.Middle then
tab.Middle:SetAlpha(0)
end
tab.Right:SetAlpha(0)
end
function S:Blizzard_BlackMarketUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.bmah) then return end
local BlackMarketFrame = _G.BlackMarketFrame
BlackMarketFrame:StripTextures()
BlackMarketFrame:CreateBackdrop('Transparent')
BlackMarketFrame.Inset:StripTextures()
S:HandleCloseButton(BlackMarketFrame.CloseButton)
S:HandleScrollBar(_G.BlackMarketScrollFrameScrollBar, 4)
SkinTab(BlackMarketFrame.ColumnName)
SkinTab(BlackMarketFrame.ColumnLevel)
SkinTab(BlackMarketFrame.ColumnType)
SkinTab(BlackMarketFrame.ColumnDuration)
SkinTab(BlackMarketFrame.ColumnHighBidder)
SkinTab(BlackMarketFrame.ColumnCurrentBid)
BlackMarketFrame.MoneyFrameBorder:StripTextures()
S:HandleEditBox(_G.BlackMarketBidPriceGold)
_G.BlackMarketBidPriceGold.backdrop:Point('TOPLEFT', -2, 0)
_G.BlackMarketBidPriceGold.backdrop:Point('BOTTOMRIGHT', -2, 0)
S:HandleButton(BlackMarketFrame.BidButton)
hooksecurefunc('BlackMarketScrollFrame_Update', function()
for _, button in pairs(_G.BlackMarketScrollFrame.buttons) do
if not button.skinned then
S:HandleItemButton(button.Item)
S:HandleIconBorder(button.Item.IconBorder)
button:StripTextures()
button:StyleButton()
button.skinned = true
end
end
end)
BlackMarketFrame.HotDeal:StripTextures()
BlackMarketFrame.HotDeal.Item.IconTexture:SetTexCoord(unpack(E.TexCoords))
BlackMarketFrame.HotDeal.Item.IconBorder:Kill()
for i=1, BlackMarketFrame:GetNumRegions() do
local region = select(i, BlackMarketFrame:GetRegions())
if region and region:IsObjectType('FontString') and region:GetText() == _G.BLACK_MARKET_TITLE then
region:ClearAllPoints()
region:Point('TOP', BlackMarketFrame, 'TOP', 0, -4)
end
end
hooksecurefunc('BlackMarketFrame_UpdateHotItem', function(s)
local hotDeal = s.HotDeal
if hotDeal:IsShown() and hotDeal.itemLink then
local _, _, quality = GetItemInfo(hotDeal.itemLink)
hotDeal.Name:SetTextColor(GetItemQualityColor(quality))
end
end)
end
S:AddCallbackForAddon('Blizzard_BlackMarketUI')

View File

@@ -0,0 +1,389 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local ipairs = ipairs
local pairs = pairs
local hooksecurefunc = hooksecurefunc
local InCombatLockdown = InCombatLockdown
local UnitIsUnit = UnitIsUnit
local function HandlePushToTalkButton(button)
button:Size(button:GetSize())
button.TopLeft:Hide()
button.TopRight:Hide()
button.BottomLeft:Hide()
button.BottomRight:Hide()
button.TopMiddle:Hide()
button.MiddleLeft:Hide()
button.MiddleRight:Hide()
button.BottomMiddle:Hide()
button.MiddleMiddle:Hide()
button:SetHighlightTexture('')
button:CreateBackdrop(nil, true)
button:HookScript('OnEnter', S.SetModifiedBackdrop)
button:HookScript('OnLeave', S.SetOriginalBackdrop)
end
function S.AudioOptionsVoicePanel_InitializeCommunicationModeUI(btn)
HandlePushToTalkButton(btn.PushToTalkKeybindButton)
end
function S:BlizzardOptions()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.blizzardOptions) then return end
-- here we reskin all 'normal' buttons
S:HandleButton(_G.ReadyCheckFrameYesButton)
S:HandleButton(_G.ReadyCheckFrameNoButton)
S:HandleButton(_G.RolePollPopupAcceptButton)
S:HandleButton(_G.LFDReadyCheckPopup.YesButton)
S:HandleButton(_G.LFDReadyCheckPopup.NoButton)
local ReadyCheckFrame = _G.ReadyCheckFrame
_G.ReadyCheckFrameYesButton:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameNoButton:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameYesButton:ClearAllPoints()
_G.ReadyCheckFrameNoButton:ClearAllPoints()
_G.ReadyCheckFrameYesButton:Point('TOPRIGHT', ReadyCheckFrame, 'CENTER', -3, -5)
_G.ReadyCheckFrameNoButton:Point('TOPLEFT', ReadyCheckFrame, 'CENTER', 3, -5)
_G.ReadyCheckFrameText:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameText:ClearAllPoints()
_G.ReadyCheckFrameText:Point('TOP', 0, -15)
_G.ReadyCheckListenerFrame:SetAlpha(0)
ReadyCheckFrame:HookScript('OnShow', function(rcf)
-- bug fix, don't show it if player is initiator
if rcf.initiator and UnitIsUnit('player', rcf.initiator) then
rcf:Hide()
end
end)
_G.RolePollPopup:StripTextures()
_G.RolePollPopup:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.RolePollPopupCloseButton)
_G.InterfaceOptionsFrame:SetClampedToScreen(true)
_G.InterfaceOptionsFrame:SetMovable(true)
_G.InterfaceOptionsFrame:EnableMouse(true)
_G.InterfaceOptionsFrame:RegisterForDrag('LeftButton', 'RightButton')
_G.InterfaceOptionsFrame:SetScript('OnDragStart', function(iof)
if InCombatLockdown() then return end
iof:StartMoving()
iof.isMoving = true
end)
_G.InterfaceOptionsFrame:SetScript('OnDragStop', function(iof)
iof:StopMovingOrSizing()
iof.isMoving = false
end)
--Chat Config
local ChatConfigFrame = _G.ChatConfigFrame
ChatConfigFrame.Header = ChatConfigFrame.Header
ChatConfigFrame.Header:StripTextures()
ChatConfigFrame.Header:Point('TOP', ChatConfigFrame, 0, 0)
hooksecurefunc(_G.ChatConfigFrameChatTabManager, 'UpdateWidth', function(tm)
for tab in tm.tabPool:EnumerateActive() do
if not tab.IsSkinned then
tab:StripTextures()
tab.IsSkinned = true
end
end
end)
-- Chat Config
local ChatFrames = {
_G.ChatConfigFrame,
_G.ChatConfigCategoryFrame,
_G.ChatConfigBackgroundFrame,
_G.ChatConfigCombatSettingsFilters,
_G.ChatConfigCombatSettingsFiltersScrollFrame,
_G.CombatConfigColorsHighlighting,
_G.CombatConfigColorsColorizeUnitName,
_G.CombatConfigColorsColorizeSpellNames,
_G.CombatConfigColorsColorizeDamageNumber,
_G.CombatConfigColorsColorizeDamageSchool,
_G.CombatConfigColorsColorizeEntireLine,
_G.ChatConfigChatSettingsLeft,
_G.ChatConfigOtherSettingsCombat,
_G.ChatConfigOtherSettingsPVP,
_G.ChatConfigOtherSettingsSystem,
_G.ChatConfigOtherSettingsCreature,
_G.ChatConfigChannelSettingsLeft,
_G.CombatConfigMessageSourcesDoneBy,
_G.CombatConfigColorsUnitColors,
_G.CombatConfigMessageSourcesDoneTo,
}
local ChatButtons = {
_G.ChatConfigFrameDefaultButton,
_G.ChatConfigFrameRedockButton,
_G.ChatConfigFrameOkayButton,
_G.ChatConfigCombatSettingsFiltersDeleteButton,
_G.ChatConfigCombatSettingsFiltersAddFilterButton,
_G.ChatConfigCombatSettingsFiltersCopyFilterButton,
_G.CombatConfigSettingsSaveButton,
_G.CombatLogDefaultButton,
}
local ChatCheckBoxs = {
_G.CombatConfigColorsHighlightingLine,
_G.CombatConfigColorsHighlightingAbility,
_G.CombatConfigColorsHighlightingDamage,
_G.CombatConfigColorsHighlightingSchool,
_G.CombatConfigColorsColorizeUnitNameCheck,
_G.CombatConfigColorsColorizeSpellNamesCheck,
_G.CombatConfigColorsColorizeSpellNamesSchoolColoring,
_G.CombatConfigColorsColorizeDamageNumberCheck,
_G.CombatConfigColorsColorizeDamageNumberSchoolColoring,
_G.CombatConfigColorsColorizeDamageSchoolCheck,
_G.CombatConfigColorsColorizeEntireLineCheck,
_G.CombatConfigFormattingShowTimeStamp,
_G.CombatConfigFormattingShowBraces,
_G.CombatConfigFormattingUnitNames,
_G.CombatConfigFormattingSpellNames,
_G.CombatConfigFormattingItemNames,
_G.CombatConfigFormattingFullText,
_G.CombatConfigSettingsShowQuickButton,
_G.CombatConfigSettingsSolo,
_G.CombatConfigSettingsParty,
_G.CombatConfigSettingsRaid,
}
for _, Frame in pairs(ChatFrames) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
for _, CheckBox in pairs(ChatCheckBoxs) do
S:HandleCheckBox(CheckBox)
end
for _, Button in pairs(ChatButtons) do
S:HandleButton(Button)
end
for i in pairs(_G.COMBAT_CONFIG_TABS) do
S:HandleTab(_G['CombatConfigTab'..i])
_G['CombatConfigTab'..i].backdrop:Point('TOPLEFT', 0, -10)
_G['CombatConfigTab'..i].backdrop:Point('BOTTOMRIGHT', -2, 3)
_G['CombatConfigTab'..i..'Text']:Point('BOTTOM', 0, 10)
end
_G.CombatConfigTab1:ClearAllPoints()
_G.CombatConfigTab1:Point('BOTTOMLEFT', _G.ChatConfigBackgroundFrame, 'TOPLEFT', 6, -2)
S:HandleEditBox(_G.CombatConfigSettingsNameEditBox)
S:HandleNextPrevButton(_G.ChatConfigMoveFilterUpButton)
S:HandleNextPrevButton(_G.ChatConfigMoveFilterDownButton)
_G.ChatConfigMoveFilterUpButton:Size(19, 19)
_G.ChatConfigMoveFilterDownButton:Size(19, 19)
_G.ChatConfigMoveFilterUpButton:Point('TOPLEFT', '$parent', 'BOTTOMLEFT', 0, -3)
_G.ChatConfigMoveFilterDownButton:Point('LEFT', _G.ChatConfigMoveFilterUpButton, 'RIGHT', 3, 0)
_G.ChatConfigFrameOkayButton:Point('RIGHT', '$parentCancelButton', 'RIGHT', -1, -3)
_G.ChatConfigFrameDefaultButton:Point('BOTTOMLEFT', 12, 10)
_G.ChatConfigCombatSettingsFiltersDeleteButton:Point('TOPRIGHT', '$parent', 'BOTTOMRIGHT', -3, -1)
_G.ChatConfigCombatSettingsFiltersAddFilterButton:Point('RIGHT', '$parentDeleteButton', 'LEFT', -2, 0)
_G.ChatConfigCombatSettingsFiltersCopyFilterButton:Point('RIGHT', '$parentAddFilterButton', 'LEFT', -2, 0)
S:HandleScrollBar(_G.ChatConfigCombatSettingsFiltersScrollFrameScrollBar)
hooksecurefunc('ChatConfig_UpdateCheckboxes', function(frame)
if not _G.FCF_GetCurrentChatFrame() then return end
for index in ipairs(frame.checkBoxTable) do
local checkBoxNameString = frame:GetName()..'CheckBox'
local checkBoxName = checkBoxNameString..index
local checkBox = _G[checkBoxName]
local check = _G[checkBoxName..'Check']
if checkBox and not checkBox.isSkinned then
checkBox:StripTextures()
S:HandleCheckBox(check)
if _G[checkBoxName..'ColorClasses'] then
S:HandleCheckBox(_G[checkBoxName..'ColorClasses'])
end
checkBox.isSkinned = true
end
end
end)
hooksecurefunc('ChatConfig_UpdateTieredCheckboxes', function(frame, index)
local group = frame.checkBoxTable[index]
local checkBox = _G[frame:GetName()..'CheckBox'..index]
if checkBox then
S:HandleCheckBox(checkBox)
end
if group.subTypes then
for k in ipairs(group.subTypes) do
S:HandleCheckBox(_G[frame:GetName()..'CheckBox'..index..'_'..k])
end
end
end)
hooksecurefunc('ChatConfig_UpdateSwatches', function(frame)
if not _G.FCF_GetCurrentChatFrame() then return end
for index in ipairs(frame.swatchTable) do
_G[frame:GetName()..'Swatch'..index]:StripTextures()
end
end)
local OptionsFrames = { _G.InterfaceOptionsFrame, _G.InterfaceOptionsFrameCategories, _G.InterfaceOptionsFramePanelContainer, _G.InterfaceOptionsFrameAddOns, _G.VideoOptionsFrame, _G.VideoOptionsFrameCategoryFrame, _G.VideoOptionsFramePanelContainer, _G.Display_, _G.Graphics_, _G.RaidGraphics_ }
local OptionsFrameBackdrops = { _G.AudioOptionsSoundPanelHardware, _G.AudioOptionsSoundPanelVolume, _G.AudioOptionsSoundPanelPlayback, _G.AudioOptionsVoicePanelTalking, _G.AudioOptionsVoicePanelListening, _G.AudioOptionsVoicePanelBinding }
local OptionsButtons = { _G.GraphicsButton, _G.RaidButton }
local InterfaceOptions = {
_G.InterfaceOptionsFrame,
_G.InterfaceOptionsControlsPanel,
_G.InterfaceOptionsCombatPanel,
_G.InterfaceOptionsCombatPanelEnemyCastBars,
_G.InterfaceOptionsCombatTextPanel,
_G.InterfaceOptionsDisplayPanel,
_G.InterfaceOptionsObjectivesPanel,
_G.InterfaceOptionsSocialPanel,
_G.InterfaceOptionsActionBarsPanel,
_G.InterfaceOptionsNamesPanel,
_G.InterfaceOptionsNamesPanelFriendly,
_G.InterfaceOptionsNamesPanelEnemy,
_G.InterfaceOptionsNamesPanelUnitNameplates,
_G.InterfaceOptionsBattlenetPanel,
_G.InterfaceOptionsCameraPanel,
_G.InterfaceOptionsMousePanel,
_G.InterfaceOptionsHelpPanel,
_G.InterfaceOptionsAccessibilityPanel,
_G.VideoOptionsFrame,
_G.Display_,
_G.Graphics_,
_G.RaidGraphics_,
_G.Advanced_,
_G.NetworkOptionsPanel,
_G.InterfaceOptionsLanguagesPanel,
_G.AudioOptionsSoundPanel,
_G.AudioOptionsSoundPanelHardware,
_G.AudioOptionsSoundPanelVolume,
_G.AudioOptionsSoundPanelPlayback,
_G.AudioOptionsVoicePanel,
_G.AudioOptionsVoicePanelTalking,
_G.AudioOptionsVoicePanelListening,
_G.AudioOptionsVoicePanelBinding,
_G.AudioOptionsVoicePanelMicTest,
_G.AudioOptionsVoicePanelChatMode1,
_G.AudioOptionsVoicePanelChatMode2,
_G.CompactUnitFrameProfiles,
_G.CompactUnitFrameProfilesGeneralOptionsFrame,
}
for _, Frame in pairs(OptionsFrames) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
local InterfaceOptionsFrame = _G.InterfaceOptionsFrame
InterfaceOptionsFrame.Header = InterfaceOptionsFrame.Header
InterfaceOptionsFrame.Header:StripTextures()
InterfaceOptionsFrame.Header:ClearAllPoints()
InterfaceOptionsFrame.Header:Point('TOP', InterfaceOptionsFrame, 0, 0)
local VideoOptionsFrame = _G.VideoOptionsFrame
VideoOptionsFrame.Header:StripTextures()
VideoOptionsFrame.Header:ClearAllPoints()
VideoOptionsFrame.Header:Point('TOP', VideoOptionsFrame, 0, 0)
for _, Frame in pairs(OptionsFrameBackdrops) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
for _, Tab in pairs(OptionsButtons) do
S:HandleButton(Tab)
end
for _, Panel in pairs(InterfaceOptions) do
if Panel then
for i = 1, Panel:GetNumChildren() do
local Child = select(i, Panel:GetChildren())
if Child:IsObjectType('CheckButton') then
S:HandleCheckBox(Child)
elseif Child:IsObjectType('Button') then
S:HandleButton(Child)
elseif Child:IsObjectType('Slider') then
S:HandleSliderFrame(Child)
elseif Child:IsObjectType('Tab') then
S:HandleTab(Child)
elseif Child:IsObjectType('Frame') and Child.Left and Child.Middle and Child.Right then
S:HandleDropDownBox(Child)
end
end
end
end
_G.InterfaceOptionsFrameTab1:Point('BOTTOMLEFT', _G.InterfaceOptionsFrameCategories, 'TOPLEFT', 6, 1)
_G.InterfaceOptionsFrameTab1:StripTextures()
_G.InterfaceOptionsFrameTab2:Point('TOPLEFT', _G.InterfaceOptionsFrameTab1, 'TOPRIGHT', 1, 0)
_G.InterfaceOptionsFrameTab2:StripTextures()
_G.InterfaceOptionsSocialPanel.EnableTwitter.Logo:SetAtlas('WoWShare-TwitterLogo')
--Create New Raid Profle
local newProfileDialog = _G.CompactUnitFrameProfilesNewProfileDialog
if newProfileDialog then
newProfileDialog:StripTextures()
newProfileDialog:CreateBackdrop('Transparent')
S:HandleDropDownBox(_G.CompactUnitFrameProfilesNewProfileDialogBaseProfileSelector)
S:HandleButton(_G.CompactUnitFrameProfilesNewProfileDialogCreateButton)
S:HandleButton(_G.CompactUnitFrameProfilesNewProfileDialogCancelButton)
if newProfileDialog.editBox then
S:HandleEditBox(newProfileDialog.editBox)
newProfileDialog.editBox:Size(210, 25)
end
end
--Delete Raid Profile
local deleteProfileDialog = _G.CompactUnitFrameProfilesDeleteProfileDialog
if deleteProfileDialog then
deleteProfileDialog:StripTextures()
deleteProfileDialog:CreateBackdrop('Transparent')
S:HandleButton(_G.CompactUnitFrameProfilesDeleteProfileDialogDeleteButton)
S:HandleButton(_G.CompactUnitFrameProfilesDeleteProfileDialogCancelButton)
end
local AudioOptionsFrame = _G.AudioOptionsFrame
AudioOptionsFrame.Header = AudioOptionsFrame.Header
AudioOptionsFrame.Header:SetAlpha(0)
AudioOptionsFrame.Header:ClearAllPoints()
AudioOptionsFrame.Header:Point('TOP', AudioOptionsFrame, 0, 0)
-- Toggle Test Audio Button - Wow 8.0
S:HandleButton(_G.AudioOptionsVoicePanel.TestInputDevice.ToggleTest)
local VUMeter = _G.AudioOptionsVoicePanelTestInputDevice.VUMeter
VUMeter:SetBackdrop()
VUMeter.Status:CreateBackdrop()
VUMeter.Status:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(VUMeter.Status)
-- PushToTalk KeybindButton - Wow 8.0
hooksecurefunc('AudioOptionsVoicePanel_InitializeCommunicationModeUI', S.AudioOptionsVoicePanel_InitializeCommunicationModeUI)
--What's New
local SplashFrame = _G.SplashFrame
SplashFrame:CreateBackdrop('Transparent')
SplashFrame.Header:FontTemplate(nil, 22)
S:HandleButton(SplashFrame.BottomCloseButton)
S:HandleCloseButton(SplashFrame.TopCloseButton)
SplashFrame.BottomCloseButton:SetFrameLevel(SplashFrame.BottomCloseButton:GetFrameLevel() + 1)
-- New Voice Sliders
S:HandleSliderFrame(_G.UnitPopupVoiceSpeakerVolume.Slider)
S:HandleSliderFrame(_G.UnitPopupVoiceMicrophoneVolume.Slider)
S:HandleSliderFrame(_G.UnitPopupVoiceUserVolume.Slider)
end
S:AddCallback('BlizzardOptions')

View File

@@ -0,0 +1,241 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, select, unpack = ipairs, select, unpack
local CLASS_SORT_ORDER = CLASS_SORT_ORDER
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
local hooksecurefunc = hooksecurefunc
function S:Blizzard_Calendar()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.calendar) then return end
local CalendarFrame = _G.CalendarFrame
CalendarFrame:DisableDrawLayer('BORDER')
CalendarFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.CalendarCloseButton)
_G.CalendarCloseButton:Point('TOPRIGHT', CalendarFrame, 'TOPRIGHT', -4, -4)
for i = 1, 7 do
_G['CalendarWeekday'..i..'Background']:SetAlpha(0)
end
_G.CalendarViewEventDivider:Hide()
_G.CalendarCreateEventDivider:Hide()
_G.CalendarViewEventInviteList:GetRegions():Hide()
_G.CalendarViewEventDescriptionContainer:GetRegions():Hide()
select(5, _G.CalendarCreateEventCloseButton:GetRegions()):Hide()
select(5, _G.CalendarViewEventCloseButton:GetRegions()):Hide()
select(5, _G.CalendarViewHolidayCloseButton:GetRegions()):Hide()
select(5, _G.CalendarViewRaidCloseButton:GetRegions()):Hide()
select(5, _G.CalendarMassInviteCloseButton:GetRegions()):Hide()
--_G.CalendarCreateEventBackground:Hide()
_G.CalendarCreateEventFrameButtonBackground:Hide()
_G.CalendarCreateEventMassInviteButtonBorder:Hide()
_G.CalendarCreateEventCreateButtonBorder:Hide()
_G.CalendarEventPickerFrameButtonBackground:Hide()
_G.CalendarEventPickerCloseButtonBorder:Hide()
_G.CalendarCreateEventRaidInviteButtonBorder:Hide()
_G.CalendarMonthBackground:SetAlpha(0)
_G.CalendarYearBackground:SetAlpha(0)
_G.CalendarFrameModalOverlay:SetAlpha(.25)
_G.CalendarViewHolidayInfoTexture:SetAlpha(0)
_G.CalendarTexturePickerFrameButtonBackground:Hide()
_G.CalendarTexturePickerAcceptButtonBorder:Hide()
_G.CalendarTexturePickerCancelButtonBorder:Hide()
_G.CalendarClassTotalsButtonBackgroundTop:Hide()
_G.CalendarClassTotalsButtonBackgroundMiddle:Hide()
_G.CalendarClassTotalsButtonBackgroundBottom:Hide()
_G.CalendarFilterFrameLeft:Hide()
_G.CalendarFilterFrameMiddle:Hide()
_G.CalendarFilterFrameRight:Hide()
S:HandleNextPrevButton(_G.CalendarPrevMonthButton, nil, nil, true)
S:HandleNextPrevButton(_G.CalendarNextMonthButton, nil, nil, true)
_G.CalendarFilterFrame:StripTextures()
_G.CalendarFilterFrame:Width(155)
_G.CalendarFilterFrameText:ClearAllPoints()
_G.CalendarFilterFrameText:Point('RIGHT', _G.CalendarFilterButton, 'LEFT', -2, 0)
_G.CalendarFilterButton:ClearAllPoints()
_G.CalendarFilterButton:Point('RIGHT', _G.CalendarFilterFrame, 'RIGHT', -10, 3)
_G.CalendarFilterButton.SetPoint = E.noop
S:HandleNextPrevButton(_G.CalendarFilterButton)
_G.CalendarFilterFrame:CreateBackdrop()
_G.CalendarFilterFrame.backdrop:Point('TOPLEFT', 20, 2)
_G.CalendarFilterFrame.backdrop:Point('BOTTOMRIGHT', _G.CalendarFilterButton, 'BOTTOMRIGHT', 2, -2)
_G.CalendarContextMenu:SetTemplate()
_G.CalendarContextMenu.SetBackdropColor = E.noop
_G.CalendarContextMenu.SetBackdropBorderColor = E.noop
_G.CalendarInviteStatusContextMenu:SetTemplate()
_G.CalendarInviteStatusContextMenu.SetBackdropColor = E.noop
_G.CalendarInviteStatusContextMenu.SetBackdropBorderColor = E.noop
--Boost frame levels
for i = 1, 42 do
_G['CalendarDayButton'..i..'DarkFrame']:SetAlpha(.5)
local bu = _G['CalendarDayButton'..i]
if E.private.skins.parchmentRemoverEnable then
bu:DisableDrawLayer('BACKGROUND') -- This would remove the 'Parchement'
end
bu:CreateBackdrop(nil, nil, nil, true)
bu.backdrop:SetBackdropColor(0,0,0,0)
bu:SetHighlightTexture(E.media.glossTex)
bu:SetFrameLevel(bu:GetFrameLevel() + 1)
local hl = bu:GetHighlightTexture()
hl:SetVertexColor(1, 1, 1, 0.3)
hl.SetAlpha = E.noop
hl:Point('TOPLEFT', -1, 1)
hl:Point('BOTTOMRIGHT')
end
_G.CalendarWeekdaySelectedTexture:SetDesaturated(true)
_G.CalendarWeekdaySelectedTexture:SetVertexColor(1, 1, 1, 0.6)
hooksecurefunc('CalendarFrame_SetToday', function()
_G.CalendarTodayFrame:SetAllPoints()
end)
_G.CalendarTodayFrame:SetScript('OnUpdate', nil)
_G.CalendarTodayTextureGlow:Hide()
_G.CalendarTodayTexture:Hide()
_G.CalendarTodayFrame:CreateBackdrop()
_G.CalendarTodayFrame.backdrop:SetBackdropBorderColor(_G.NORMAL_FONT_COLOR:GetRGB())
_G.CalendarTodayFrame.backdrop:SetBackdropColor(0,0,0,0)
--CreateEventFrame
_G.CalendarCreateEventFrame:StripTextures()
_G.CalendarCreateEventFrame:CreateBackdrop('Transparent')
_G.CalendarCreateEventFrame:Point('TOPLEFT', CalendarFrame, 'TOPRIGHT', 3, -24)
_G.CalendarCreateEventFrame.Header:StripTextures()
S:HandleButton(_G.CalendarCreateEventCreateButton, true)
S:HandleButton(_G.CalendarCreateEventMassInviteButton, true)
S:HandleButton(_G.CalendarCreateEventInviteButton, true)
_G.CalendarCreateEventInviteButton:Point('TOPLEFT', _G.CalendarCreateEventInviteEdit, 'TOPRIGHT', 4, 1)
_G.CalendarCreateEventInviteEdit:Width(_G.CalendarCreateEventInviteEdit:GetWidth() - 2)
_G.CalendarCreateEventInviteList:StripTextures()
_G.CalendarCreateEventInviteList:CreateBackdrop()
S:HandleEditBox(_G.CalendarCreateEventInviteEdit)
S:HandleEditBox(_G.CalendarCreateEventTitleEdit)
S:HandleDropDownBox(_G.CalendarCreateEventTypeDropDown, 120)
S:HandleDropDownBox(_G.CalendarCreateEventCommunityDropDown, 240)
_G.CalendarCreateEventDescriptionContainer:StripTextures()
_G.CalendarCreateEventDescriptionContainer:SetTemplate()
S:HandleCloseButton(_G.CalendarCreateEventCloseButton)
S:HandleCheckBox(_G.CalendarCreateEventLockEventCheck)
S:HandleDropDownBox(_G.CalendarCreateEventHourDropDown, 68)
S:HandleDropDownBox(_G.CalendarCreateEventMinuteDropDown, 68)
S:HandleDropDownBox(_G.CalendarCreateEventAMPMDropDown, 68)
S:HandleDropDownBox(_G.CalendarCreateEventDifficultyOptionDropDown)
--S:HandleDropDownBox(CalendarCreateEventRepeatOptionDropDown, 120)
_G.CalendarCreateEventIcon:SetTexCoord(unpack(E.TexCoords))
_G.CalendarCreateEventIcon.SetTexCoord = E.noop
_G.CalendarCreateEventInviteListSection:StripTextures()
_G.CalendarClassButtonContainer:HookScript('OnShow', function()
for i, class in ipairs(CLASS_SORT_ORDER) do
local button = _G['CalendarClassButton'..i]
local tcoords = CLASS_ICON_TCOORDS[class]
local buttonIcon = button:GetNormalTexture()
buttonIcon:SetTexture([[Interface\Glues\CharacterCreate\UI-CharacterCreate-Classes]])
buttonIcon:SetTexCoord(tcoords[1] + 0.015, tcoords[2] - 0.02, tcoords[3] + 0.018, tcoords[4] - 0.02) --F U C K I N G H A X
end
end)
_G.CalendarClassButton1:Point('TOPLEFT', _G.CalendarClassButtonContainer, 'TOPLEFT', E.PixelMode and 4 or 8, 0)
for i = 1, #CLASS_SORT_ORDER do
local button = _G['CalendarClassButton'..i]
button:StripTextures()
button:CreateBackdrop()
button:Size(24)
end
_G.CalendarClassTotalsButton:StripTextures()
_G.CalendarClassTotalsButton:CreateBackdrop()
_G.CalendarClassTotalsButton:Width(24)
--Texture Picker Frame
_G.CalendarTexturePickerFrame:StripTextures()
_G.CalendarTexturePickerFrame.Header:StripTextures()
_G.CalendarTexturePickerFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.CalendarTexturePickerScrollBar)
S:HandleButton(_G.CalendarTexturePickerAcceptButton, true)
S:HandleButton(_G.CalendarTexturePickerCancelButton, true)
S:HandleButton(_G.CalendarCreateEventInviteButton, true)
S:HandleButton(_G.CalendarCreateEventRaidInviteButton, true)
--Mass Invite Frame
_G.CalendarMassInviteFrame:StripTextures()
_G.CalendarMassInviteFrame:CreateBackdrop('Transparent')
_G.CalendarMassInviteFrame.Header:StripTextures()
S:HandleCloseButton(_G.CalendarMassInviteCloseButton)
--Raid View
_G.CalendarViewRaidFrame:StripTextures()
_G.CalendarViewRaidFrame:CreateBackdrop('Transparent')
_G.CalendarViewRaidFrame:Point('TOPLEFT', CalendarFrame, 'TOPRIGHT', 3, -24)
_G.CalendarViewRaidFrame.Header:StripTextures()
S:HandleCloseButton(_G.CalendarViewRaidCloseButton)
--Holiday View
_G.CalendarViewHolidayFrame:StripTextures(true)
_G.CalendarViewHolidayFrame:CreateBackdrop('Transparent')
_G.CalendarViewHolidayFrame:Point('TOPLEFT', CalendarFrame, 'TOPRIGHT', 3, -24)
_G.CalendarViewHolidayFrame.Header:StripTextures()
S:HandleCloseButton(_G.CalendarViewHolidayCloseButton)
-- Event View
_G.CalendarViewEventFrame:StripTextures()
_G.CalendarViewEventFrame:CreateBackdrop('Transparent')
_G.CalendarViewEventFrame:Point('TOPLEFT', CalendarFrame, 'TOPRIGHT', 3, -24)
_G.CalendarViewEventFrame.Header:StripTextures()
_G.CalendarViewHolidayFrame.Header:StripTextures()
_G.CalendarViewEventDescriptionContainer:StripTextures()
_G.CalendarViewEventDescriptionContainer:CreateBackdrop('Transparent')
_G.CalendarViewEventInviteList:StripTextures()
_G.CalendarViewEventInviteList:CreateBackdrop('Transparent')
_G.CalendarViewEventInviteListSection:StripTextures()
S:HandleCloseButton(_G.CalendarViewEventCloseButton)
S:HandleScrollBar(_G.CalendarViewEventInviteListScrollFrameScrollBar)
S:HandleButton(_G.CalendarViewEventAcceptButton)
S:HandleButton(_G.CalendarViewEventTentativeButton)
S:HandleButton(_G.CalendarViewEventRemoveButton)
S:HandleButton(_G.CalendarViewEventDeclineButton)
--Event Picker Frame
_G.CalendarEventPickerFrame:StripTextures()
_G.CalendarEventPickerFrame.Header:StripTextures()
_G.CalendarEventPickerFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.CalendarEventPickerScrollBar)
S:HandleButton(_G.CalendarEventPickerCloseButton, true)
S:HandleScrollBar(_G.CalendarCreateEventDescriptionScrollFrameScrollBar)
S:HandleScrollBar(_G.CalendarCreateEventInviteListScrollFrameScrollBar)
S:HandleScrollBar(_G.CalendarViewEventDescriptionScrollFrameScrollBar)
end
S:AddCallbackForAddon('Blizzard_Calendar')

View File

@@ -0,0 +1,46 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
function S:Blizzard_Channels()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.channels) then return end
local ChannelFrame = _G.ChannelFrame
local CreateChannelPopup = _G.CreateChannelPopup
S:HandlePortraitFrame(ChannelFrame)
CreateChannelPopup:StripTextures()
CreateChannelPopup:CreateBackdrop('Transparent')
S:HandleButton(ChannelFrame.NewButton)
S:HandleButton(ChannelFrame.SettingsButton)
S:HandleScrollBar(ChannelFrame.ChannelRoster.ScrollFrame.scrollBar)
ChannelFrame.ChannelRoster.ScrollFrame.scrollBar:Point('TOPLEFT', ChannelFrame.ChannelRoster.ScrollFrame, 'TOPRIGHT', 1, -13)
ChannelFrame.ChannelRoster.ScrollFrame.scrollBar:Point('BOTTOMLEFT', ChannelFrame.ChannelRoster.ScrollFrame, 'BOTTOMRIGHT', 1, 13)
S:HandleScrollBar(ChannelFrame.ChannelList.ScrollBar)
ChannelFrame.ChannelList.ScrollBar:Point('BOTTOMLEFT', ChannelFrame.ChannelList, 'BOTTOMRIGHT', 0, 15)
S:HandleCloseButton(CreateChannelPopup.CloseButton)
S:HandleButton(CreateChannelPopup.OKButton)
S:HandleButton(CreateChannelPopup.CancelButton)
S:HandleEditBox(CreateChannelPopup.Name)
S:HandleEditBox(CreateChannelPopup.Password)
_G.VoiceChatPromptActivateChannel:StripTextures()
_G.VoiceChatPromptActivateChannel:CreateBackdrop('Transparent')
S:HandleButton(_G.VoiceChatPromptActivateChannel.AcceptButton)
S:HandleCloseButton(_G.VoiceChatPromptActivateChannel.CloseButton)
-- Hide the Channel Header Textures
hooksecurefunc(_G.ChannelButtonHeaderMixin, 'Update', function(s)
s:CreateBackdrop('Transparent')
s.NormalTexture:SetTexture()
end)
end
S:AddCallbackForAddon('Blizzard_Channels')

View File

@@ -0,0 +1,503 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack, select = unpack, select
local pairs, ipairs, type = pairs, ipairs, type
local EquipmentManager_GetItemInfoByLocation = EquipmentManager_GetItemInfoByLocation
local FauxScrollFrame_GetOffset = FauxScrollFrame_GetOffset
local GetFactionInfo = GetFactionInfo
local GetNumFactions = GetNumFactions
local hooksecurefunc = hooksecurefunc
local IsAddOnLoaded = IsAddOnLoaded
local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS
local FLYOUT_LOCATIONS = {
[0xFFFFFFFF] = 'PLACEINBAGS',
[0xFFFFFFFE] = 'IGNORESLOT',
[0xFFFFFFFD] = 'UNIGNORESLOT'
}
local function UpdateAzeriteItem(self)
if not self.styled then
self.styled = true
self.AzeriteTexture:SetAlpha(0)
self.RankFrame.Texture:SetTexture()
self.RankFrame.Label:FontTemplate(nil, nil, 'OUTLINE')
end
end
local function UpdateAzeriteEmpoweredItem(self)
self.AzeriteTexture:SetAtlas('AzeriteIconFrame')
self.AzeriteTexture:SetInside()
self.AzeriteTexture:SetTexCoord(unpack(E.TexCoords))
self.AzeriteTexture:SetDrawLayer('BORDER', 1)
end
local function ColorizeStatPane(frame)
if frame.leftGrad then return end
local r, g, b = 0.8, 0.8, 0.8
frame.leftGrad = frame:CreateTexture(nil, 'BORDER')
frame.leftGrad:Size(80, frame:GetHeight())
frame.leftGrad:Point('LEFT', frame, 'CENTER')
frame.leftGrad:SetTexture(E.Media.Textures.White8x8)
frame.leftGrad:SetGradientAlpha('Horizontal', r, g, b, 0.25, r, g, b, 0)
frame.rightGrad = frame:CreateTexture(nil, 'BORDER')
frame.rightGrad:Size(80, frame:GetHeight())
frame.rightGrad:Point('RIGHT', frame, 'CENTER')
frame.rightGrad:SetTexture(E.Media.Textures.White8x8)
frame.rightGrad:SetGradientAlpha('Horizontal', r, g, b, 0, r, g, b, 0.25)
end
local function StatsPane(which)
local CharacterStatsPane = _G.CharacterStatsPane
CharacterStatsPane[which]:StripTextures()
CharacterStatsPane[which]:CreateBackdrop('Transparent')
CharacterStatsPane[which].backdrop:ClearAllPoints()
CharacterStatsPane[which].backdrop:Point('CENTER')
CharacterStatsPane[which].backdrop:Size(150, 18)
end
local function EquipmentUpdateItems()
local anchor = _G.EquipmentFlyoutFrame.buttonFrame
if not anchor.backdrop then
anchor:StripTextures()
anchor:CreateBackdrop('Transparent')
end
local width, height = anchor:GetSize()
anchor:Size(width+3, height)
end
local function EquipmentDisplayButton(button)
local location, border = button.location, button.IconBorder
if not location or not border then return end
local id = button.id or button:GetID()
if not id then return end
if not button.isHooked then
local oldTex = button.icon:GetTexture()
button:StripTextures()
button:StyleButton(false)
button:GetNormalTexture():SetTexture()
button.icon:SetInside()
button.icon:SetTexCoord(unpack(E.TexCoords))
button.icon:SetTexture(oldTex)
if not button.backdrop then
button:CreateBackdrop()
button.backdrop:SetAllPoints()
S:HandleIconBorder(button.IconBorder)
end
button.isHooked = true
end
local r, g, b, a = unpack(E.media.bordercolor)
if FLYOUT_LOCATIONS[location] then -- special slots
button.backdrop:SetBackdropBorderColor(r, g, b, a)
else
local quality = select(13, EquipmentManager_GetItemInfoByLocation(location))
if not quality or quality == 0 then
button.backdrop:SetBackdropBorderColor(r, g, b, a)
else
local color = ITEM_QUALITY_COLORS[quality]
button.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
end
end
local function FixSidebarTabCoords()
for i=1, #_G.PAPERDOLL_SIDEBARS do
local tab = _G['PaperDollSidebarTab'..i]
if tab and not tab.backdrop then
tab:CreateBackdrop()
tab.Icon:SetAllPoints()
tab.Highlight:SetColorTexture(1, 1, 1, 0.3)
tab.Highlight:SetAllPoints()
-- Check for DejaCharacterStats. Lets hide the Texture if the AddOn is loaded.
if IsAddOnLoaded('DejaCharacterStats') then
tab.Hider:SetTexture()
else
tab.Hider:SetColorTexture(0, 0, 0, 0.8)
end
tab.Hider:SetAllPoints(tab.backdrop)
tab.TabBg:Kill()
if i == 1 then
for x=1, tab:GetNumRegions() do
local region = select(x, tab:GetRegions())
region:SetTexCoord(0.16, 0.86, 0.16, 0.86)
hooksecurefunc(region, 'SetTexCoord', function(self, x1)
if x1 ~= 0.16001 then
self:SetTexCoord(0.16001, 0.86, 0.16, 0.86)
end
end)
end
end
end
end
end
local function UpdateFactionSkins()
_G.ReputationListScrollFrame:StripTextures()
_G.ReputationFrame:StripTextures(true)
local factionOffset = FauxScrollFrame_GetOffset(_G.ReputationListScrollFrame)
local numFactions = GetNumFactions()
for i = 1, _G.NUM_FACTIONS_DISPLAYED, 1 do
local statusbar = _G['ReputationBar'..i..'ReputationBar']
local button = _G['ReputationBar'..i..'ExpandOrCollapseButton']
local factionIndex = factionOffset + i
local _, _, _, _, _, _, _, _, _, isCollapsed = GetFactionInfo(factionIndex)
if factionIndex <= numFactions then
if button then
if isCollapsed then
button:SetNormalTexture(E.Media.Textures.PlusButton)
else
button:SetNormalTexture(E.Media.Textures.MinusButton)
end
end
end
if statusbar then
statusbar:SetStatusBarTexture(E.media.normTex)
if not statusbar.backdrop then
statusbar:CreateBackdrop()
E:RegisterStatusBar(statusbar)
end
_G['ReputationBar'..i..'Background']:SetTexture()
_G['ReputationBar'..i..'ReputationBarHighlight1']:SetTexture()
_G['ReputationBar'..i..'ReputationBarHighlight2']:SetTexture()
_G['ReputationBar'..i..'ReputationBarAtWarHighlight1']:SetTexture()
_G['ReputationBar'..i..'ReputationBarAtWarHighlight2']:SetTexture()
_G['ReputationBar'..i..'ReputationBarLeftTexture']:SetTexture()
_G['ReputationBar'..i..'ReputationBarRightTexture']:SetTexture()
end
end
local ReputationDetailFrame = _G.ReputationDetailFrame
ReputationDetailFrame:StripTextures()
ReputationDetailFrame:ClearAllPoints()
ReputationDetailFrame:Point('TOPLEFT', _G.ReputationFrame, 'TOPRIGHT', 4, -28)
if not ReputationDetailFrame.backdrop then
ReputationDetailFrame:CreateBackdrop('Transparent')
end
end
local function UpdateCurrencySkins()
local TokenFramePopup = _G.TokenFramePopup
if TokenFramePopup then
TokenFramePopup:StripTextures()
TokenFramePopup:ClearAllPoints()
TokenFramePopup:Point('TOPLEFT', _G.TokenFrame, 'TOPRIGHT', 4, -28)
if not TokenFramePopup.backdrop then
TokenFramePopup:CreateBackdrop('Transparent')
end
end
local TokenFrameContainer = _G.TokenFrameContainer
if not TokenFrameContainer.buttons then return end
local buttons = TokenFrameContainer.buttons
local numButtons = #buttons
for i=1, numButtons do
local button = buttons[i]
if button then
if button.highlight then button.highlight:Kill() end
if button.categoryLeft then button.categoryLeft:Kill() end
if button.categoryRight then button.categoryRight:Kill() end
if button.categoryMiddle then button.categoryMiddle:Kill() end
if not button.backdrop then
button:CreateBackdrop(nil, nil, nil, true)
end
if button.icon then
button.icon:SetTexCoord(unpack(E.TexCoords))
button.icon:Size(17, 17)
button.backdrop:SetOutside(button.icon, 1, 1)
button.backdrop:Show()
else
button.backdrop:Hide()
end
if button.expandIcon then
if not button.highlightTexture then
button.highlightTexture = button:CreateTexture(button:GetName()..'HighlightTexture', 'HIGHLIGHT')
button.highlightTexture:SetTexture([[Interface\Buttons\UI-PlusButton-Hilight]])
button.highlightTexture:SetBlendMode('ADD')
button.highlightTexture:SetInside(button.expandIcon)
-- these two only need to be called once
-- adding them here will prevent additional calls
button.expandIcon:Point('LEFT', 4, 0)
button.expandIcon:Size(15, 15)
end
if button.isHeader then
button.backdrop:Hide()
if button.isExpanded then
button.expandIcon:SetTexture(E.Media.Textures.MinusButton)
button.expandIcon:SetTexCoord(0,1,0,1)
else
button.expandIcon:SetTexture(E.Media.Textures.PlusButton)
button.expandIcon:SetTexCoord(0,1,0,1)
end
button.highlightTexture:Show()
else
button.highlightTexture:Hide()
end
end
end
end
end
function S:CharacterFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.character) then return end
-- General
local CharacterFrame = _G.CharacterFrame
S:HandlePortraitFrame(CharacterFrame)
S:HandleScrollBar(_G.ReputationListScrollFrameScrollBar)
S:HandleScrollBar(_G.TokenFrameContainerScrollBar)
S:HandleScrollBar(_G.GearManagerDialogPopupScrollFrameScrollBar)
for _, Slot in pairs({_G.PaperDollItemsFrame:GetChildren()}) do
if Slot:IsObjectType('Button') or Slot:IsObjectType('ItemButton') then
S:HandleIcon(Slot.icon)
Slot:StripTextures()
Slot:CreateBackdrop()
Slot.backdrop:SetAllPoints()
Slot.backdrop:SetFrameLevel(Slot:GetFrameLevel())
Slot:StyleButton(Slot)
Slot.icon:SetInside()
Slot.ignoreTexture:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent]])
S:HandleIconBorder(Slot.IconBorder)
if Slot.popoutButton:GetPoint() == 'TOP' then
Slot.popoutButton:Point('TOP', Slot, 'BOTTOM', 0, 2)
else
Slot.popoutButton:Point('LEFT', Slot, 'RIGHT', -2, 0)
end
E:RegisterCooldown(_G[Slot:GetName()..'Cooldown'])
hooksecurefunc(Slot, 'DisplayAsAzeriteItem', UpdateAzeriteItem)
hooksecurefunc(Slot, 'DisplayAsAzeriteEmpoweredItem', UpdateAzeriteEmpoweredItem)
end
end
hooksecurefunc('PaperDollItemSlotButton_Update', function(slot)
local highlight = slot:GetHighlightTexture()
highlight:SetTexture(E.Media.Textures.White8x8)
highlight:SetVertexColor(1, 1, 1, .25)
highlight:SetInside()
end)
--Give character frame model backdrop it's color back
for _, corner in pairs({'TopLeft','TopRight','BotLeft','BotRight'}) do
local bg = _G['CharacterModelFrameBackground'..corner];
if bg then
bg:SetDesaturated(false);
bg.ignoreDesaturated = true; -- so plugins can prevent this if they want.
hooksecurefunc(bg, 'SetDesaturated', function(bckgnd, value)
if value and bckgnd.ignoreDesaturated then
bckgnd:SetDesaturated(false);
end
end)
end
end
_G.CharacterLevelText:FontTemplate()
_G.CharacterStatsPane.ItemLevelFrame.Value:FontTemplate(nil, 20)
_G.CharacterStatsPane.ItemLevelFrame.Background:SetAlpha(0)
ColorizeStatPane(_G.CharacterStatsPane.ItemLevelFrame)
hooksecurefunc('PaperDollFrame_UpdateStats', function()
if IsAddOnLoaded('DejaCharacterStats') then return end
for _, Table in ipairs({_G.CharacterStatsPane.statsFramePool:EnumerateActive()}) do
if type(Table) == 'table' then
for statFrame in pairs(Table) do
ColorizeStatPane(statFrame)
if statFrame.Background:IsShown() then
statFrame.leftGrad:Show()
statFrame.rightGrad:Show()
else
statFrame.leftGrad:Hide()
statFrame.rightGrad:Hide()
end
end
end
end
end)
if not IsAddOnLoaded('DejaCharacterStats') then
StatsPane('EnhancementsCategory')
StatsPane('ItemLevelCategory')
StatsPane('AttributesCategory')
end
--Strip Textures
local charframe = {
'CharacterModelFrame',
'CharacterFrameInset',
'CharacterStatsPane',
'CharacterFrameInsetRight',
'PaperDollSidebarTabs',
'PaperDollEquipmentManagerPane',
}
S:HandleCloseButton(_G.ReputationDetailCloseButton)
S:HandleCloseButton(_G.TokenFramePopupCloseButton)
S:HandleCheckBox(_G.ReputationDetailAtWarCheckBox)
S:HandleCheckBox(_G.ReputationDetailMainScreenCheckBox)
S:HandleCheckBox(_G.ReputationDetailInactiveCheckBox)
--S:HandleCheckBox(_G.ReputationDetailLFGBonusReputationCheckBox)
S:HandleCheckBox(_G.TokenFramePopupInactiveCheckBox)
S:HandleCheckBox(_G.TokenFramePopupBackpackCheckBox)
_G.EquipmentFlyoutFrameHighlight:StripTextures()
_G.EquipmentFlyoutFrameButtons.bg1:SetAlpha(0)
_G.EquipmentFlyoutFrameButtons:DisableDrawLayer('ARTWORK')
_G.EquipmentFlyoutFrame.NavigationFrame:StripTextures()
_G.EquipmentFlyoutFrame.NavigationFrame:CreateBackdrop('Transparent')
_G.EquipmentFlyoutFrame.NavigationFrame:Point('TOPLEFT', _G.EquipmentFlyoutFrameButtons, 'BOTTOMLEFT', 0, -E.Border - E.Spacing)
_G.EquipmentFlyoutFrame.NavigationFrame:Point('TOPRIGHT', _G.EquipmentFlyoutFrameButtons, 'BOTTOMRIGHT', 0, -E.Border - E.Spacing)
S:HandleNextPrevButton(_G.EquipmentFlyoutFrame.NavigationFrame.PrevButton)
S:HandleNextPrevButton(_G.EquipmentFlyoutFrame.NavigationFrame.NextButton)
--Swap item flyout frame (shown when holding alt over a slot)
hooksecurefunc('EquipmentFlyout_UpdateItems', EquipmentUpdateItems)
hooksecurefunc('EquipmentFlyout_DisplayButton', EquipmentDisplayButton)
--Icon in upper right corner of character frame
_G.CharacterFramePortrait:Kill()
local scrollbars = {
'PaperDollTitlesPaneScrollBar',
'PaperDollEquipmentManagerPaneScrollBar',
}
for _, scrollbar in pairs(scrollbars) do
S:HandleScrollBar(_G[scrollbar], 5)
end
for _, object in pairs(charframe) do
_G[object]:StripTextures()
end
--Re-add the overlay texture which was removed right above via StripTextures
_G.CharacterModelFrameBackgroundOverlay:SetColorTexture(0, 0, 0)
_G.CharacterModelFrame:CreateBackdrop()
_G.CharacterModelFrame.backdrop:Point('TOPLEFT', E.PixelMode and -1 or -2, E.PixelMode and 1 or 2)
_G.CharacterModelFrame.backdrop:Point('BOTTOMRIGHT', E.PixelMode and 1 or 2, E.PixelMode and -2 or -3)
local controlButtons = {
'CharacterModelFrameControlFrameZoomInButton',
'CharacterModelFrameControlFrameZoomOutButton',
'CharacterModelFrameControlFrameRotateLeftButton',
'CharacterModelFrameControlFrameRotateRightButton',
'CharacterModelFrameControlFrameRotateResetButton',
}
_G.CharacterModelFrameControlFrame:StripTextures()
for _, button in pairs(controlButtons) do
S:HandleButton(_G[button])
end
--Titles
_G.PaperDollTitlesPane:HookScript('OnShow', function()
for _, object in pairs(_G.PaperDollTitlesPane.buttons) do
object.BgTop:SetTexture()
object.BgBottom:SetTexture()
object.BgMiddle:SetTexture()
object.text:FontTemplate()
if not object.text.hooked then
object.text.hooked = true
hooksecurefunc(object.text, 'SetFont', function(txt, font)
if font ~= E.media.normFont then
txt:FontTemplate()
end
end)
end
end
end)
--Equipement Manager
S:HandleButton(_G.PaperDollEquipmentManagerPaneEquipSet)
S:HandleButton(_G.PaperDollEquipmentManagerPaneSaveSet)
_G.PaperDollEquipmentManagerPaneEquipSet:Width(_G.PaperDollEquipmentManagerPaneEquipSet:GetWidth() - 8)
_G.PaperDollEquipmentManagerPaneSaveSet:Width(_G.PaperDollEquipmentManagerPaneSaveSet:GetWidth() - 8)
_G.PaperDollEquipmentManagerPaneEquipSet:Point('TOPLEFT', _G.PaperDollEquipmentManagerPane, 'TOPLEFT', 8, 0)
_G.PaperDollEquipmentManagerPaneSaveSet:Point('LEFT', _G.PaperDollEquipmentManagerPaneEquipSet, 'RIGHT', 4, 0)
--Itemset buttons
for _, object in pairs(_G.PaperDollEquipmentManagerPane.buttons) do
object.BgTop:SetTexture()
object.BgBottom:SetTexture()
object.BgMiddle:SetTexture()
object.icon:Size(36, 36)
object.icon:SetTexCoord(unpack(E.TexCoords))
--Making all icons the same size and position because otherwise BlizzardUI tries to attach itself to itself when it refreshes
object.icon:Point('LEFT', object, 'LEFT', 4, 0)
hooksecurefunc(object.icon, 'SetPoint', function(icn, _, _, _, _, _, forced)
if forced ~= true then
icn:Point('LEFT', object, 'LEFT', 4, 0, true)
end
end)
hooksecurefunc(object.icon, 'SetSize', function(icn, width, height)
if width == 30 or height == 30 then
icn:Size(36, 36)
end
end)
end
--Icon selection frame
S:HandleIconSelectionFrame(_G.GearManagerDialogPopup, _G.NUM_GEARSET_ICONS_SHOWN, 'GearManagerDialogPopupButton')
S:HandleButton(_G.GearManagerDialogPopupOkay)
S:HandleButton(_G.GearManagerDialogPopupCancel)
S:HandleEditBox(_G.GearManagerDialogPopupEditBox)
--Handle Tabs at bottom of character frame
for i=1, 4 do
S:HandleTab(_G['CharacterFrameTab'..i])
end
hooksecurefunc('ExpandFactionHeader', UpdateFactionSkins)
hooksecurefunc('CollapseFactionHeader', UpdateFactionSkins)
hooksecurefunc('ReputationFrame_Update', UpdateFactionSkins)
--Buttons used to toggle between equipment manager, titles, and character stats
hooksecurefunc('PaperDollFrame_UpdateSidebarTabs', FixSidebarTabCoords)
--Currency
hooksecurefunc('TokenFrame_Update', UpdateCurrencySkins)
hooksecurefunc(_G.TokenFrameContainer, 'update', UpdateCurrencySkins)
end
S:AddCallback('CharacterFrame')

View File

@@ -0,0 +1,30 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_ChromieTimeUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.chromieTime) then return end
local frame = _G.ChromieTimeFrame
S:HandleCloseButton(frame.CloseButton)
S:HandleButton(frame.SelectButton)
if E.private.skins.parchmentRemoverEnable then
frame:StripTextures()
frame.Background:Hide()
frame:CreateBackdrop('Transparent')
local Title = frame.Title
Title:DisableDrawLayer('BACKGROUND')
Title:CreateBackdrop('Transparent')
local InfoFrame = frame.CurrentlySelectedExpansionInfoFrame
InfoFrame:DisableDrawLayer('BACKGROUND')
InfoFrame:CreateBackdrop('Transparent')
InfoFrame.Name:SetTextColor(1, .8, 0)
InfoFrame.Description:SetTextColor(1, 1, 1)
end
end
S:AddCallbackForAddon('Blizzard_ChromieTimeUI')

View File

@@ -0,0 +1,647 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local ipairs, pairs, unpack = ipairs, pairs, unpack
local CreateFrame = CreateFrame
local GetItemInfo = GetItemInfo
local PlayerHasToy = PlayerHasToy
local hooksecurefunc = hooksecurefunc
local BAG_ITEM_QUALITY_COLORS = BAG_ITEM_QUALITY_COLORS
local GetItemQualityColor = GetItemQualityColor
local C_Heirloom_PlayerHasHeirloom = C_Heirloom.PlayerHasHeirloom
local C_TransmogCollection_GetSourceInfo = C_TransmogCollection.GetSourceInfo
local function toyTextColor(text, r, g, b)
if r == 0.33 and g == 0.27 and b == 0.2 then
text:SetTextColor(0.4, 0.4, 0.4)
elseif r == 1 and g == 0.82 and b == 0 then
text:SetTextColor(0.9, 0.9, 0.9)
end
end
local function petNameColor(iconBorder, r, g, b)
local parent = iconBorder:GetParent()
if not parent.name then return end
if parent.isDead and parent.isDead:IsShown() then
parent.name:SetTextColor(0.9, 0.3, 0.3)
elseif r and parent.owned then
parent.name:SetTextColor(r, g, b)
else
parent.name:SetTextColor(0.4, 0.4, 0.4)
end
end
local function mountNameColor(self)
local button = self:GetParent()
local name = button.name
if name:GetFontObject() == _G.GameFontDisable then
name:SetTextColor(0.4, 0.4, 0.4)
else
if button.background then
local _, g, b = button.background:GetVertexColor()
if g == 0 and b == 0 then
name:SetTextColor(0.9, 0.3, 0.3)
return
end
end
name:SetTextColor(0.9, 0.9, 0.9)
end
end
local function selectedTextureSetShown(texture, shown) -- used sets list
local parent = texture:GetParent()
local icon = parent.icon or parent.Icon
if shown then
parent.backdrop:SetBackdropBorderColor(1, .8, .1)
icon.backdrop:SetBackdropBorderColor(1, .8, .1)
else
local r, g, b = unpack(E.media.bordercolor)
parent.backdrop:SetBackdropBorderColor(r, g, b)
icon.backdrop:SetBackdropBorderColor(r, g, b)
end
end
local function selectedTextureShow(texture) -- used for pets/mounts
local parent = texture:GetParent()
parent.backdrop:SetBackdropBorderColor(1, .8, .1)
parent.icon.backdrop:SetBackdropBorderColor(1, .8, .1)
end
local function selectedTextureHide(texture) -- used for pets/mounts
local parent = texture:GetParent()
if not parent.hovered then
local r, g, b = unpack(E.media.bordercolor)
parent.backdrop:SetBackdropBorderColor(r, g, b)
parent.icon.backdrop:SetBackdropBorderColor(r, g, b)
end
if parent.petList then
petNameColor(parent.iconBorder, parent.iconBorder:GetVertexColor())
end
end
local function buttonOnEnter(button)
local r, g, b = unpack(E.media.rgbvaluecolor)
local icon = button.icon or button.Icon
button.backdrop:SetBackdropBorderColor(r, g, b)
icon.backdrop:SetBackdropBorderColor(r, g, b)
button.hovered = true
end
local function buttonOnLeave(button)
local icon = button.icon or button.Icon
if button.selected or (button.SelectedTexture and button.SelectedTexture:IsShown()) then
button.backdrop:SetBackdropBorderColor(1, .8, .1)
icon.backdrop:SetBackdropBorderColor(1, .8, .1)
else
local r, g, b = unpack(E.media.bordercolor)
button.backdrop:SetBackdropBorderColor(r, g, b)
icon.backdrop:SetBackdropBorderColor(r, g, b)
end
button.hovered = nil
end
local function JournalScrollButtons(frame)
for i, bu in ipairs(frame.buttons) do
bu:StripTextures()
bu:CreateBackdrop('Transparent', nil, nil, true)
bu:Size(210, 42)
bu.backdrop:SetFrameLevel(bu:GetFrameLevel())
bu.backdrop:SetAllPoints()
local point, relativeTo, relativePoint, xOffset, yOffset = bu:GetPoint()
bu:ClearAllPoints()
if i == 1 then
bu:Point(point, relativeTo, relativePoint, 44, yOffset)
else
bu:Point(point, relativeTo, relativePoint, xOffset, -2)
end
local icon = bu.icon or bu.Icon
icon:Size(40)
icon:Point('LEFT', -43, 0)
icon:SetTexCoord(unpack(E.TexCoords))
icon:CreateBackdrop(nil, nil, nil, true)
bu:HookScript('OnEnter', buttonOnEnter)
bu:HookScript('OnLeave', buttonOnLeave)
local highlight = _G[bu:GetName()..'Highlight']
if highlight then
highlight:SetColorTexture(1, 1, 1, 0.3)
highlight:SetBlendMode('ADD')
highlight:SetAllPoints(bu.icon)
end
if bu.ProgressBar then
bu.ProgressBar:SetTexture(E.media.normTex)
bu.ProgressBar:SetVertexColor(0.251, 0.753, 0.251, 1) -- 0.0118, 0.247, 0.00392
end
if frame:GetParent() == _G.WardrobeCollectionFrame.SetsCollectionFrame then
bu.setList = true
bu.Favorite:SetAtlas('PetJournal-FavoritesIcon', true)
bu.Favorite:Point('TOPLEFT', bu.Icon, 'TOPLEFT', -8, 8)
hooksecurefunc(bu.SelectedTexture, 'SetShown', selectedTextureSetShown)
else
bu.selectedTexture:SetTexture()
hooksecurefunc(bu.selectedTexture, 'Show', selectedTextureShow)
hooksecurefunc(bu.selectedTexture, 'Hide', selectedTextureHide)
if frame:GetParent() == _G.PetJournal then
bu.petList = true
bu.petTypeIcon:Point('TOPRIGHT', -1, -1)
bu.petTypeIcon:Point('BOTTOMRIGHT', -1, 1)
bu.dragButton.ActiveTexture:SetTexture(E.Media.Textures.White8x8)
bu.dragButton.ActiveTexture:SetVertexColor(0.9, 0.8, 0.1, 0.3)
bu.dragButton.levelBG:SetTexture()
S:HandleIconBorder(bu.iconBorder, nil, petNameColor)
elseif frame:GetParent() == _G.MountJournal then
bu.mountList = true
bu.factionIcon:SetDrawLayer('OVERLAY')
bu.factionIcon:Point('TOPRIGHT', -1, -1)
bu.factionIcon:Point('BOTTOMRIGHT', -1, 1)
bu.DragButton.ActiveTexture:SetTexture(E.Media.Textures.White8x8)
bu.DragButton.ActiveTexture:SetVertexColor(0.9, 0.8, 0.1, 0.3)
bu.favorite:SetTexture([[Interface\COMMON\FavoritesIcon]])
bu.favorite:Point('TOPLEFT', bu.DragButton, 'TOPLEFT' , -8, 8)
bu.favorite:Size(32, 32)
hooksecurefunc(bu.name, 'SetFontObject', mountNameColor)
hooksecurefunc(bu.background, 'SetVertexColor', mountNameColor)
end
end
end
end
local function clearBackdrop(self)
self:SetBackdropColor(0, 0, 0, 0)
end
function S:Blizzard_Collections()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.collections) then return end
-- global
local CollectionsJournal = _G.CollectionsJournal
S:HandlePortraitFrame(CollectionsJournal)
for i=1, 5 do
S:HandleTab(_G['CollectionsJournalTab'..i])
end
S:HandleItemButton(_G.MountJournalSummonRandomFavoriteButton)
S:HandleButton(_G.MountJournalFilterButton)
_G.MountJournalFilterButton:ClearAllPoints()
_G.MountJournalFilterButton:Point('LEFT', _G.MountJournalSearchBox, 'RIGHT', 5, 0)
-------------------------------
--[[ mount journal (tab 1) ]]--
-------------------------------
local MountJournal = _G.MountJournal
MountJournal:StripTextures()
MountJournal.MountDisplay:StripTextures()
MountJournal.MountDisplay.ShadowOverlay:StripTextures()
MountJournal.MountCount:StripTextures()
S:HandleIcon(MountJournal.MountDisplay.InfoButton.Icon)
S:HandleCheckBox(MountJournal.MountDisplay.ModelScene.TogglePlayer)
MountJournal.MountDisplay.ModelScene.TogglePlayer:Size(22)
S:HandleButton(_G.MountJournalMountButton)
S:HandleEditBox(_G.MountJournalSearchBox)
S:HandleScrollBar(_G.MountJournalListScrollFrameScrollBar)
S:HandleRotateButton(MountJournal.MountDisplay.ModelScene.RotateLeftButton)
S:HandleRotateButton(MountJournal.MountDisplay.ModelScene.RotateRightButton)
-- New Mount Equip. 8.2
MountJournal.BottomLeftInset:StripTextures()
MountJournal.BottomLeftInset:CreateBackdrop('Transparent')
MountJournal.BottomLeftInset.SlotButton:StripTextures()
S:HandleIcon(MountJournal.BottomLeftInset.SlotButton.ItemIcon)
S:HandleButton(MountJournal.BottomLeftInset.SlotButton)
JournalScrollButtons(MountJournal.ListScrollFrame)
-----------------------------
--[[ pet journal (tab 2) ]]--
-----------------------------
_G.PetJournalSummonButton:StripTextures()
_G.PetJournalFindBattle:StripTextures()
S:HandleButton(_G.PetJournalSummonButton)
S:HandleButton(_G.PetJournalFindBattle)
_G.PetJournalRightInset:StripTextures()
_G.PetJournalLeftInset:StripTextures()
S:HandleItemButton(_G.PetJournalSummonRandomFavoritePetButton, true)
for i = 1, 3 do
local f = _G['PetJournalLoadoutPet'..i..'HelpFrame']
f:StripTextures()
end
if E.global.general.disableTutorialButtons then
_G.PetJournalTutorialButton:Kill()
end
local PetJournal = _G.PetJournal
PetJournal.PetCount:StripTextures()
S:HandleEditBox(_G.PetJournalSearchBox)
_G.PetJournalSearchBox:ClearAllPoints()
_G.PetJournalSearchBox:Point('TOPLEFT', _G.PetJournalLeftInset, 'TOPLEFT', (E.PixelMode and 13 or 10), -9)
S:HandleButton(_G.PetJournalFilterButton)
_G.PetJournalFilterButton:Height(E.PixelMode and 22 or 24)
_G.PetJournalFilterButton:ClearAllPoints()
_G.PetJournalFilterButton:Point('TOPRIGHT', _G.PetJournalLeftInset, 'TOPRIGHT', -5, -(E.PixelMode and 8 or 7))
_G.PetJournalListScrollFrame:StripTextures()
S:HandleScrollBar(_G.PetJournalListScrollFrameScrollBar)
JournalScrollButtons(PetJournal.listScroll)
_G.PetJournalAchievementStatus:DisableDrawLayer('BACKGROUND')
S:HandleItemButton(_G.PetJournalHealPetButton, true)
E:RegisterCooldown(_G.PetJournalHealPetButtonCooldown)
_G.PetJournalHealPetButton.texture:SetTexture([[Interface\Icons\spell_magic_polymorphrabbit]])
_G.PetJournalLoadoutBorder:StripTextures()
for i = 1, 3 do
local petButton = _G['PetJournalLoadoutPet'..i]
local petButtonHealthFrame = _G['PetJournalLoadoutPet'..i..'HealthFrame']
local petButtonXPBar = _G['PetJournalLoadoutPet'..i..'XPBar']
petButton:StripTextures()
petButton:CreateBackdrop()
petButton.backdrop:SetAllPoints()
petButton.petTypeIcon:Point('BOTTOMLEFT', 2, 2)
petButton.dragButton:SetOutside(_G['PetJournalLoadoutPet'..i..'Icon'])
petButton.dragButton:SetFrameLevel(_G['PetJournalLoadoutPet'..i].dragButton:GetFrameLevel() + 1)
petButton.hover = true;
petButton.pushed = true;
petButton.checked = true;
S:HandleItemButton(petButton)
petButton.levelBG:SetAtlas('PetJournal-LevelBubble', true)
petButton.backdrop:SetFrameLevel(_G['PetJournalLoadoutPet'..i].backdrop:GetFrameLevel() + 1)
petButton.setButton:StripTextures()
petButtonHealthFrame.healthBar:StripTextures()
petButtonHealthFrame.healthBar:CreateBackdrop()
petButtonHealthFrame.healthBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(petButtonHealthFrame.healthBar)
petButtonXPBar:StripTextures()
petButtonXPBar:CreateBackdrop()
petButtonXPBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(petButtonXPBar)
petButtonXPBar:SetFrameLevel(petButtonXPBar:GetFrameLevel() + 2)
for index = 1, 3 do
local f = _G['PetJournalLoadoutPet'..i..'Spell'..index]
S:HandleItemButton(f)
f.FlyoutArrow:SetTexture([[Interface\Buttons\ActionBarFlyoutButton]])
_G['PetJournalLoadoutPet'..i..'Spell'..index..'Icon']:SetInside(f)
end
end
_G.PetJournalSpellSelect:StripTextures()
for i=1, 2 do
local btn = _G['PetJournalSpellSelectSpell'..i]
S:HandleItemButton(btn)
_G['PetJournalSpellSelectSpell'..i..'Icon']:SetInside(btn)
_G['PetJournalSpellSelectSpell'..i..'Icon']:SetDrawLayer('BORDER')
end
_G.PetJournalPetCard:StripTextures()
_G.PetJournalPetCard:CreateBackdrop('Transparent')
_G.PetJournalPetCardInset:StripTextures()
_G.PetJournalPetCardPetInfoQualityBorder:SetAlpha(0)
_G.PetJournalPetCardPetInfoIcon:SetTexCoord(unpack(E.TexCoords))
_G.PetJournalPetCardPetInfo:CreateBackdrop()
_G.PetJournalPetCardPetInfo.favorite:SetParent(_G.PetJournalPetCardPetInfo.backdrop)
_G.PetJournalPetCardPetInfo.backdrop:SetOutside(_G.PetJournalPetCardPetInfoIcon)
_G.PetJournalPetCardPetInfoIcon:SetParent(_G.PetJournalPetCardPetInfo.backdrop)
if E.private.skins.blizzard.tooltip then
local tt = _G.PetJournalPrimaryAbilityTooltip
if tt.Delimiter1 then
tt.Delimiter1:SetTexture()
tt.Delimiter2:SetTexture()
end
tt.Background:SetTexture()
tt.BorderTop:SetTexture()
tt.BorderTopLeft:SetTexture()
tt.BorderTopRight:SetTexture()
tt.BorderLeft:SetTexture()
tt.BorderRight:SetTexture()
tt.BorderBottom:SetTexture()
tt.BorderBottomRight:SetTexture()
tt.BorderBottomLeft:SetTexture()
tt:CreateBackdrop('Transparent')
end
for i=1, 6 do
local frame = _G['PetJournalPetCardSpell'..i]
frame:SetFrameLevel(frame:GetFrameLevel() + 2)
frame:DisableDrawLayer('BACKGROUND')
frame:CreateBackdrop()
frame.backdrop:SetAllPoints()
frame.icon:SetTexCoord(unpack(E.TexCoords))
frame.icon:SetInside(frame.backdrop)
end
_G.PetJournalPetCardHealthFrame.healthBar:StripTextures()
_G.PetJournalPetCardHealthFrame.healthBar:CreateBackdrop()
_G.PetJournalPetCardHealthFrame.healthBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(_G.PetJournalPetCardHealthFrame.healthBar)
_G.PetJournalPetCardXPBar:StripTextures()
_G.PetJournalPetCardXPBar:CreateBackdrop()
_G.PetJournalPetCardXPBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(_G.PetJournalPetCardXPBar)
--Toy Box
local ToyBox = _G.ToyBox
S:HandleButton(_G.ToyBoxFilterButton)
_G.ToyBoxFilterButton:Point('TOPRIGHT', ToyBox, 'TOPRIGHT', -15, -34)
S:HandleEditBox(ToyBox.searchBox)
ToyBox.iconsFrame:StripTextures()
S:HandleNextPrevButton(ToyBox.PagingFrame.NextPageButton, nil, nil, true)
S:HandleNextPrevButton(ToyBox.PagingFrame.PrevPageButton, nil, nil, true)
local progressBar = ToyBox.progressBar
progressBar.border:Hide()
progressBar:DisableDrawLayer('BACKGROUND')
progressBar:SetStatusBarTexture(E.media.normTex)
progressBar:CreateBackdrop()
E:RegisterStatusBar(progressBar)
for i = 1, 18 do
local button = ToyBox.iconsFrame['spellButton'..i]
S:HandleItemButton(button, true)
button.iconTextureUncollected:SetTexCoord(unpack(E.TexCoords))
button.iconTextureUncollected:SetInside(button)
button.hover:SetAllPoints(button.iconTexture)
button.checked:SetAllPoints(button.iconTexture)
button.pushed:SetAllPoints(button.iconTexture)
button.cooldown:SetAllPoints(button.iconTexture)
hooksecurefunc(button.name, 'SetTextColor', toyTextColor)
hooksecurefunc(button.new, 'SetTextColor', toyTextColor)
E:RegisterCooldown(button.cooldown)
end
hooksecurefunc('ToySpellButton_UpdateButton', function(button)
if button.itemID and PlayerHasToy(button.itemID) then
local _, _, quality = GetItemInfo(button.itemID)
if quality then
button.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
else
button.backdrop:SetBackdropBorderColor(0.9, 0.9, 0.9)
end
else
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
--Heirlooms
local HeirloomsJournal = _G.HeirloomsJournal
S:HandleButton(_G.HeirloomsJournalFilterButton)
_G.HeirloomsJournalFilterButton:Point('TOPRIGHT', HeirloomsJournal, 'TOPRIGHT', -15, -34)
S:HandleEditBox(HeirloomsJournal.SearchBox)
HeirloomsJournal.iconsFrame:StripTextures()
S:HandleNextPrevButton(HeirloomsJournal.PagingFrame.NextPageButton, nil, nil, true)
S:HandleNextPrevButton(HeirloomsJournal.PagingFrame.PrevPageButton, nil, nil, true)
S:HandleDropDownBox(_G.HeirloomsJournalClassDropDown)
progressBar = HeirloomsJournal.progressBar -- swap local variable
progressBar.border:Hide()
progressBar:DisableDrawLayer('BACKGROUND')
progressBar:SetStatusBarTexture(E.media.normTex)
progressBar:CreateBackdrop()
E:RegisterStatusBar(progressBar)
hooksecurefunc(HeirloomsJournal, 'UpdateButton', function(_, button)
if not button.styled then
S:HandleItemButton(button, true)
button.iconTextureUncollected:SetTexCoord(unpack(E.TexCoords))
button.iconTextureUncollected:SetInside(button)
button.iconTexture:SetDrawLayer('ARTWORK')
button.hover:SetAllPoints(button.iconTexture)
button.slotFrameCollected:SetAlpha(0)
button.slotFrameUncollected:SetAlpha(0)
button.special:SetJustifyH('RIGHT')
button.special:ClearAllPoints()
button.cooldown:SetAllPoints(button.iconTexture)
E:RegisterCooldown(button.cooldown)
button.styled = true
end
button.levelBackground:SetTexture()
button.name:Point('LEFT', button, 'RIGHT', 4, 8)
button.level:Point('TOPLEFT', button.levelBackground,'TOPLEFT', 25, 2)
if C_Heirloom_PlayerHasHeirloom(button.itemID) then
button.name:SetTextColor(0.9, 0.9, 0.9)
button.level:SetTextColor(0.9, 0.9, 0.9)
button.special:SetTextColor(1, .82, 0)
button.backdrop:SetBackdropBorderColor(GetItemQualityColor(7))
else
button.name:SetTextColor(0.4, 0.4, 0.4)
button.level:SetTextColor(0.4, 0.4, 0.4)
button.special:SetTextColor(0.4, 0.4, 0.4)
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
hooksecurefunc(HeirloomsJournal, 'LayoutCurrentPage', function()
for i=1, #HeirloomsJournal.heirloomHeaderFrames do
local header = HeirloomsJournal.heirloomHeaderFrames[i]
header:StripTextures()
header.text:FontTemplate(nil, 15, '')
header.text:SetTextColor(0.9, 0.9, 0.9)
end
end)
-- Appearances Tab
local WardrobeCollectionFrame = _G.WardrobeCollectionFrame
S:HandleTab(WardrobeCollectionFrame.ItemsTab)
S:HandleTab(WardrobeCollectionFrame.SetsTab)
--Items
WardrobeCollectionFrame.progressBar:StripTextures()
WardrobeCollectionFrame.progressBar:CreateBackdrop()
WardrobeCollectionFrame.progressBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(WardrobeCollectionFrame.progressBar)
S:HandleEditBox(_G.WardrobeCollectionFrameSearchBox)
_G.WardrobeCollectionFrameSearchBox:SetFrameLevel(5)
WardrobeCollectionFrame.FilterButton:Point('LEFT', WardrobeCollectionFrame.searchBox, 'RIGHT', 2, 0)
S:HandleButton(WardrobeCollectionFrame.FilterButton)
S:HandleDropDownBox(_G.WardrobeCollectionFrameWeaponDropDown)
WardrobeCollectionFrame.ItemsCollectionFrame:StripTextures()
for _, Frame in ipairs(WardrobeCollectionFrame.ContentFrames) do
if Frame.Models then
for _, Model in pairs(Frame.Models) do
Model:SetFrameLevel(Model:GetFrameLevel() + 1)
Model.Border:SetAlpha(0)
Model.TransmogStateTexture:SetAlpha(0)
local border = CreateFrame('Frame', nil, Model, 'BackdropTemplate')
border:SetTemplate()
border:ClearAllPoints()
border:SetPoint('TOPLEFT', Model, 'TOPLEFT', 0, 1) -- dont use set inside, left side needs to be 0
border:SetPoint('BOTTOMRIGHT', Model, 'BOTTOMRIGHT', 1, -1)
border:SetBackdropColor(0, 0, 0, 0)
border.callbackBackdropColor = clearBackdrop
for i=1, Model:GetNumRegions() do
local region = select(i, Model:GetRegions())
if region:IsObjectType('Texture') and region:GetTexture() == 1116940 then
region:SetColorTexture(1, 1, 1, 0.3)
region:SetBlendMode('ADD')
region:SetAllPoints(Model)
end
end
hooksecurefunc(Model.Border, 'SetAtlas', function(_, texture)
if texture == 'transmog-wardrobe-border-uncollected' then
border:SetBackdropBorderColor(0.9, 0.9, 0.3)
elseif texture == 'transmog-wardrobe-border-unusable' then
border:SetBackdropBorderColor(0.9, 0.3, 0.3)
elseif Model.TransmogStateTexture:IsShown() then
border:SetBackdropBorderColor(1, 0.7, 1)
else
border:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
end
end
local pending = Frame.PendingTransmogFrame
if pending then
local Glowframe = pending.Glowframe
Glowframe:SetAtlas(nil)
Glowframe:CreateBackdrop()
Glowframe.backdrop:SetPoint('TOPLEFT', pending, 'TOPLEFT', 0, 1) -- dont use set inside, left side needs to be 0
Glowframe.backdrop:SetPoint('BOTTOMRIGHT', pending, 'BOTTOMRIGHT', 1, -1)
Glowframe.backdrop:SetFrameLevel(pending:GetFrameLevel())
Glowframe.backdrop:SetBackdropBorderColor(1, 0.7, 1)
Glowframe.backdrop:SetBackdropColor(0, 0, 0, 0)
for i = 1, 12 do
if i < 5 then
Frame.PendingTransmogFrame['Smoke'..i]:Hide()
end
Frame.PendingTransmogFrame['Wisp'..i]:Hide()
end
end
local paging = Frame.PagingFrame
if paging then
S:HandleNextPrevButton(paging.PrevPageButton, nil, nil, true)
S:HandleNextPrevButton(paging.NextPageButton, nil, nil, true)
end
end
--Sets
local SetsCollectionFrame = WardrobeCollectionFrame.SetsCollectionFrame
SetsCollectionFrame:CreateBackdrop('Transparent')
SetsCollectionFrame.RightInset:StripTextures()
SetsCollectionFrame.LeftInset:StripTextures()
JournalScrollButtons(SetsCollectionFrame.ScrollFrame)
S:HandleScrollBar(SetsCollectionFrame.ScrollFrame.scrollBar)
-- DetailsFrame
local DetailsFrame = SetsCollectionFrame.DetailsFrame
DetailsFrame.Name:FontTemplate(nil, 16)
DetailsFrame.LongName:FontTemplate(nil, 16)
S:HandleButton(DetailsFrame.VariantSetsButton)
hooksecurefunc(SetsCollectionFrame, 'SetItemFrameQuality', function(_, itemFrame)
local icon = itemFrame.Icon
if not icon.backdrop then
icon:CreateBackdrop()
icon:SetTexCoord(unpack(E.TexCoords))
itemFrame.IconBorder:Hide()
end
if itemFrame.collected then
local quality = C_TransmogCollection_GetSourceInfo(itemFrame.sourceID).quality
local color = BAG_ITEM_QUALITY_COLORS[quality or 1]
icon.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
else
icon.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
_G.WardrobeSetsCollectionVariantSetsButton.Icon:SetTexture(E.Media.Textures.ArrowUp)
_G.WardrobeSetsCollectionVariantSetsButton.Icon:SetRotation(S.ArrowRotation.down)
-- Transmogrify NPC
local WardrobeFrame = _G.WardrobeFrame
S:HandlePortraitFrame(WardrobeFrame)
local WardrobeOutfitFrame = _G.WardrobeOutfitFrame
WardrobeOutfitFrame:StripTextures()
WardrobeOutfitFrame:CreateBackdrop('Transparent')
S:HandleButton(_G.WardrobeOutfitDropDown.SaveButton)
S:HandleDropDownBox(_G.WardrobeOutfitDropDown, 221)
_G.WardrobeOutfitDropDown:Height(34)
_G.WardrobeOutfitDropDown.SaveButton:ClearAllPoints()
_G.WardrobeOutfitDropDown.SaveButton:Point('TOPLEFT', _G.WardrobeOutfitDropDown, 'TOPRIGHT', -2, -2)
local WardrobeTransmogFrame = _G.WardrobeTransmogFrame
WardrobeTransmogFrame:StripTextures()
for i = 1, #WardrobeTransmogFrame.ModelScene.SlotButtons do
WardrobeTransmogFrame.ModelScene.SlotButtons[i]:StripTextures()
WardrobeTransmogFrame.ModelScene.SlotButtons[i]:SetFrameLevel(WardrobeTransmogFrame.ModelScene.SlotButtons[i]:GetFrameLevel() + 2)
WardrobeTransmogFrame.ModelScene.SlotButtons[i]:CreateBackdrop()
WardrobeTransmogFrame.ModelScene.SlotButtons[i].backdrop:SetAllPoints()
WardrobeTransmogFrame.ModelScene.SlotButtons[i].Border:Kill()
WardrobeTransmogFrame.ModelScene.SlotButtons[i].Icon:SetTexCoord(unpack(E.TexCoords))
end
WardrobeTransmogFrame.SpecButton:ClearAllPoints()
WardrobeTransmogFrame.SpecButton:Point('RIGHT', WardrobeTransmogFrame.ApplyButton, 'LEFT', -2, 0)
S:HandleButton(WardrobeTransmogFrame.SpecButton)
S:HandleButton(WardrobeTransmogFrame.ApplyButton)
S:HandleButton(WardrobeTransmogFrame.ModelScene.ClearAllPendingButton)
--Transmogrify NPC Sets tab
WardrobeCollectionFrame.SetsTransmogFrame:StripTextures()
WardrobeCollectionFrame.SetsTransmogFrame:CreateBackdrop('Transparent')
S:HandleNextPrevButton(WardrobeCollectionFrame.SetsTransmogFrame.PagingFrame.NextPageButton)
S:HandleNextPrevButton(WardrobeCollectionFrame.SetsTransmogFrame.PagingFrame.PrevPageButton)
-- Outfit Edit Frame
local WardrobeOutfitEditFrame = _G.WardrobeOutfitEditFrame
WardrobeOutfitEditFrame:StripTextures()
WardrobeOutfitEditFrame:CreateBackdrop('Transparent')
WardrobeOutfitEditFrame.EditBox:StripTextures()
S:HandleEditBox(WardrobeOutfitEditFrame.EditBox)
S:HandleButton(WardrobeOutfitEditFrame.AcceptButton)
S:HandleButton(WardrobeOutfitEditFrame.CancelButton)
S:HandleButton(WardrobeOutfitEditFrame.DeleteButton)
end
S:AddCallbackForAddon('Blizzard_Collections')

View File

@@ -0,0 +1,50 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local CH = E:GetModule('Chat')
local LSM = E.Libs.LSM
local _G = _G
local ipairs = ipairs
local hooksecurefunc = hooksecurefunc
local function StyleButtons()
for index in ipairs(_G.Blizzard_CombatLog_Filters.filters) do
local button = _G['CombatLogQuickButtonFrameButton'..index]
local text = button and button:GetFontString()
if text then
text:FontTemplate(LSM:Fetch('font', CH.db.tabFont), CH.db.tabFontSize, CH.db.tabFontOutline)
end
end
end
-- credit: Aftermathh, edited by Simpy
function S:Blizzard_CombatLog()
if E.private.chat.enable ~= true then return end
-- this is always on with the chat module, it's only handle the top bar in combat log chat frame
hooksecurefunc('Blizzard_CombatLog_Update_QuickButtons', StyleButtons)
StyleButtons()
local bar = _G.CombatLogQuickButtonFrame_Custom
bar:StripTextures()
bar:CreateBackdrop('Transparent')
bar.backdrop:SetAllPoints()
bar:ClearAllPoints()
bar:SetPoint('BOTTOMLEFT', _G.ChatFrame2, 'TOPLEFT', -3, 2)
bar:SetPoint('BOTTOMRIGHT', _G.ChatFrame2, 'TOPRIGHT', 3, 0)
local progress = _G.CombatLogQuickButtonFrame_CustomProgressBar
progress:SetStatusBarTexture(E.media.normTex)
progress:SetInside(bar.backdrop)
S:HandleNextPrevButton(_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton)
_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton:ClearAllPoints()
_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton:SetPoint('TOPRIGHT', bar, 'TOPRIGHT', -2, -2)
_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton:SetHitRectInsets(0,0,0,0)
_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton:SetFrameLevel(bar:GetFrameLevel() + 3)
_G.CombatLogQuickButtonFrame_CustomAdditionalFilterButton:Size(20)
_G.CombatLogQuickButtonFrame_CustomTexture:Hide()
end
S:AddCallbackForAddon('Blizzard_CombatLog')

View File

@@ -0,0 +1,780 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, pairs, select, unpack = ipairs, pairs, select, unpack
local C_CreatureInfo_GetClassInfo = C_CreatureInfo.GetClassInfo
local C_GuildInfo_GetGuildNewsInfo = C_GuildInfo.GetGuildNewsInfo
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
local BATTLENET_FONT_COLOR = BATTLENET_FONT_COLOR
local FRIENDS_BNET_BACKGROUND_COLOR = FRIENDS_BNET_BACKGROUND_COLOR
local FRIENDS_WOW_BACKGROUND_COLOR = FRIENDS_WOW_BACKGROUND_COLOR
local GetClassInfo = GetClassInfo
local GREEN_FONT_COLOR = GREEN_FONT_COLOR
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local GetGuildRewardInfo = GetGuildRewardInfo
local GetItemQualityColor = GetItemQualityColor
local GetItemInfo = GetItemInfo
local Enum = Enum
local function UpdateNames(self)
if not self.expanded then return end
local memberInfo = self:GetMemberInfo()
if memberInfo and memberInfo.classID then
local classInfo = C_CreatureInfo_GetClassInfo(memberInfo.classID)
if classInfo then
local tcoords = _G.CLASS_ICON_TCOORDS[classInfo.classFile]
self.Class:SetTexCoord(tcoords[1] + .022, tcoords[2] - .025, tcoords[3] + .022, tcoords[4] - .025)
end
end
end
local function HandleRoleChecks(button, ...)
button:StripTextures()
button:DisableDrawLayer('ARTWORK')
button:DisableDrawLayer('OVERLAY')
button.bg = button:CreateTexture(nil, 'BACKGROUND', nil, -7)
button.bg:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
button.bg:SetTexCoord(...)
button.bg:Point('CENTER')
button.bg:Size(40, 40)
button.bg:SetAlpha(0.6)
S:HandleCheckBox(button.CheckBox)
end
local function HandleCommunitiesButtons(self, color)
self.Background:Hide()
self.CircleMask:Hide()
self:SetFrameLevel(self:GetFrameLevel() + 5)
S:HandleIcon(self.Icon)
self.Icon:ClearAllPoints()
self.Icon:Point('TOPLEFT', 15, -18)
self.IconRing:Hide()
if not self.bg then
self.bg = CreateFrame('Frame', nil, self)
self.bg:CreateBackdrop('Transparent')
self.bg:Point('TOPLEFT', 7, -16)
self.bg:Point('BOTTOMRIGHT', -10, 12)
end
if self.IconBorder then
self.IconBorder:Hide()
end
if color then
self.Selection:SetInside(self.bg, 0, 0)
if color == 1 then
self.Selection:SetAtlas(nil)
self.Selection:SetColorTexture(GREEN_FONT_COLOR.r, GREEN_FONT_COLOR.g, GREEN_FONT_COLOR.b, 0.2)
else
self.Selection:SetAtlas(nil)
self.Selection:SetColorTexture(BATTLENET_FONT_COLOR.r, BATTLENET_FONT_COLOR.g, BATTLENET_FONT_COLOR.b, 0.2)
end
end
local highlight = self:GetHighlightTexture()
highlight:SetColorTexture(1, 1, 1, 0.3)
highlight:SetInside(self.bg)
end
local function ColorMemberName(self, info)
if not info then return end
local class = self.Class
local classInfo = select(2, GetClassInfo(info.classID))
if classInfo then
local tcoords = CLASS_ICON_TCOORDS[classInfo]
class:SetTexCoord(tcoords[1] + .022, tcoords[2] - .025, tcoords[3] + .022, tcoords[4] - .025)
end
end
function S:Blizzard_Communities()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.communities) then return end
local CommunitiesFrame = _G.CommunitiesFrame
CommunitiesFrame:StripTextures()
CommunitiesFrame.NineSlice:Hide()
_G.CommunitiesFrameInset.Bg:Hide()
CommunitiesFrame.CommunitiesList.InsetFrame:StripTextures()
S:HandlePortraitFrame(CommunitiesFrame)
local CommunitiesFrameCommunitiesList = _G.CommunitiesFrameCommunitiesList
CommunitiesFrameCommunitiesList.FilligreeOverlay:Hide()
CommunitiesFrameCommunitiesList.Bg:Hide()
CommunitiesFrameCommunitiesList.TopFiligree:Hide()
CommunitiesFrameCommunitiesList.BottomFiligree:Hide()
_G.CommunitiesFrameCommunitiesListListScrollFrame:StripTextures()
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetClubInfo', function(s, clubInfo, isInvitation, isTicket)
if clubInfo then
s.Background:Hide()
s.CircleMask:Hide()
s.Icon:ClearAllPoints()
s.Icon:Point('TOPLEFT', 8, -17)
S:HandleIcon(s.Icon)
s.IconRing:Hide()
if not s.IconBorder then
s.IconBorder = s:CreateTexture(nil, 'BORDER')
s.IconBorder:SetOutside(s.Icon)
s.IconBorder:Hide()
end
s.GuildTabardBackground:Point('TOPLEFT', 6, -17)
s.GuildTabardEmblem:Point('TOPLEFT', 13, -17)
s.GuildTabardBorder:Point('TOPLEFT', 6, -17)
if not s.bg then
s.bg = CreateFrame('Frame', nil, s)
s.bg:CreateBackdrop('Transparent')
s.bg:Point('TOPLEFT', 7, -16)
s.bg:Point('BOTTOMRIGHT', -10, 12)
end
local isGuild = clubInfo.clubType == Enum.ClubType.Guild
if isGuild then
s.Background:SetAtlas(nil)
s.Selection:SetAtlas(nil)
s.Selection:SetAllPoints(s.bg)
s.Selection:SetColorTexture(0, 1, 0, 0.2)
else
s.Background:SetAtlas(nil)
s.Selection:SetAtlas(nil)
s.Selection:SetAllPoints(s.bg)
s.Selection:SetColorTexture(FRIENDS_BNET_BACKGROUND_COLOR.r, FRIENDS_BNET_BACKGROUND_COLOR.g, FRIENDS_BNET_BACKGROUND_COLOR.b, 0.2)
end
if not isInvitation and not isGuild and not isTicket then
if clubInfo.clubType == _G.Enum.ClubType.BattleNet then
s.IconBorder:SetColorTexture(FRIENDS_BNET_BACKGROUND_COLOR.r, FRIENDS_BNET_BACKGROUND_COLOR.g, FRIENDS_BNET_BACKGROUND_COLOR.b)
else
s.IconBorder:SetColorTexture(FRIENDS_WOW_BACKGROUND_COLOR.r, FRIENDS_WOW_BACKGROUND_COLOR.g, FRIENDS_WOW_BACKGROUND_COLOR.b)
end
s.IconBorder:Show()
else
s.IconBorder:Hide()
end
local highlight = s:GetHighlightTexture()
highlight:SetColorTexture(1, 1, 1, 0.3)
highlight:SetAllPoints(s.bg)
end
end)
-- Add Community Button
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetAddCommunity', function(s) HandleCommunitiesButtons(s, 1) end)
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetFindCommunity', function(s) HandleCommunitiesButtons(s, 2) end)
hooksecurefunc(_G.CommunitiesListEntryMixin, 'SetGuildFinder', function(s) HandleCommunitiesButtons(s, 1) end)
S:HandleItemButton(CommunitiesFrame.ChatTab)
CommunitiesFrame.ChatTab:Point('TOPLEFT', '$parent', 'TOPRIGHT', E.PixelMode and 0 or E.Border + E.Spacing, -36)
S:HandleItemButton(CommunitiesFrame.RosterTab)
S:HandleItemButton(CommunitiesFrame.GuildBenefitsTab)
S:HandleItemButton(CommunitiesFrame.GuildInfoTab)
S:HandleInsetFrame(CommunitiesFrame.CommunitiesList)
S:HandleMaxMinFrame(CommunitiesFrame.MaximizeMinimizeFrame)
CommunitiesFrame.MaximizeMinimizeFrame:ClearAllPoints()
CommunitiesFrame.MaximizeMinimizeFrame:Point('RIGHT', CommunitiesFrame.CloseButton, 'LEFT', 12, 0)
S:HandleButton(CommunitiesFrame.InviteButton)
S:HandleNextPrevButton(CommunitiesFrame.AddToChatButton)
S:HandleScrollBar(CommunitiesFrame.MemberList.ListScrollFrame.scrollBar)
S:HandleScrollBar(CommunitiesFrame.Chat.MessageFrame.ScrollBar)
S:HandleScrollBar(_G.CommunitiesFrameCommunitiesListListScrollFrame.ScrollBar)
S:HandleDropDownBox(CommunitiesFrame.StreamDropDownMenu)
S:HandleDropDownBox(CommunitiesFrame.CommunitiesListDropDownMenu)
hooksecurefunc(_G.CommunitiesNotificationSettingsStreamEntryMixin, 'SetFilter', function(s)
s.ShowNotificationsButton:Size(20, 20)
s.HideNotificationsButton:Size(20, 20)
S:HandleCheckBox(s.ShowNotificationsButton)
S:HandleCheckBox(s.HideNotificationsButton)
end)
-- Chat Tab
CommunitiesFrame.MemberList:StripTextures()
CommunitiesFrame.MemberList.InsetFrame:Hide()
CommunitiesFrame.MemberList.WatermarkFrame:Hide()
CommunitiesFrame.Chat:StripTextures()
CommunitiesFrame.Chat.InsetFrame:CreateBackdrop('Transparent')
S:HandleEditBox(CommunitiesFrame.ChatEditBox)
CommunitiesFrame.ChatEditBox:Size(120, 20)
-- [[ GUILDFINDER FRAME ]]--
local ClubFinderGuildFinderFrame = _G.ClubFinderGuildFinderFrame
ClubFinderGuildFinderFrame:StripTextures()
S:HandleDropDownBox(_G.ClubFinderLanguageDropdown)
S:HandleNextPrevButton(ClubFinderGuildFinderFrame.GuildCards.PreviousPage)
S:HandleNextPrevButton(ClubFinderGuildFinderFrame.GuildCards.NextPage)
-->> Monitor this
for _, card in pairs(ClubFinderGuildFinderFrame.GuildCards.Cards, ClubFinderGuildFinderFrame.PendingGuildCards.Cards) do
if not card.isSkinned then
card.CardBackground:Hide()
card:CreateBackdrop()
card.GuildBannerEmblemLogo:SetDrawLayer('OVERLAY')
S:HandleButton(card.RequestJoin)
card.isSkinned = true
end
end
S:HandleDropDownBox(ClubFinderGuildFinderFrame.OptionsList.ClubFilterDropdown)
S:HandleDropDownBox(ClubFinderGuildFinderFrame.OptionsList.ClubSizeDropdown)
ClubFinderGuildFinderFrame.OptionsList.SearchBox:Size(118, 20)
ClubFinderGuildFinderFrame.OptionsList.Search:Size(118, 20)
ClubFinderGuildFinderFrame.OptionsList.Search:ClearAllPoints()
ClubFinderGuildFinderFrame.OptionsList.Search:Point('TOP', ClubFinderGuildFinderFrame.OptionsList.SearchBox, 'BOTTOM', 1, -3)
S:HandleEditBox(ClubFinderGuildFinderFrame.OptionsList.SearchBox)
S:HandleButton(ClubFinderGuildFinderFrame.OptionsList.Search)
HandleRoleChecks(ClubFinderGuildFinderFrame.OptionsList.TankRoleFrame, _G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
HandleRoleChecks(ClubFinderGuildFinderFrame.OptionsList.HealerRoleFrame, _G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
HandleRoleChecks(ClubFinderGuildFinderFrame.OptionsList.DpsRoleFrame, _G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
S:HandleItemButton(ClubFinderGuildFinderFrame.ClubFinderSearchTab)
S:HandleItemButton(ClubFinderGuildFinderFrame.ClubFinderPendingTab)
-- [[ClubFinderCommunityAndGuildFinderFrame ]]--
local ClubFinderCommunityAndGuildFinderFrame = _G.ClubFinderCommunityAndGuildFinderFrame
ClubFinderCommunityAndGuildFinderFrame:StripTextures()
-->> Monitor this
for _, button in pairs(ClubFinderCommunityAndGuildFinderFrame.CommunityCards.ListScrollFrame.buttons, ClubFinderCommunityAndGuildFinderFrame.PendingCommunityCards.ListScrollFrame.buttons) do
if not button.isSkinned then
button.CircleMask:Hide()
button.LogoBorder:Hide()
S:HandleIcon(button.CommunityLogo)
S:HandleButton(button)
button.isSkinned = true
end
end
S:HandleDropDownBox(ClubFinderCommunityAndGuildFinderFrame.OptionsList.ClubFilterDropdown)
S:HandleDropDownBox(ClubFinderCommunityAndGuildFinderFrame.OptionsList.SortByDropdown)
S:HandleButton(ClubFinderCommunityAndGuildFinderFrame.OptionsList.Search)
ClubFinderCommunityAndGuildFinderFrame.OptionsList.Search:ClearAllPoints()
ClubFinderCommunityAndGuildFinderFrame.OptionsList.Search:Point('TOP', ClubFinderCommunityAndGuildFinderFrame.OptionsList.SearchBox, 'BOTTOM', 1, -3)
ClubFinderCommunityAndGuildFinderFrame.OptionsList.Search:Size(118, 20)
ClubFinderCommunityAndGuildFinderFrame.OptionsList.SearchBox:Size(118, 20)
S:HandleEditBox(ClubFinderCommunityAndGuildFinderFrame.OptionsList.SearchBox)
HandleRoleChecks(ClubFinderCommunityAndGuildFinderFrame.OptionsList.TankRoleFrame, _G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
HandleRoleChecks(ClubFinderCommunityAndGuildFinderFrame.OptionsList.HealerRoleFrame, _G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
HandleRoleChecks(ClubFinderCommunityAndGuildFinderFrame.OptionsList.DpsRoleFrame, _G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
S:HandleScrollBar(ClubFinderCommunityAndGuildFinderFrame.CommunityCards.ListScrollFrame.scrollBar)
S:HandleScrollBar(ClubFinderCommunityAndGuildFinderFrame.PendingCommunityCards.ListScrollFrame.scrollBar)
S:HandleItemButton(ClubFinderCommunityAndGuildFinderFrame.ClubFinderSearchTab)
S:HandleItemButton(ClubFinderCommunityAndGuildFinderFrame.ClubFinderPendingTab)
for _, t in ipairs({ClubFinderGuildFinderFrame.RequestToJoinFrame, ClubFinderCommunityAndGuildFinderFrame.RequestToJoinFrame}) do
t:StripTextures()
t:CreateBackdrop('Transparent')
hooksecurefunc(t, 'Initialize', function(s)
for button in s.SpecsPool:EnumerateActive() do
if button.CheckBox then
S:HandleCheckBox(button.CheckBox)
button.CheckBox:Size(26, 26)
end
end
end)
t.MessageFrame:StripTextures(true)
t.MessageFrame.MessageScroll:StripTextures(true)
S:HandleEditBox(t.MessageFrame.MessageScroll)
S:HandleScrollBar(_G.ClubFinderGuildFinderFrameScrollBar)
S:HandleButton(t.Apply)
S:HandleButton(t.Cancel)
end
-- Member Details
CommunitiesFrame.GuildMemberDetailFrame:StripTextures()
CommunitiesFrame.GuildMemberDetailFrame:CreateBackdrop('Transparent')
CommunitiesFrame.GuildMemberDetailFrame.NoteBackground:SetTemplate('Transparent')
CommunitiesFrame.GuildMemberDetailFrame.OfficerNoteBackground:SetTemplate('Transparent')
S:HandleCloseButton(CommunitiesFrame.GuildMemberDetailFrame.CloseButton)
S:HandleButton(CommunitiesFrame.GuildMemberDetailFrame.RemoveButton)
S:HandleButton(CommunitiesFrame.GuildMemberDetailFrame.GroupInviteButton)
local DropDown = CommunitiesFrame.GuildMemberDetailFrame.RankDropdown
S:HandleDropDownBox(DropDown, 160)
DropDown.backdrop:Point('TOPLEFT', 0, -6)
DropDown.backdrop:Point('BOTTOMRIGHT', -12, 6)
DropDown:Point('LEFT', CommunitiesFrame.GuildMemberDetailFrame.RankLabel, 'RIGHT', 2, 0)
-- [[ ROSTER TAB ]]
local MemberList = CommunitiesFrame.MemberList
local ColumnDisplay = MemberList.ColumnDisplay
ColumnDisplay:StripTextures()
ColumnDisplay.InsetBorderLeft:Hide()
ColumnDisplay.InsetBorderBottomLeft:Hide()
ColumnDisplay.InsetBorderTopLeft:Hide()
ColumnDisplay.InsetBorderTop:Hide()
S:HandleInsetFrame(CommunitiesFrame.MemberList.InsetFrame)
S:HandleDropDownBox(CommunitiesFrame.GuildMemberListDropDownMenu)
S:HandleButton(CommunitiesFrame.CommunitiesControlFrame.GuildControlButton)
S:HandleButton(CommunitiesFrame.CommunitiesControlFrame.GuildRecruitmentButton)
S:HandleButton(CommunitiesFrame.CommunitiesControlFrame.CommunitiesSettingsButton)
CommunitiesFrame.CommunitiesControlFrame.CommunitiesSettingsButton:Size(129, 19)
S:HandleCheckBox(CommunitiesFrame.MemberList.ShowOfflineButton)
CommunitiesFrame.MemberList.ShowOfflineButton:Size(25, 25)
hooksecurefunc(CommunitiesFrame.MemberList, 'RefreshListDisplay', function(s)
for i = 1, s.ColumnDisplay:GetNumChildren() do
local child = select(i, s.ColumnDisplay:GetChildren())
child:StripTextures()
child:CreateBackdrop('Transparent')
end
for _, button in ipairs(s.ListScrollFrame.buttons or {}) do
if button and not button.hooked then
hooksecurefunc(button, 'RefreshExpandedColumns', UpdateNames)
if button.ProfessionHeader then
local header = button.ProfessionHeader
for i = 1, 3 do
select(i, header:GetRegions()):Hide()
end
header:CreateBackdrop('Transparent')
end
button.hooked = true
end
if button and button.bg then
button.bg:SetShown(button.Class:IsShown())
end
end
end)
-- [[ PERKS TAB ]]
local GuildBenefitsFrame = CommunitiesFrame.GuildBenefitsFrame
GuildBenefitsFrame.InsetBorderLeft:Hide()
GuildBenefitsFrame.InsetBorderRight:Hide()
GuildBenefitsFrame.InsetBorderBottomRight:Hide()
GuildBenefitsFrame.InsetBorderBottomLeft:Hide()
GuildBenefitsFrame.InsetBorderTopRight:Hide()
GuildBenefitsFrame.InsetBorderTopLeft:Hide()
GuildBenefitsFrame.InsetBorderLeft2:Hide()
GuildBenefitsFrame.InsetBorderBottomLeft2:Hide()
GuildBenefitsFrame.InsetBorderTopLeft2:Hide()
GuildBenefitsFrame.Perks:StripTextures()
GuildBenefitsFrame.Perks.TitleText:FontTemplate(nil, 14)
for i = 1, 5 do
local button = _G['CommunitiesFrameContainerButton'..i]
button:DisableDrawLayer('BACKGROUND')
button:DisableDrawLayer('BORDER')
button:CreateBackdrop()
button.Icon:SetTexCoord(unpack(E.TexCoords))
end
GuildBenefitsFrame.Rewards.TitleText:FontTemplate(nil, 14)
GuildBenefitsFrame.Rewards.Bg:Hide()
S:HandleScrollBar(_G.CommunitiesFrameRewards.scrollBar)
for _, button in pairs(CommunitiesFrame.GuildBenefitsFrame.Rewards.RewardsContainer.buttons) do
if not button.backdrop then
button:CreateBackdrop()
end
button:SetNormalTexture('')
button:SetHighlightTexture('')
if not button.hover then
local hover = button:CreateTexture()
hover:SetColorTexture(1, 1, 1, 0.3)
hover:SetInside(button.backdrop)
button:SetHighlightTexture(hover)
button.hover = hover
end
button.Icon:SetTexCoord(unpack(E.TexCoords))
if not button.Icon.backdrop then
button.Icon:CreateBackdrop()
button.Icon.backdrop:SetOutside(button.Icon, 1, 1)
button.Icon.backdrop:SetFrameLevel(button.backdrop:GetFrameLevel() + 1)
end
end
hooksecurefunc('CommunitiesGuildRewards_Update', function()
for _, button in pairs(CommunitiesFrame.GuildBenefitsFrame.Rewards.RewardsContainer.buttons) do
if button.index then
local _, itemID = GetGuildRewardInfo(button.index)
if itemID then
local _, _, quality = GetItemInfo(itemID)
if quality and quality > 1 then
button.Icon.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
end
end
end
end
end)
-- Guild Reputation Bar TO DO: Adjust me!
local StatusBar = CommunitiesFrame.GuildBenefitsFrame.FactionFrame.Bar
StatusBar.Middle:Hide()
StatusBar.Right:Hide()
StatusBar.Left:Hide()
StatusBar.BG:Hide()
StatusBar.Shadow:Hide()
StatusBar.Progress:SetTexture(E.media.normTex)
StatusBar.Progress:SetAllPoints()
E:RegisterStatusBar(StatusBar)
local bg = CreateFrame('Frame', nil, StatusBar)
bg:Point('TOPLEFT', 0, -3)
bg:Point('BOTTOMRIGHT', 0, 1)
bg:SetFrameLevel(StatusBar:GetFrameLevel())
bg:CreateBackdrop()
-- [[ INFO TAB ]]
local GuildDetails = _G.CommunitiesFrameGuildDetailsFrame
GuildDetails.InsetBorderLeft:Hide()
GuildDetails.InsetBorderRight:Hide()
GuildDetails.InsetBorderBottomRight:Hide()
GuildDetails.InsetBorderBottomLeft:Hide()
GuildDetails.InsetBorderTopRight:Hide()
GuildDetails.InsetBorderTopLeft:Hide()
GuildDetails.InsetBorderLeft2:Hide()
GuildDetails.InsetBorderBottomLeft2:Hide()
GuildDetails.InsetBorderTopLeft2:Hide()
local striptextures = {
'CommunitiesFrameGuildDetailsFrameInfo',
'CommunitiesFrameGuildDetailsFrameNews',
'CommunitiesGuildNewsFiltersFrame',
}
for _, frame in pairs(striptextures) do
_G[frame]:StripTextures()
end
S:HandleScrollBar(_G.CommunitiesFrameGuildDetailsFrameInfoMOTDScrollFrameScrollBar)
hooksecurefunc('GuildNewsButton_SetNews', function(button, news_id)
local newsInfo = C_GuildInfo_GetGuildNewsInfo(news_id)
if newsInfo then
if button.header:IsShown() then
button.header:SetAlpha(0)
end
end
end)
-- Guild Challenges Background
local GuildDetailsFrameInfo = _G.CommunitiesFrameGuildDetailsFrameInfo
local backdrop1 = CreateFrame('Frame', nil, GuildDetailsFrameInfo, 'BackdropTemplate')
backdrop1:SetTemplate('Transparent')
backdrop1:SetFrameLevel(GuildDetailsFrameInfo:GetFrameLevel() - 1)
backdrop1:Point('TOPLEFT', GuildDetailsFrameInfo, 'TOPLEFT', 14, -22)
backdrop1:Point('BOTTOMRIGHT', GuildDetailsFrameInfo, 'BOTTOMRIGHT', 0, 200)
-- Guild MOTD Background
local backdrop2 = CreateFrame('Frame', nil, GuildDetailsFrameInfo, 'BackdropTemplate')
backdrop2:SetTemplate('Transparent')
backdrop2:SetFrameLevel(GuildDetailsFrameInfo:GetFrameLevel() - 1)
backdrop2:Point('TOPLEFT', GuildDetailsFrameInfo, 'TOPLEFT', 14, -158)
backdrop2:Point('BOTTOMRIGHT', GuildDetailsFrameInfo, 'BOTTOMRIGHT', 0, 118)
-- Guild Information Background
local backdrop3 = CreateFrame('Frame', nil, GuildDetailsFrameInfo, 'BackdropTemplate')
backdrop3:SetTemplate('Transparent')
backdrop3:SetFrameLevel(GuildDetailsFrameInfo:GetFrameLevel() - 1)
backdrop3:Point('TOPLEFT', GuildDetailsFrameInfo, 'TOPLEFT', 14, -236)
backdrop3:Point('BOTTOMRIGHT', GuildDetailsFrameInfo, 'BOTTOMRIGHT', -7, 1)
-- Guild News Background
local backdrop4 = CreateFrame('Frame', nil, GuildDetailsFrameInfo, 'BackdropTemplate')
backdrop4:SetTemplate('Transparent')
backdrop4:SetFrameLevel(GuildDetailsFrameInfo:GetFrameLevel() - 1)
backdrop4:Point('TOPLEFT', GuildDetailsFrameInfo, 'TOPLEFT', 591, -22)
backdrop4:Point('BOTTOMRIGHT', GuildDetailsFrameInfo, 'BOTTOMRIGHT', 18, 1)
_G.CommunitiesFrameGuildDetailsFrameInfo.TitleText:FontTemplate(nil, 14)
_G.CommunitiesFrameGuildDetailsFrameNews.TitleText:FontTemplate(nil, 14)
S:HandleScrollBar(_G.CommunitiesFrameGuildDetailsFrameInfoScrollBar)
S:HandleScrollBar(_G.CommunitiesFrameGuildDetailsFrameNewsContainer.ScrollBar)
S:HandleButton(CommunitiesFrame.GuildLogButton)
local BossModel = _G.CommunitiesFrameGuildDetailsFrameNews.BossModel
BossModel:StripTextures()
BossModel.TextFrame:StripTextures()
BossModel:CreateBackdrop('Transparent')
BossModel.TextFrame:CreateBackdrop('Transparent')
-- Filters Frame
local FiltersFrame = _G.CommunitiesGuildNewsFiltersFrame
FiltersFrame:CreateBackdrop('Transparent')
S:HandleCheckBox(FiltersFrame.GuildAchievement)
S:HandleCheckBox(FiltersFrame.Achievement)
S:HandleCheckBox(FiltersFrame.DungeonEncounter)
S:HandleCheckBox(FiltersFrame.EpicItemLooted)
S:HandleCheckBox(FiltersFrame.EpicItemCrafted)
S:HandleCheckBox(FiltersFrame.EpicItemPurchased)
S:HandleCheckBox(FiltersFrame.LegendaryItemLooted)
S:HandleCloseButton(FiltersFrame.CloseButton)
-- Guild Message EditBox
local EditFrame = _G.CommunitiesGuildTextEditFrame
EditFrame:StripTextures()
EditFrame:CreateBackdrop('Transparent')
EditFrame.Container:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.CommunitiesGuildTextEditFrameScrollBar)
S:HandleButton(_G.CommunitiesGuildTextEditFrameAcceptButton)
local closeButton = select(4, _G.CommunitiesGuildTextEditFrame:GetChildren())
S:HandleButton(closeButton)
S:HandleCloseButton(_G.CommunitiesGuildTextEditFrameCloseButton)
-- Guild Log
local GuildLogFrame = _G.CommunitiesGuildLogFrame
GuildLogFrame:StripTextures()
GuildLogFrame.Container:StripTextures()
GuildLogFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.CommunitiesGuildLogFrameScrollBar, 4)
S:HandleCloseButton(_G.CommunitiesGuildLogFrameCloseButton)
closeButton = select(3, _G.CommunitiesGuildLogFrame:GetChildren()) -- swap local variable
S:HandleButton(closeButton)
-- Recruitment Info
local RecruitmentFrame = _G.CommunitiesGuildRecruitmentFrame
RecruitmentFrame:StripTextures()
RecruitmentFrame:CreateBackdrop('Transparent')
_G.CommunitiesGuildRecruitmentFrameInset:StripTextures(false)
-- Recruitment Dialog
local RecruitmentDialog = _G.CommunitiesFrame.RecruitmentDialog
RecruitmentDialog:StripTextures()
RecruitmentDialog:CreateBackdrop('Transparent')
S:HandleCheckBox(RecruitmentDialog.ShouldListClub.Button)
S:HandleDropDownBox(RecruitmentDialog.ClubFocusDropdown, 220)
S:HandleDropDownBox(RecruitmentDialog.LookingForDropdown, 220)
S:HandleDropDownBox(RecruitmentDialog.LanguageDropdown, 190)
RecruitmentDialog.RecruitmentMessageFrame:StripTextures()
S:HandleEditBox(RecruitmentDialog.RecruitmentMessageFrame.RecruitmentMessageInput)
S:HandleCheckBox(RecruitmentDialog.MaxLevelOnly.Button)
S:HandleCheckBox(RecruitmentDialog.MinIlvlOnly.Button)
S:HandleEditBox(RecruitmentDialog.MinIlvlOnly.EditBox)
S:HandleButton(RecruitmentDialog.Accept)
S:HandleButton(RecruitmentDialog.Cancel)
S:HandleScrollBar(RecruitmentDialog.RecruitmentMessageFrame.RecruitmentMessageInput.ScrollBar)
-- CheckBoxes
local CommunitiesGuildRecruitmentFrameRecruitment = _G.CommunitiesGuildRecruitmentFrameRecruitment
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.InterestFrame.QuestButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.InterestFrame.DungeonButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.InterestFrame.RaidButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.InterestFrame.PvPButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.InterestFrame.RPButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.AvailabilityFrame.WeekdaysButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.AvailabilityFrame.WeekendsButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.RolesFrame.TankButton.checkButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.RolesFrame.HealerButton.checkButton)
S:HandleCheckBox(CommunitiesGuildRecruitmentFrameRecruitment.RolesFrame.DamagerButton.checkButton)
S:HandleCloseButton(_G.CommunitiesGuildRecruitmentFrameCloseButton)
S:HandleButton(CommunitiesGuildRecruitmentFrameRecruitment.ListGuildButton)
-- Tabs
for i = 1, 2 do
S:HandleTab(_G['CommunitiesGuildRecruitmentFrameTab'..i])
end
CommunitiesGuildRecruitmentFrameRecruitment.CommentFrame.CommentInputFrame:StripTextures()
S:HandleEditBox(CommunitiesGuildRecruitmentFrameRecruitment.CommentFrame.CommentInputFrame)
-- Recruitment Request
local CommunitiesGuildRecruitmentFrameApplicants = _G.CommunitiesGuildRecruitmentFrameApplicants
S:HandleButton(CommunitiesGuildRecruitmentFrameApplicants.InviteButton)
S:HandleButton(CommunitiesGuildRecruitmentFrameApplicants.MessageButton)
S:HandleButton(CommunitiesGuildRecruitmentFrameApplicants.DeclineButton)
for i = 1, 5 do
_G['CommunitiesGuildRecruitmentFrameApplicantsContainerButton'..i]:SetBackdrop()
end
-- Notification Settings Dialog
local NotificationSettings = _G.CommunitiesFrame.NotificationSettingsDialog
NotificationSettings:StripTextures()
NotificationSettings:CreateBackdrop('Transparent')
NotificationSettings.backdrop:SetAllPoints()
S:HandleDropDownBox(CommunitiesFrame.NotificationSettingsDialog.CommunitiesListDropDownMenu)
S:HandleCheckBox(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.QuickJoinButton)
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.AllButton)
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.Child.NoneButton)
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.OkayButton)
S:HandleButton(CommunitiesFrame.NotificationSettingsDialog.CancelButton)
S:HandleScrollBar(CommunitiesFrame.NotificationSettingsDialog.ScrollFrame.ScrollBar) -- Adjust me
-- Create Channel Dialog
local EditStreamDialog = CommunitiesFrame.EditStreamDialog
EditStreamDialog:StripTextures()
EditStreamDialog:CreateBackdrop('Transparent')
EditStreamDialog.backdrop:SetAllPoints()
S:HandleEditBox(EditStreamDialog.NameEdit)
EditStreamDialog.NameEdit:Size(280, 20)
S:HandleEditBox(EditStreamDialog.Description)
S:HandleCheckBox(EditStreamDialog.TypeCheckBox)
S:HandleButton(EditStreamDialog.Accept)
S:HandleButton(EditStreamDialog.Cancel)
-- Communities Settings
local Settings = _G.CommunitiesSettingsDialog
Settings.BG:Hide()
Settings:CreateBackdrop('Transparent')
Settings.backdrop:SetAllPoints()
S:HandleIcon(Settings.IconPreview)
Settings.IconPreviewRing:Hide()
S:HandleEditBox(Settings.NameEdit)
S:HandleEditBox(Settings.ShortNameEdit)
S:HandleEditBox(Settings.Description)
S:HandleEditBox(Settings.MessageOfTheDay)
S:HandleButton(Settings.ChangeAvatarButton)
S:HandleButton(Settings.Accept)
S:HandleButton(Settings.Delete)
S:HandleButton(Settings.Cancel)
-- Avatar Picker
local Avatar = _G.CommunitiesAvatarPickerDialog
Avatar:StripTextures()
Avatar:CreateBackdrop('Transparent')
Avatar.backdrop:SetAllPoints()
Avatar.ScrollFrame:StripTextures()
S:HandleScrollBar(_G.CommunitiesAvatarPickerDialogScrollBar)
S:HandleButton(Avatar.OkayButton)
S:HandleButton(Avatar.CancelButton)
-- Invite Frame
local TicketManager = _G.CommunitiesTicketManagerDialog
TicketManager:StripTextures()
TicketManager.InviteManager.ArtOverlay:Hide()
TicketManager.InviteManager.ColumnDisplay:StripTextures()
TicketManager.InviteManager.ColumnDisplay.InsetBorderLeft:Hide()
TicketManager.InviteManager.ColumnDisplay.InsetBorderBottomLeft:Hide()
-- TO DO: Fix the Tabs
TicketManager.InviteManager.ListScrollFrame:StripTextures()
TicketManager:CreateBackdrop('Transparent')
TicketManager.backdrop:SetAllPoints()
S:HandleButton(TicketManager.LinkToChat)
S:HandleButton(TicketManager.Copy)
S:HandleButton(TicketManager.Close)
S:HandleButton(TicketManager.GenerateLinkButton)
S:HandleDropDownBox(TicketManager.ExpiresDropDownMenu)
S:HandleDropDownBox(TicketManager.UsesDropDownMenu)
S:HandleScrollBar(TicketManager.InviteManager.ListScrollFrame.scrollBar)
S:HandleButton(TicketManager.MaximizeButton)
-- InvitationsFrames
local ClubFinderInvitationFrame = CommunitiesFrame.ClubFinderInvitationFrame
ClubFinderInvitationFrame.InsetFrame:StripTextures()
ClubFinderInvitationFrame:CreateBackdrop()
S:HandleButton(ClubFinderInvitationFrame.AcceptButton)
S:HandleButton(ClubFinderInvitationFrame.DeclineButton)
S:HandleButton(ClubFinderInvitationFrame.ApplyButton)
ClubFinderInvitationFrame.WarningDialog:StripTextures()
ClubFinderInvitationFrame.WarningDialog:CreateBackdrop('Transparent')
S:HandleButton(ClubFinderInvitationFrame.WarningDialog.Accept)
S:HandleButton(ClubFinderInvitationFrame.WarningDialog.Cancel)
local InvitationFrame = CommunitiesFrame.InvitationFrame
InvitationFrame.InsetFrame:StripTextures()
InvitationFrame:CreateBackdrop()
S:HandleButton(InvitationFrame.AcceptButton)
S:HandleButton(InvitationFrame.DeclineButton)
-- ApplicationList
local ApplicantList = CommunitiesFrame.ApplicantList
ApplicantList:StripTextures()
ApplicantList.ColumnDisplay:StripTextures()
S:HandleScrollBar(ApplicantList.ListScrollFrame.scrollBar)
ApplicantList:CreateBackdrop()
ApplicantList.backdrop:Point('TOPLEFT', 0, 0)
ApplicantList.backdrop:Point('BOTTOMRIGHT', -15, 0)
hooksecurefunc(ApplicantList, 'BuildList', function(self)
local columnDisplay = self.ColumnDisplay
for i = 1, columnDisplay:GetNumChildren() do
local child = select(i, columnDisplay:GetChildren())
if not child.IsSkinned then
child:StripTextures()
child:CreateBackdrop()
child.backdrop:Point('TOPLEFT', 4, -2)
child.backdrop:Point('BOTTOMRIGHT', 0, 2)
child:SetHighlightTexture(E.media.normTex)
local hl = child:GetHighlightTexture()
hl:SetVertexColor(1, 1, 1, .25)
hl:SetInside(child.backdrop)
child.IsSkinned = true
end
end
local buttons = self.ListScrollFrame.buttons
for i = 1, #buttons do
local button = buttons[i]
if not button.IsSkinned then
button:Point('LEFT', ApplicantList.backdrop, 1, 0)
button:Point('RIGHT', ApplicantList.backdrop, -1, 0)
button:SetHighlightTexture(E.media.normTex)
button:GetHighlightTexture():SetVertexColor(1, 1, 1, .25)
button.InviteButton:Size(66, 18)
button.CancelInvitationButton:Size(20, 18)
S:HandleButton(button.InviteButton)
S:HandleButton(button.CancelInvitationButton)
hooksecurefunc(button, 'UpdateMemberInfo', ColorMemberName)
button.IsSkinned = true
end
end
end)
end
S:AddCallbackForAddon('Blizzard_Communities')

View File

@@ -0,0 +1,61 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local hooksecurefunc = hooksecurefunc
function S:Blizzard_Contribution()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.contribution) then return end
--Main Frame
local ContributionCollectionFrame = _G.ContributionCollectionFrame
S:HandleCloseButton(ContributionCollectionFrame.CloseButton)
ContributionCollectionFrame.CloseButton.CloseButtonBackground:SetAlpha(0)
if E.private.skins.blizzard.tooltip then
--Reward Tooltip
local ContributionBuffTooltip = _G.ContributionBuffTooltip
ContributionBuffTooltip:StripTextures()
ContributionBuffTooltip:CreateBackdrop('Transparent')
ContributionBuffTooltip:StyleButton()
ContributionBuffTooltip.Border:SetAlpha(0)
ContributionBuffTooltip.Icon:SetTexCoord(unpack(E.TexCoords))
ContributionBuffTooltip.backdrop:SetOutside(ContributionBuffTooltip.Icon)
end
local ContributionMixin = _G.ContributionMixin
hooksecurefunc(ContributionMixin, 'SetupContributeButton', function(s)
-- Skin the Contribute Buttons
if not s.isSkinned then
S:HandleButton(s.ContributeButton)
s.isSkinned = true
end
-- Skin the StatusBar
local statusBar = s.Status
if statusBar and not statusBar.isSkinned then
statusBar:StripTextures()
E:RegisterStatusBar(statusBar)
statusBar:CreateBackdrop()
statusBar.isSkinned = true
end
end)
--Skin the reward icons
hooksecurefunc(ContributionMixin, 'AddReward', function(s, _, rewardID)
local reward = s:FindOrAcquireReward(rewardID);
if reward and not reward.isSkinned then
reward:SetFrameLevel(5)
reward:CreateBackdrop()
reward:StyleButton()
reward.Border:SetAlpha(0)
reward.Icon:SetDrawLayer('OVERLAY')
reward.Icon:SetTexCoord(unpack(E.TexCoords))
reward.backdrop:SetOutside(reward.Icon)
reward.isSkinned = true
end
end)
end
S:AddCallbackForAddon('Blizzard_Contribution')

View File

@@ -0,0 +1,50 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
function S:Blizzard_CovenantPreviewUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.covenantPreview) then return end
local frame = _G.CovenantPreviewFrame
if E.private.skins.parchmentRemoverEnable then
frame.InfoPanel.Name:SetTextColor(1, 1, 1)
frame.InfoPanel.Location:SetTextColor(1, 1, 1)
frame.InfoPanel.Description:SetTextColor(1, 1, 1)
frame.InfoPanel.AbilitiesFrame.AbilitiesLabel:SetTextColor(1, .8, 0)
frame.InfoPanel.SoulbindsFrame.SoulbindsLabel:SetTextColor(1, .8, 0)
frame.InfoPanel.CovenantFeatureFrame.Label:SetTextColor(1, .8, 0)
end
hooksecurefunc(frame, 'TryShow', function(covenantInfo)
if covenantInfo and not frame.IsSkinned then
frame:CreateBackdrop('Transparent')
frame.ModelSceneContainer.ModelSceneBorder:SetAlpha(0)
frame.InfoPanel:CreateBackdrop('Transparent')
if E.private.skins.parchmentRemoverEnable then
frame.Title:DisableDrawLayer('BACKGROUND')
frame.Title.Text:SetTextColor(1, .8, 0)
frame.Title:CreateBackdrop('Transparent')
frame.Background:SetAlpha(0)
frame.BorderFrame:SetAlpha(0)
frame.InfoPanel.Parchment:SetAlpha(0)
end
frame.CloseButton.Border:Kill()
S:HandleCloseButton(frame.CloseButton)
S:HandleButton(frame.SelectButton)
frame.IsSkinned = true
end
end)
frame.ModelSceneContainer.Background:SetTexCoord(0.00970873786408, 0.99029126213592, 0.0092807424594, 0.9907192575406)
S:HandleCheckBox(_G.TransmogAndMountDressupFrame.ShowMountCheckButton)
end
S:AddCallbackForAddon('Blizzard_CovenantPreviewUI')

View File

@@ -0,0 +1,124 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local gsub, ipairs = gsub, ipairs
local hooksecurefunc = hooksecurefunc
local function HandleIconString(self, text)
if not text then text = self:GetText() end
if not text or text == '' then return end
local new, count = gsub(text, '|T([^:]-):[%d+:]+|t', '|T%1:14:14:0:0:64:64:5:59:5:59|t')
if count > 0 then self:SetFormattedText('%s', new) end
end
local function ReskinTalents(self)
for frame in self.talentPool:EnumerateActive() do
if not frame.IsSkinned then
frame.Border:SetAlpha(0)
frame.IconBorder:SetAlpha(0)
frame.Background:SetAlpha(0)
frame:CreateBackdrop('Transparent')
frame.backdrop:SetInside()
frame.backdrop:SetBackdropBorderColor(0, 1, 0)
frame.Highlight:SetColorTexture(1, 1, 1, .25)
frame.Highlight:SetInside(frame.backdrop)
S:HandleIcon(frame.Icon, true)
frame.Icon:Point('TOPLEFT', 7, -7)
HandleIconString(frame.InfoText)
hooksecurefunc(frame.InfoText, 'SetText', HandleIconString)
frame.IsSkinned = true
end
end
end
local function HideRenownLevelBorder(frame)
if not frame.IsSkinned then
frame.Divider:SetAlpha(0)
frame.BackgroundTile:SetAlpha(0)
frame.Background:CreateBackdrop()
frame.IsSkinned = true
end
for button in frame.milestonesPool:EnumerateActive() do
if not button.IsSkinned then
button.LevelBorder:SetAlpha(0)
button.IsSkinned = true
end
end
end
local function ReplaceCurrencies(displayGroup)
for frame in displayGroup.currencyFramePool:EnumerateActive() do
if not frame.IsSkinned then
HandleIconString(frame.Text)
hooksecurefunc(frame.Text, 'SetText', HandleIconString)
frame.IsSkinned = true
end
end
end
function S:Blizzard_CovenantSanctum()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.covenantSanctum) then return end
local frame = _G.CovenantSanctumFrame
frame:HookScript('OnShow', function()
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
frame.NineSlice:SetAlpha(0)
frame.CloseButton.Border:SetAlpha(0)
S:HandleCloseButton(frame.CloseButton)
frame.CloseButton:ClearAllPoints()
frame.CloseButton:Point('TOPRIGHT', frame, 'TOPRIGHT', 2, 2)
frame.LevelFrame.Level:FontTemplate()
local UpgradesTab = frame.UpgradesTab
UpgradesTab.Background:CreateBackdrop('Transparent')
S:HandleButton(UpgradesTab.DepositButton)
UpgradesTab.DepositButton:SetFrameLevel(10)
local TalentList = frame.UpgradesTab.TalentsList
TalentList:CreateBackdrop('Transparent')
S:HandleButton(TalentList.UpgradeButton)
TalentList.UpgradeButton:SetFrameLevel(10)
TalentList.IntroBox.Background:Hide()
if E.private.skins.parchmentRemoverEnable then
frame.LevelFrame.Background:SetAlpha(0)
UpgradesTab.Background:SetAlpha(0)
TalentList.Divider:SetAlpha(0)
TalentList.BackgroundTile:SetAlpha(0)
for _, frame in ipairs(UpgradesTab.Upgrades) do
if frame.RankBorder then
frame.RankBorder:SetAlpha(0)
end
end
end
UpgradesTab.CurrencyBackground:SetAlpha(0)
ReplaceCurrencies(UpgradesTab.CurrencyDisplayGroup)
hooksecurefunc(TalentList, 'Refresh', ReskinTalents)
hooksecurefunc(frame.RenownTab, 'Refresh', HideRenownLevelBorder)
end
end)
S:HandleTab(_G.CovenantSanctumFrameTab1)
S:HandleTab(_G.CovenantSanctumFrameTab2)
_G.CovenantSanctumFrameTab1:ClearAllPoints()
_G.CovenantSanctumFrameTab1:Point('BOTTOMLEFT', frame, 23, -32) --default is: 23, 9
end
S:AddCallbackForAddon('Blizzard_CovenantSanctum')

View File

@@ -0,0 +1,27 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
function S:Blizzard_DeathRecap()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.deathRecap) then return end
local DeathRecapFrame = _G.DeathRecapFrame
DeathRecapFrame:StripTextures()
DeathRecapFrame:CreateBackdrop('Transparent')
DeathRecapFrame.CloseButton:SetFrameLevel(5)
S:HandleCloseButton(DeathRecapFrame.CloseXButton)
S:HandleButton(DeathRecapFrame.CloseButton)
for i=1, 5 do
local recap = DeathRecapFrame['Recap'..i].SpellInfo
recap:CreateBackdrop()
recap.backdrop:SetOutside(recap.Icon)
recap.Icon:SetTexCoord(unpack(E.TexCoords))
recap.Icon:SetParent(recap.backdrop)
recap.IconBorder:Kill()
end
end
S:AddCallbackForAddon('Blizzard_DeathRecap')

View File

@@ -0,0 +1,125 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
local FrameTexs = {
'TopLeft',
'TopRight',
'Top',
'BottomLeft',
'BottomRight',
'Bottom',
'Left',
'Right',
'TitleBG',
'DialogBG',
}
local function SkinOnShow()
local ScriptErrorsFrame = _G.ScriptErrorsFrame
ScriptErrorsFrame:SetParent(E.UIParent)
ScriptErrorsFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.ScriptErrorsFrameScrollBar)
S:HandleCloseButton(_G.ScriptErrorsFrameClose)
ScriptErrorsFrame.ScrollFrame.Text:FontTemplate(nil, 13)
ScriptErrorsFrame.ScrollFrame:CreateBackdrop()
ScriptErrorsFrame.ScrollFrame:SetFrameLevel(ScriptErrorsFrame.ScrollFrame:GetFrameLevel() + 2)
for i=1, #FrameTexs do
_G['ScriptErrorsFrame'..FrameTexs[i]]:SetTexture()
end
-- Our Buttons
if ScriptErrorsFrame.firstButton then
S:HandleButton(ScriptErrorsFrame.firstButton)
end
if ScriptErrorsFrame.lastButton then
S:HandleButton(ScriptErrorsFrame.lastButton)
end
-- Default Buttons
S:HandleButton(ScriptErrorsFrame.Reload)
S:HandleButton(ScriptErrorsFrame.Close)
S:HandleNextPrevButton(ScriptErrorsFrame.PreviousError)
S:HandleNextPrevButton(ScriptErrorsFrame.NextError)
S:Unhook(ScriptErrorsFrame, 'OnShow')
end
local function SkinTableAttributeDisplay(frame)
frame:StripTextures()
frame:CreateBackdrop('Transparent')
frame.ScrollFrameArt:StripTextures()
frame.ScrollFrameArt:CreateBackdrop('Transparent')
S:HandleCloseButton(frame.CloseButton)
frame.OpenParentButton:ClearAllPoints()
frame.OpenParentButton:Point('TOPLEFT', frame, 'TOPLEFT', 2, -2)
S:HandleNextPrevButton(frame.OpenParentButton, 'up')
frame.OpenParentButton:Size(17)
frame.DuplicateButton:ClearAllPoints()
frame.DuplicateButton:Point('LEFT', frame.NavigateForwardButton, 'RIGHT')
S:HandleCheckBox(frame.VisibilityButton)
frame.VisibilityButton:Size(28)
S:HandleCheckBox(frame.HighlightButton)
frame.HighlightButton:Size(28)
S:HandleCheckBox(frame.DynamicUpdateButton)
frame.DynamicUpdateButton:Size(28)
frame.NavigateBackwardButton:ClearAllPoints()
frame.NavigateBackwardButton:Point('LEFT', frame.OpenParentButton, 'RIGHT', 2, 0)
frame.NavigateForwardButton:ClearAllPoints()
frame.NavigateForwardButton:Point('LEFT', frame.NavigateBackwardButton, 'RIGHT', 2, 0)
frame.DuplicateButton:ClearAllPoints()
frame.DuplicateButton:Point('LEFT', frame.NavigateForwardButton, 'RIGHT', 2, 0)
S:HandleNextPrevButton(frame.DuplicateButton)
frame.DuplicateButton:Size(17)
S:HandleNextPrevButton(frame.NavigateBackwardButton)
S:HandleNextPrevButton(frame.NavigateForwardButton)
S:HandleEditBox(frame.FilterBox)
S:HandleScrollBar(frame.LinesScrollFrame.ScrollBar)
end
function S:ScriptErrorsFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.debug) then return end
S:SecureHookScript(_G.ScriptErrorsFrame, 'OnShow', SkinOnShow)
end
function S:Blizzard_DebugTools()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.debug) then return end
-- Tooltips
if E.private.skins.blizzard.tooltip then
_G.FrameStackTooltip:CreateBackdrop('Transparent')
_G.FrameStackTooltip.backdrop:SetAllPoints()
_G.EventTraceTooltip:CreateBackdrop('Transparent')
_G.FrameStackTooltip.backdrop:SetAllPoints()
end
for i=1, #FrameTexs do
_G['EventTraceFrame'..FrameTexs[i]]:SetTexture()
end
_G.EventTraceFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.EventTraceFrameCloseButton)
--New Table Attribute Display: mouse over frame and (/tableinspect or [/fstack -> then Ctrl])
SkinTableAttributeDisplay(_G.TableAttributeDisplay)
hooksecurefunc(_G.TableInspectorMixin, 'OnLoad', function(s)
if s and s.ScrollFrameArt and not s.skinned then
SkinTableAttributeDisplay(s)
s.skinned = true
end
end)
end
-- ScriptErrorsFrame Skin
S:AddCallback('ScriptErrorsFrame')
-- EventTrace, FrameStack, TableInspect Skins
if _G.IsAddOnLoaded('Blizzard_DebugTools') then
S:AddCallback('Blizzard_DebugTools')
else
S:AddCallbackForAddon('Blizzard_DebugTools')
end

View File

@@ -0,0 +1,41 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:DressUpFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.dressingroom) then return end
local DressUpFrame = _G.DressUpFrame
S:HandlePortraitFrame(DressUpFrame)
S:HandleButton(_G.DressUpFrameResetButton)
S:HandleButton(_G.DressUpFrameCancelButton)
local DressUpFrameOutfitDropDown = _G.DressUpFrameOutfitDropDown
S:HandleDropDownBox(DressUpFrameOutfitDropDown)
S:HandleButton(DressUpFrameOutfitDropDown.SaveButton)
DressUpFrameOutfitDropDown.SaveButton:Point('LEFT', DressUpFrameOutfitDropDown, 'RIGHT', -7, 3)
DressUpFrameOutfitDropDown.backdrop:Point('TOPLEFT', -25, 3)
S:HandleMaxMinFrame(DressUpFrame.MaximizeMinimizeFrame)
_G.DressUpFrameResetButton:Point('RIGHT', _G.DressUpFrameCancelButton, 'LEFT', -2, 0)
-- Wardrobe edit frame
local WardrobeOutfitFrame = _G.WardrobeOutfitFrame
WardrobeOutfitFrame:StripTextures(true)
WardrobeOutfitFrame:CreateBackdrop('Transparent')
local WardrobeOutfitEditFrame = _G.WardrobeOutfitEditFrame
WardrobeOutfitEditFrame:StripTextures(true)
WardrobeOutfitEditFrame:CreateBackdrop('Transparent')
WardrobeOutfitEditFrame.EditBox:StripTextures()
S:HandleEditBox(WardrobeOutfitEditFrame.EditBox)
WardrobeOutfitEditFrame.EditBox.backdrop:Point('TOPLEFT', WardrobeOutfitEditFrame.EditBox, 'TOPLEFT', -5, -5)
WardrobeOutfitEditFrame.EditBox.backdrop:Point('BOTTOMRIGHT', WardrobeOutfitEditFrame.EditBox, 'BOTTOMRIGHT', 0, 5)
S:HandleButton(WardrobeOutfitEditFrame.AcceptButton)
S:HandleButton(WardrobeOutfitEditFrame.CancelButton)
S:HandleButton(WardrobeOutfitEditFrame.DeleteButton)
end
S:AddCallback('DressUpFrame')

View File

@@ -0,0 +1,562 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local select = select
local pairs = pairs
local ipairs = ipairs
local next = next
local rad = rad
local CreateFrame = CreateFrame
local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor
local hooksecurefunc = hooksecurefunc
local LEGENDARY_COLOR = Enum.ItemQuality.Legendary or 5
local function HandleButton(btn, ...)
S:HandleButton(btn, ...)
if btn:GetFontString() then
btn:GetFontString():SetTextColor(1, 1, 1)
end
end
local function SkinDungeons()
local b1 = _G.EncounterJournalInstanceSelectScrollFrameScrollChildInstanceButton1
if b1 and not b1.isSkinned then
HandleButton(b1)
b1.bgImage:SetInside()
b1.bgImage:SetTexCoord(.08, .6, .08, .6)
b1.bgImage:SetDrawLayer('ARTWORK')
b1.isSkinned = true
end
for i = 1, 100 do
local b = _G['EncounterJournalInstanceSelectScrollFrameinstance'..i]
if b and not b.isSkinned then
HandleButton(b)
b.bgImage:SetInside()
b.bgImage:SetTexCoord(0.08,.6,0.08,.6)
b.bgImage:SetDrawLayer('ARTWORK')
b.isSkinned = true
end
end
end
local function SkinBosses()
local bossIndex = 1;
local _, _, bossID = _G.EJ_GetEncounterInfoByIndex(bossIndex);
local bossButton;
local encounter = _G.EncounterJournal.encounter
encounter.info.instanceButton.icon:SetMask("")
while bossID do
bossButton = _G['EncounterJournalBossButton'..bossIndex];
if bossButton and not bossButton.isSkinned then
HandleButton(bossButton)
bossButton.creature:ClearAllPoints()
bossButton.creature:Point('TOPLEFT', 1, -4)
bossButton.isSkinned = true
end
bossIndex = bossIndex + 1;
_, _, bossID = _G.EJ_GetEncounterInfoByIndex(bossIndex);
end
end
local function SkinOverviewInfo(self, _, index)
local header = self.overviews[index]
if not header.isSkinned then
for i = 4, 18 do
select(i, header.button:GetRegions()):SetTexture()
end
HandleButton(header.button)
header.descriptionBG:SetAlpha(0)
header.descriptionBGBottom:SetAlpha(0)
header.description:SetTextColor(1, 1, 1)
header.button.title:SetTextColor(unpack(E.media.rgbvaluecolor))
header.button.title.SetTextColor = E.noop
header.button.expandedIcon:SetTextColor(1, 1, 1)
header.button.expandedIcon.SetTextColor = E.noop
header.isSkinned = true
end
end
local function SkinOverviewInfoBullets(object)
local parent = object:GetParent()
if parent.Bullets then
for _, bullet in pairs(parent.Bullets) do
if not bullet.styled then
bullet.Text:SetTextColor(1, 1, 1)
bullet.styled = true
end
end
end
end
local function HandleTabs(tab)
tab:StripTextures()
tab:SetText(tab.tooltip)
tab:GetFontString():FontTemplate(nil, nil, '')
tab:CreateBackdrop()
tab:SetScript('OnEnter', E.noop)
tab:SetScript('OnLeave', E.noop)
tab:Size(tab:GetFontString():GetStringWidth()*1.5, 20)
tab.SetPoint = E.noop
end
local function SkinAbilitiesInfo()
local index = 1
local header = _G['EncounterJournalInfoHeader'..index]
while header do
if not header.isSkinned then
header.flashAnim.Play = E.noop
header.descriptionBG:SetAlpha(0)
header.descriptionBGBottom:SetAlpha(0)
for i = 4, 18 do
select(i, header.button:GetRegions()):SetTexture()
end
header.description:SetTextColor(1, 1, 1)
header.button.title:SetTextColor(unpack(E.media.rgbvaluecolor))
header.button.title.SetTextColor = E.noop
header.button.expandedIcon:SetTextColor(1, 1, 1)
header.button.expandedIcon.SetTextColor = E.noop
HandleButton(header.button)
header.button.bg = CreateFrame('Frame', nil, header.button, 'BackdropTemplate')
header.button.bg:SetTemplate()
header.button.bg:SetOutside(header.button.abilityIcon)
header.button.bg:SetFrameLevel(header.button.bg:GetFrameLevel() - 1)
header.button.abilityIcon:SetTexCoord(.08, .92, .08, .92)
header.isSkinned = true
end
if header.button.abilityIcon:IsShown() then
header.button.bg:Show()
else
header.button.bg:Hide()
end
index = index + 1
header = _G['EncounterJournalInfoHeader'..index]
end
end
local function PowersFrame(_, button)
local frame = button:GetParent()
if not button.Icon.backdrop then
S:HandleIcon(button.Icon, true)
button.Border:SetAlpha(0)
if E.private.skins.parchmentRemoverEnable then
frame:StripTextures()
frame.ItemLevel:SetTextColor(1, 1, 1)
frame:CreateBackdrop('Transparent')
frame.backdrop:SetPoint('BOTTOMLEFT')
frame.backdrop:SetPoint('TOPLEFT', 10, 0)
end
end
button.Icon.backdrop:SetBackdropBorderColor(frame.SetName:GetTextColor())
end
local function HandleTopTabs(tab)
S:HandleTab(tab)
tab:SetHitRectInsets(0, 0, 0, 0)
end
function S:Blizzard_EncounterJournal()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.encounterjournal) then return end
local EJ = _G.EncounterJournal
S:HandlePortraitFrame(EJ)
EJ.navBar:StripTextures(true)
EJ.navBar.overlay:StripTextures(true)
EJ.navBar:CreateBackdrop()
EJ.navBar.backdrop:Point('TOPLEFT', -2, 0)
EJ.navBar.backdrop:Point('BOTTOMRIGHT')
HandleButton(EJ.navBar.home, true)
EJ.navBar.home.xoffset = 1
S:HandleEditBox(EJ.searchBox)
EJ.searchBox:ClearAllPoints()
EJ.searchBox:Point('TOPLEFT', EJ.navBar, 'TOPRIGHT', 4, 0)
local InstanceSelect = EJ.instanceSelect
EJ.instanceSelect.bg:Kill()
S:HandleDropDownBox(InstanceSelect.tierDropDown)
EJ.instanceSelect.tierDropDown:HookScript('OnShow', function(s)
local text = s.Text
local a, b, c, d, e = text:GetPoint()
text:Point(a, b, c, d + 10, e - 4)
text:Width(s:GetWidth() / 1.4)
end)
S:HandleScrollBar(InstanceSelect.scroll.ScrollBar, 6)
HandleTopTabs(InstanceSelect.suggestTab)
HandleTopTabs(InstanceSelect.dungeonsTab)
HandleTopTabs(InstanceSelect.raidsTab)
HandleTopTabs(InstanceSelect.LootJournalTab)
InstanceSelect.suggestTab:ClearAllPoints()
InstanceSelect.suggestTab:Width(175)
InstanceSelect.suggestTab:Point('BOTTOMLEFT', InstanceSelect, 'TOPLEFT', 2, -43)
InstanceSelect.dungeonsTab:ClearAllPoints()
InstanceSelect.dungeonsTab:Width(125)
InstanceSelect.dungeonsTab:Point('BOTTOMLEFT', InstanceSelect.suggestTab, 'BOTTOMRIGHT', 2, 0)
InstanceSelect.raidsTab:ClearAllPoints()
InstanceSelect.raidsTab:Width(125)
InstanceSelect.raidsTab:Point('BOTTOMLEFT', InstanceSelect.dungeonsTab, 'BOTTOMRIGHT', 2, 0)
InstanceSelect.LootJournalTab:ClearAllPoints()
InstanceSelect.LootJournalTab:Width(125)
InstanceSelect.LootJournalTab:Point('BOTTOMLEFT', InstanceSelect.raidsTab, 'BOTTOMRIGHT', 2, 0)
--Skin the tab text
for i = 1, #InstanceSelect.Tabs do
local tab = InstanceSelect.Tabs[i]
local text = tab:GetFontString()
text:FontTemplate()
text:Point('CENTER')
end
--Encounter Info Frame
local EncounterInfo = EJ.encounter.info
EncounterInfo:CreateBackdrop('Transparent')
EncounterInfo.backdrop:SetOutside(_G.EncounterJournalEncounterFrameInfoBG)
EncounterInfo.encounterTitle:Kill()
S:HandleIcon(EncounterInfo.instanceButton.icon, true)
EncounterInfo.instanceButton.icon:SetTexCoord(0, 1, 0, 1)
EncounterInfo.instanceButton:SetNormalTexture('')
EncounterInfo.instanceButton:SetHighlightTexture('')
--_G.EncounterJournalEncounterFrameInfoBG:Kill()
_G.EncounterJournalEncounterFrameInfoBG:Height(385)
EncounterInfo.leftShadow:Kill()
EncounterInfo.rightShadow:Kill()
EncounterInfo.model.dungeonBG:Kill()
_G.EncounterJournalEncounterFrameInfoModelFrameShadow:Kill()
EncounterInfo.instanceButton:ClearAllPoints()
EncounterInfo.instanceButton:Point('TOPLEFT', EncounterInfo, 'TOPLEFT', 0, 15)
EncounterInfo.instanceTitle:ClearAllPoints()
EncounterInfo.instanceTitle:Point('BOTTOM', EncounterInfo.bossesScroll, 'TOP', 10, 15)
_G.EncounterJournalEncounterFrameInfoLootScrollFrameClassFilterClearFrame:GetRegions():SetAlpha(0)
EncounterInfo.difficulty:StripTextures()
EncounterInfo.reset:StripTextures()
--buttons
EncounterInfo.difficulty:ClearAllPoints()
EncounterInfo.difficulty:Point('BOTTOMRIGHT', _G.EncounterJournalEncounterFrameInfoBG, 'TOPRIGHT', -1, 5)
HandleButton(EncounterInfo.reset)
HandleButton(EncounterInfo.difficulty)
HandleButton(_G.EncounterJournalEncounterFrameInfoLootScrollFrameSlotFilterToggle, true)
HandleButton(_G.EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle, true)
_G.EncounterJournalEncounterFrameInfoLootScrollFrameSlotFilterToggle:ClearAllPoints()
_G.EncounterJournalEncounterFrameInfoLootScrollFrameSlotFilterToggle:Point('BOTTOMLEFT', EncounterInfo.backdrop, 'TOP', 0, 4)
_G.EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:ClearAllPoints()
_G.EncounterJournalEncounterFrameInfoLootScrollFrameFilterToggle:Point('LEFT', _G.EncounterJournalEncounterFrameInfoLootScrollFrameSlotFilterToggle, 'RIGHT', 4, 0)
EncounterInfo.reset:ClearAllPoints()
EncounterInfo.reset:Point('TOPRIGHT', EncounterInfo.difficulty, 'TOPLEFT', -10, 0)
_G.EncounterJournalEncounterFrameInfoResetButtonTexture:SetTexture([[Interface\EncounterJournal\UI-EncounterJournalTextures]])
_G.EncounterJournalEncounterFrameInfoResetButtonTexture:SetTexCoord(0.90625000, 0.94726563, 0.00097656, 0.02050781)
S:HandleScrollBar(EncounterInfo.bossesScroll.ScrollBar, 6)
S:HandleScrollBar(_G.EncounterJournalEncounterFrameInstanceFrameLoreScrollFrameScrollBar)
_G.EncounterJournalEncounterFrameInstanceFrameBG:SetScale(0.85)
_G.EncounterJournalEncounterFrameInstanceFrameBG:ClearAllPoints()
_G.EncounterJournalEncounterFrameInstanceFrameBG:Point('CENTER', 0, 40)
_G.EncounterJournalEncounterFrameInstanceFrameTitle:ClearAllPoints()
_G.EncounterJournalEncounterFrameInstanceFrameTitle:Point('TOP', 0, -105)
_G.EncounterJournalEncounterFrameInstanceFrameMapButton:ClearAllPoints()
_G.EncounterJournalEncounterFrameInstanceFrameMapButton:Point('LEFT', 55, -56)
S:HandleScrollBar(EncounterInfo.overviewScroll.ScrollBar, 4)
S:HandleScrollBar(EncounterInfo.detailsScroll.ScrollBar, 4)
S:HandleScrollBar(EncounterInfo.lootScroll.scrollBar, 4)
EncounterInfo.detailsScroll:Height(360)
EncounterInfo.lootScroll:Height(360)
EncounterInfo.overviewScroll:Height(360)
EncounterInfo.bossesScroll:Height(360)
_G.EncounterJournalEncounterFrameInfoLootScrollFrame:Height(360)
_G.EncounterJournalEncounterFrameInfoLootScrollFrame:Point('TOPLEFT', _G.EncounterJournalEncounterFrameInfoLootScrollFrame:GetParent(), 'TOP', 20, -70)
_G.EncounterJournalEncounterFrameInfoLootScrollFrame:Point('BOTTOMRIGHT', _G.EncounterJournalEncounterFrameInfoLootScrollFrame:GetParent(), 'BOTTOMRIGHT', -10, 5)
--Tabs
local tabs = {
EncounterInfo.overviewTab,
EncounterInfo.lootTab,
EncounterInfo.bossTab,
EncounterInfo.modelTab
}
for i=1, #tabs do --not beautiful but eh
tabs[i]:ClearAllPoints()
end
for i=1, #tabs do
local tab = tabs[i]
if i == 4 then
tab:Point('TOPRIGHT', _G.EncounterJournal, 'BOTTOMRIGHT', -10, E.PixelMode and 0 or 2)
else
tab:Point('RIGHT', tabs[i+1], 'LEFT', -4, 0)
end
HandleTabs(tab)
end
hooksecurefunc('EncounterJournal_SetTabEnabled', function(tab, enabled)
if enabled then
tab:GetFontString():SetTextColor(1, 1, 1)
else
tab:GetFontString():SetTextColor(0.6, 0.6, 0.6)
end
end)
-- Loot buttons
local items = _G.EncounterJournal.encounter.info.lootScroll.buttons
for i = 1, #items do
local item = items[i]
item.bossTexture:SetAlpha(0)
item.bosslessTexture:SetAlpha(0)
item.icon:Size(32, 32)
item.icon:Point('TOPLEFT', E.PixelMode and 3 or 4, -(E.PixelMode and 7 or 8))
item.icon:SetDrawLayer('ARTWORK')
item.icon:SetTexCoord(unpack(E.TexCoords))
item.IconBackdrop = CreateFrame('Frame', nil, item, 'BackdropTemplate')
item.IconBackdrop:SetFrameLevel(item:GetFrameLevel())
item.IconBackdrop:Point('TOPLEFT', item.icon, -1, 1)
item.IconBackdrop:Point('BOTTOMRIGHT', item.icon, 1, -1)
item.IconBackdrop:SetTemplate()
item.name:ClearAllPoints()
item.name:Point('TOPLEFT', item.icon, 'TOPRIGHT', 6, -2)
item.boss:ClearAllPoints()
item.boss:Point('BOTTOMLEFT', 4, 6)
item.slot:ClearAllPoints()
item.slot:Point('TOPLEFT', item.name, 'BOTTOMLEFT', 0, -3)
item.armorType:ClearAllPoints()
item.armorType:Point('RIGHT', item, 'RIGHT', -10, 0)
S:HandleIconBorder(item.IconBorder, item.IconBackdrop)
if E.private.skins.parchmentRemoverEnable then
item.boss:SetTextColor(1, 1, 1)
item.slot:SetTextColor(1, 1, 1)
item.armorType:SetTextColor(1, 1, 1)
end
if i == 1 then
item:ClearAllPoints()
item:Point('TOPLEFT', EncounterInfo.lootScroll.scrollChild, 'TOPLEFT', 5, 0)
end
end
-- Search
_G.EncounterJournalSearchResults:StripTextures()
_G.EncounterJournalSearchResults:CreateBackdrop()
_G.EncounterJournalSearchBox.searchPreviewContainer:StripTextures()
S:HandleCloseButton(_G.EncounterJournalSearchResultsCloseButton)
S:HandleScrollBar(_G.EncounterJournalSearchResultsScrollFrameScrollBar)
--Suggestions
for i = 1, _G.AJ_MAX_NUM_SUGGESTIONS do
local suggestion = _G.EncounterJournal.suggestFrame['Suggestion'..i]
if i == 1 then
HandleButton(suggestion.button)
suggestion.button:SetFrameLevel(4)
S:HandleNextPrevButton(suggestion.prevButton, nil, nil, true)
S:HandleNextPrevButton(suggestion.nextButton, nil, nil, true)
else
HandleButton(suggestion.centerDisplay.button)
end
end
if E.private.skins.parchmentRemoverEnable then
local suggestFrame = _G.EncounterJournal.suggestFrame
-- Suggestion 1
local suggestion = suggestFrame.Suggestion1
suggestion.bg:Hide()
suggestion:CreateBackdrop('Transparent')
local centerDisplay = suggestion.centerDisplay
centerDisplay.title.text:SetTextColor(1, 1, 1)
centerDisplay.description.text:SetTextColor(.9, .9, .9)
local reward = suggestion.reward
reward.text:SetTextColor(.9, .9, .9)
reward.iconRing:Hide()
reward.iconRingHighlight:SetTexture()
-- Suggestion 2 and 3
for i = 2, 3 do
suggestion = suggestFrame['Suggestion'..i]
suggestion.bg:Hide()
suggestion:CreateBackdrop('Transparent')
suggestion.icon:Point('TOPLEFT', 10, -10)
centerDisplay = suggestion.centerDisplay
centerDisplay:ClearAllPoints()
centerDisplay:Point('TOPLEFT', 85, -10)
centerDisplay.title.text:SetTextColor(1, 1, 1)
centerDisplay.description.text:SetTextColor(.9, .9, .9)
reward = suggestion.reward
reward.iconRing:Hide()
reward.iconRingHighlight:SetTexture()
end
hooksecurefunc('EJSuggestFrame_RefreshDisplay', function()
for i, data in ipairs(suggestFrame.suggestions) do
local sugg = next(data) and suggestFrame['Suggestion'..i]
if sugg then
if not sugg.icon.backdrop then
sugg.icon:CreateBackdrop()
end
sugg.icon:SetMask('')
sugg.icon:SetTexture(data.iconPath)
sugg.icon:SetTexCoord(unpack(E.TexCoords))
sugg.iconRing:Hide()
end
end
end)
hooksecurefunc('EJSuggestFrame_UpdateRewards', function(sugg)
local rewardData = sugg.reward.data
if rewardData then
if not sugg.reward.icon.backdrop then
sugg.reward.icon:CreateBackdrop()
sugg.reward.icon.backdrop:SetFrameLevel(3)
end
sugg.reward.icon:SetMask('')
sugg.reward.icon:SetTexture(rewardData.itemIcon or rewardData.currencyIcon or [[Interface\Icons\achievement_guildperk_mobilebanking]])
sugg.reward.icon:SetTexCoord(unpack(E.TexCoords))
local r, g, b = unpack(E.media.bordercolor)
if rewardData.itemID then
local quality = select(3, GetItemInfo(rewardData.itemID))
if quality and quality > 1 then
r, g, b = GetItemQualityColor(quality)
end
end
sugg.reward.icon.backdrop:SetBackdropBorderColor(r, g, b)
end
end)
end
--Suggestion Reward Tooltips
if E.private.skins.blizzard.tooltip then
local tooltip = _G.EncounterJournalTooltip
local item1 = tooltip.Item1
local item2 = tooltip.Item2
tooltip:SetTemplate('Transparent')
S:HandleIcon(item1.icon)
S:HandleIcon(item2.icon)
item1.IconBorder:Kill()
item2.IconBorder:Kill()
end
--Powers
local LootJournal = EJ.LootJournal
HandleButton(LootJournal.ClassDropDownButton, true)
LootJournal.ClassDropDownButton:SetFrameLevel(10)
_G.EncounterJournal.LootJournal:CreateBackdrop('Transparent')
local parch = _G.EncounterJournal.LootJournal:GetRegions()
_G.EncounterJournal.LootJournal.backdrop:SetOutside(parch)
S:HandleScrollBar(LootJournal.PowersFrame.ScrollBar)
local IconColor = E.QualityColors[LEGENDARY_COLOR]
hooksecurefunc(LootJournal.PowersFrame, "RefreshListDisplay", function(buttons)
if not buttons.elements then return end
for i = 1, buttons:GetNumElementFrames() do
local btn = buttons.elements[i]
if btn and not btn.IsSkinned then
btn.Background:SetAlpha(0)
btn.CircleMask:Hide()
S:HandleIcon(btn.Icon, true)
btn.Icon.backdrop:SetBackdropBorderColor(IconColor.r, IconColor.g, IconColor.b)
btn:CreateBackdrop('Transparent')
btn.backdrop:Point('TOPLEFT', 3, 0)
btn.backdrop:Point('BOTTOMRIGHT', -2, 1)
btn.IsSkinned = true
end
end
end)
--Dungeon/raid selection buttons (From AddOnSkins)
hooksecurefunc('EncounterJournal_ListInstances', SkinDungeons)
_G.EncounterJournal_ListInstances()
if E.private.skins.parchmentRemoverEnable then
--Boss selection buttons
hooksecurefunc('EncounterJournal_DisplayInstance', SkinBosses)
--Overview Info (From Aurora)
hooksecurefunc('EncounterJournal_SetUpOverview', SkinOverviewInfo)
--Overview Info Bullets (From Aurora)
hooksecurefunc('EncounterJournal_SetBullets', SkinOverviewInfoBullets)
--Abilities Info (From Aurora)
hooksecurefunc('EncounterJournal_ToggleHeaders', SkinAbilitiesInfo)
_G.EncounterJournalEncounterFrameInfoBG:Kill()
EncounterInfo.detailsScroll.child.description:SetTextColor(1, 1, 1)
EncounterInfo.overviewScroll.child.loreDescription:SetTextColor(1, 1, 1)
_G.EncounterJournalEncounterFrameInfoOverviewScrollFrameScrollChildTitle:SetTextColor(1, 1, 1)
EncounterInfo.overviewScroll.child.overviewDescription.Text:SetTextColor(1, 1, 1)
EJ.encounter.instance.loreScroll.child.lore:SetTextColor(1, 1, 1)
_G.EncounterJournalEncounterFrameInstanceFrameBG:SetTexCoord(0.71, 0.06, 0.582, 0.08)
_G.EncounterJournalEncounterFrameInstanceFrameBG:SetRotation(rad(180))
_G.EncounterJournalEncounterFrameInstanceFrameBG:SetScale(0.7)
_G.EncounterJournalEncounterFrameInstanceFrameBG:CreateBackdrop()
_G.EncounterJournalEncounterFrameInstanceFrame.titleBG:SetAlpha(0)
_G.EncounterJournalEncounterFrameInstanceFrameTitle:SetTextColor(1, 1, 1)
_G.EncounterJournalEncounterFrameInstanceFrameTitle:FontTemplate(nil, 25)
_G.EncounterJournalEncounterFrameInfoOverviewScrollFrameScrollChildHeader:SetAlpha(0)
parch:Kill()
end
end
S:AddCallbackForAddon('Blizzard_EncounterJournal')

View File

@@ -0,0 +1,16 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_FlightMap()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.taxi) then return end
local FlightMapFrame = _G.FlightMapFrame
_G.FlightMapFramePortrait:Kill()
FlightMapFrame:StripTextures()
FlightMapFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.FlightMapFrameCloseButton)
end
S:AddCallbackForAddon('Blizzard_FlightMap')

View File

@@ -0,0 +1,302 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select, unpack = pairs, select, unpack
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local WhoFrameColumn_SetWidth = WhoFrameColumn_SetWidth
--Tab Regions
local tabs = {
'LeftDisabled',
'MiddleDisabled',
'RightDisabled',
'Left',
'Middle',
'Right',
}
local function SkinFriendRequest(frame)
if frame.isSkinned then return; end
S:HandleButton(frame.DeclineButton, nil, true)
S:HandleButton(frame.AcceptButton)
frame.isSkinned = true
end
local function UpdateWhoSkins()
_G.WhoListScrollFrame:StripTextures()
end
--Social Frame
local function SkinSocialHeaderTab(tab)
if not tab then return end
for _, object in pairs(tabs) do
local tex = _G[tab:GetName()..object]
tex:SetTexture()
end
tab:GetHighlightTexture():SetTexture()
tab.backdrop = CreateFrame('Frame', nil, tab, 'BackdropTemplate')
tab.backdrop:SetTemplate()
tab.backdrop:SetFrameLevel(tab:GetFrameLevel() - 1)
tab.backdrop:Point('TOPLEFT', 3, -8)
tab.backdrop:Point('BOTTOMRIGHT', -6, 0)
end
local function BattleNetFrame_OnEnter(button)
if not button.backdrop then return end
local bnetColor = _G.FRIENDS_BNET_NAME_COLOR
button.backdrop:SetBackdropBorderColor(bnetColor.r, bnetColor.g, bnetColor.b)
end
local function BattleNetFrame_OnLeave(button)
if not button.backdrop then return end
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
local function RAFRewards()
for reward in _G.RecruitAFriendRewardsFrame.rewardPool:EnumerateActive() do
S:HandleIcon(reward.Button.Icon)
reward.Button.IconBorder:Kill()
end
end
function S:FriendsFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.friends) then return end
S:HandleScrollBar(_G.FriendsListFrameScrollFrame.scrollBar, 5)
S:HandleScrollBar(_G.WhoListScrollFrame.scrollBar, 5)
local StripAllTextures = {
'FriendsTabHeaderTab1',
'FriendsTabHeaderTab2',
'WhoFrameColumnHeader1',
'WhoFrameColumnHeader2',
'WhoFrameColumnHeader3',
'WhoFrameColumnHeader4',
'AddFriendFrame',
}
local buttons = {
'FriendsFrameAddFriendButton',
'FriendsFrameSendMessageButton',
'WhoFrameWhoButton',
'WhoFrameAddFriendButton',
'WhoFrameGroupInviteButton',
'FriendsFrameIgnorePlayerButton',
'FriendsFrameUnsquelchButton',
'AddFriendEntryFrameAcceptButton',
'AddFriendEntryFrameCancelButton',
'AddFriendInfoFrameContinueButton',
}
for _, button in pairs(buttons) do
S:HandleButton(_G[button])
end
for _, object in pairs(StripAllTextures) do
_G[object]:StripTextures()
end
local mainFrames = {
'WhoFrame',
'LFRQueueFrame',
}
for _, frame in pairs(mainFrames) do
_G[frame]:StripTextures()
end
local FriendsFrame = _G.FriendsFrame
S:HandlePortraitFrame(FriendsFrame)
_G.WhoFrameListInset:StripTextures()
_G.WhoFrameListInset.NineSlice:Hide()
_G.WhoFrameEditBoxInset:StripTextures()
_G.WhoFrameEditBoxInset.NineSlice:Hide()
-- Kill the Portrait!
for i = 1, FriendsFrame:GetNumRegions() do
local region = select(i, FriendsFrame:GetRegions())
if region:IsObjectType('Texture') then
region:SetTexture()
region:SetAlpha(0)
end
end
_G.IgnoreListFrame:StripTextures()
S:HandleScrollBar(_G.IgnoreListFrameScrollFrame.scrollBar, 4)
S:HandleDropDownBox(_G.FriendsFrameStatusDropDown, 70)
_G.FriendsFrameStatusDropDown:ClearAllPoints()
_G.FriendsFrameStatusDropDown:Point('TOPLEFT', FriendsFrame, 'TOPLEFT', 5, -24)
local FriendsFrameBattlenetFrame = _G.FriendsFrameBattlenetFrame
FriendsFrameBattlenetFrame:StripTextures()
FriendsFrameBattlenetFrame:CreateBackdrop('Transparent')
FriendsFrameBattlenetFrame.backdrop:SetAllPoints()
local bnetColor = _G.FRIENDS_BNET_BACKGROUND_COLOR
local button = CreateFrame('Button', nil, FriendsFrameBattlenetFrame)
button:Point('TOPLEFT', FriendsFrameBattlenetFrame, 'TOPLEFT')
button:Point('BOTTOMRIGHT', FriendsFrameBattlenetFrame, 'BOTTOMRIGHT')
button:Size(FriendsFrameBattlenetFrame:GetSize())
button:CreateBackdrop()
button.backdrop:SetBackdropColor(bnetColor.r, bnetColor.g, bnetColor.b, bnetColor.a)
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
button:SetScript('OnClick', function() FriendsFrameBattlenetFrame.BroadcastFrame:ToggleFrame() end)
button:SetScript('OnEnter', BattleNetFrame_OnEnter)
button:SetScript('OnLeave', BattleNetFrame_OnLeave)
FriendsFrameBattlenetFrame.BroadcastButton:Kill() -- We use the BattlenetFrame to enter a Status Message
FriendsFrameBattlenetFrame.UnavailableInfoFrame:ClearAllPoints()
FriendsFrameBattlenetFrame.UnavailableInfoFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 1, -18)
FriendsFrameBattlenetFrame.BroadcastFrame:StripTextures()
FriendsFrameBattlenetFrame.BroadcastFrame:CreateBackdrop('Transparent')
FriendsFrameBattlenetFrame.BroadcastFrame.EditBox:StripTextures()
FriendsFrameBattlenetFrame.BroadcastFrame:ClearAllPoints()
FriendsFrameBattlenetFrame.BroadcastFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 3, -1)
S:HandleEditBox(FriendsFrameBattlenetFrame.BroadcastFrame.EditBox)
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.UpdateButton)
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.CancelButton)
S:HandleEditBox(_G.AddFriendNameEditBox)
_G.AddFriendFrame:CreateBackdrop('Transparent')
--Pending invites
S:HandleButton(_G.FriendsListFrameScrollFrame.PendingInvitesHeaderButton)
hooksecurefunc(_G.FriendsListFrameScrollFrame.invitePool, 'Acquire', function()
for object in pairs(_G.FriendsListFrameScrollFrame.invitePool.activeObjects) do
SkinFriendRequest(object)
end
end)
--Who Frame
_G.WhoFrame:HookScript('OnShow', UpdateWhoSkins)
hooksecurefunc('FriendsFrame_OnEvent', UpdateWhoSkins)
--Increase width of Level column slightly
WhoFrameColumn_SetWidth(_G.WhoFrameColumnHeader3, 37) --Default is 32
for i = 1, 17 do
local level = _G['WhoFrameButton'..i..'Level']
if level then
level:Width(level:GetWidth() + 5)
end
end
S:HandleDropDownBox(_G.WhoFrameDropDown, 120)
--Bottom Tabs
for i = 1, 4 do
S:HandleTab(_G['FriendsFrameTab'..i])
end
for i = 1, 3 do
SkinSocialHeaderTab(_G['FriendsTabHeaderTab'..i])
end
--View Friends BN Frame
local FriendsFriendsFrame = _G.FriendsFriendsFrame
FriendsFriendsFrame:StripTextures()
FriendsFriendsFrame.ScrollFrameBorder:Hide()
FriendsFriendsFrame:CreateBackdrop('Transparent')
S:HandleDropDownBox(_G.FriendsFriendsFrameDropDown, 150)
S:HandleButton(FriendsFriendsFrame.SendRequestButton)
S:HandleButton(FriendsFriendsFrame.CloseButton)
S:HandleScrollBar(_G.FriendsFriendsScrollFrame.scrollBar)
--Quick join
local QuickJoinFrame = _G.QuickJoinFrame
local QuickJoinRoleSelectionFrame = _G.QuickJoinRoleSelectionFrame
S:HandleScrollBar(_G.QuickJoinScrollFrame.scrollBar, 5)
S:HandleButton(_G.QuickJoinFrame.JoinQueueButton)
QuickJoinFrame.JoinQueueButton:Size(131, 21) --Match button on other tab
QuickJoinFrame.JoinQueueButton:ClearAllPoints()
QuickJoinFrame.JoinQueueButton:Point('BOTTOMRIGHT', QuickJoinFrame, 'BOTTOMRIGHT', -6, 4)
_G.QuickJoinScrollFrameTop:SetTexture()
_G.QuickJoinScrollFrameBottom:SetTexture()
_G.QuickJoinScrollFrameMiddle:SetTexture()
QuickJoinRoleSelectionFrame:StripTextures()
QuickJoinRoleSelectionFrame:CreateBackdrop('Transparent')
S:HandleButton(QuickJoinRoleSelectionFrame.AcceptButton)
S:HandleButton(QuickJoinRoleSelectionFrame.CancelButton)
S:HandleCloseButton(QuickJoinRoleSelectionFrame.CloseButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonTank.CheckButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonHealer.CheckButton)
S:HandleCheckBox(QuickJoinRoleSelectionFrame.RoleButtonDPS.CheckButton)
-- GameIcons
for i = 1, _G.FRIENDS_TO_DISPLAY do
local btn = _G['FriendsListFrameScrollFrameButton'..i]
local icon = _G['FriendsListFrameScrollFrameButton'..i..'GameIcon']
icon:Size(22, 22)
icon:SetTexCoord(.15, .85, .15, .85)
icon:ClearAllPoints()
icon:Point('RIGHT', btn, 'RIGHT', -24, 0)
icon.SetPoint = E.noop
end
-- RecruitAFriend 8.2.5
local RAF = _G.RecruitAFriendFrame
S:HandleButton(RAF.RecruitmentButton)
-- /run RecruitAFriendFrame:ShowSplashScreen()
local SplashFrame = RAF.SplashFrame
S:HandleButton(SplashFrame.OKButton)
if E.private.skins.parchmentRemoverEnable then
SplashFrame.Background:SetColorTexture(unpack(E.media.bordercolor))
SplashFrame.PictureFrame:Hide()
SplashFrame.Bracket_TopLeft:Hide()
SplashFrame.Bracket_TopRight:Hide()
SplashFrame.Bracket_BottomRight:Hide()
SplashFrame.Bracket_BottomLeft:Hide()
SplashFrame.PictureFrame_Bracket_TopLeft:Hide()
SplashFrame.PictureFrame_Bracket_TopRight:Hide()
SplashFrame.PictureFrame_Bracket_BottomRight:Hide()
SplashFrame.PictureFrame_Bracket_BottomLeft:Hide()
end
local Claiming = RAF.RewardClaiming
Claiming:StripTextures()
Claiming:CreateBackdrop('Transparent')
S:HandleIcon(Claiming.NextRewardButton.Icon)
Claiming.NextRewardButton.CircleMask:Hide()
Claiming.NextRewardButton.IconBorder:Kill()
S:HandleButton(Claiming.ClaimOrViewRewardButton)
local RecruitList = RAF.RecruitList
RecruitList.Header:StripTextures()
RecruitList.ScrollFrameInset:StripTextures()
RecruitList.ScrollFrameInset:CreateBackdrop('Transparent')
S:HandleScrollBar(RecruitList.ScrollFrame.Slider)
-- Recruitment
local Recruitment = _G.RecruitAFriendRecruitmentFrame
Recruitment:StripTextures()
Recruitment:CreateBackdrop('Transparent')
S:HandleEditBox(Recruitment.EditBox)
S:HandleButton(Recruitment.GenerateOrCopyLinkButton)
S:HandleCloseButton(Recruitment.CloseButton)
-- Rewards
local Reward = _G.RecruitAFriendRewardsFrame
Reward:StripTextures()
Reward:CreateBackdrop('Transparent')
S:HandleCloseButton(Reward.CloseButton)
hooksecurefunc(Reward, 'UpdateRewards', RAFRewards)
RAFRewards() -- Because it's loaded already. The securehook is for when it updates in game. Thanks for playing.
end
S:AddCallback('FriendsFrame')

View File

@@ -0,0 +1,57 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local hooksecurefunc = hooksecurefunc
function S:Blizzard_GMChatUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.gmChat) then return end
local frame = _G.GMChatFrame
frame:SetClampRectInsets(0, 0, 0, 0)
frame:StripTextures()
frame:CreateBackdrop('Transparent')
frame.buttonFrame:Hide()
local eb = frame.editBox
eb:CreateBackdrop('Transparent')
eb.backdrop:Hide()
eb:SetAltArrowKeyMode(false)
for i = 3, 8 do
select(i, eb:GetRegions()):SetAlpha(0)
end
eb:ClearAllPoints()
eb:Point('TOPLEFT', frame, 'BOTTOMLEFT', 0, -7)
eb:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', 0, -32)
hooksecurefunc('ChatEdit_DeactivateChat', function(editBox)
if editBox.isGM then eb.backdrop:Hide() end
end)
hooksecurefunc('ChatEdit_ActivateChat', function(editBox)
if editBox.isGM then eb.backdrop:Show() end
end)
local lang = _G.GMChatFrameEditBoxLanguage
lang:GetRegions():SetAlpha(0)
lang:ClearAllPoints()
lang:Point('TOPLEFT', eb, 'TOPRIGHT', 3, 0)
lang:Point('BOTTOMRIGHT', eb, 'BOTTOMRIGHT', 28, 0)
local tab = _G.GMChatTab
tab:StripTextures()
tab:CreateBackdrop('Transparent')
tab:SetBackdropColor(0, .6, 1, .3)
tab:ClearAllPoints()
tab:Point('BOTTOMLEFT', frame, 'TOPLEFT', 0, 3)
tab:Point('TOPRIGHT', frame, 'TOPRIGHT', 0, 28)
_G.GMChatTabIcon:SetTexture([[Interface\ChatFrame\UI-ChatIcon-Blizz]])
local close = _G.GMChatFrameCloseButton
S:HandleCloseButton(close)
close:ClearAllPoints()
close:Point('RIGHT', tab, -5, 0)
end
S:AddCallbackForAddon('Blizzard_GMChatUI')

View File

@@ -0,0 +1,739 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack, pairs, ipairs, select = unpack, pairs, ipairs, select
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local function showFollower(s)
S:HandleFollowerAbilities(s)
end
local function UpdateFollowerColorOnBoard(self, _, info)
if self.Portrait.backdrop then
local color = E.QualityColors[info.quality or 1]
self.Portrait.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
end
local function ResetFollowerColorOnBoard(self)
if self.Portrait.backdrop then
self.Portrait.backdrop:SetBackdropBorderColor(0, 0, 0)
end
end
local function SkinFollowerBoard(self, group)
for socketTexture in self[group..'SocketFramePool']:EnumerateActive() do
socketTexture:DisableDrawLayer('BACKGROUND')
end
for frame in self[group..'FramePool']:EnumerateActive() do
if not frame.IsSkinned then
S:HandleGarrisonPortrait(frame)
frame.PuckShadow:SetAlpha(0)
if frame.SetFollowerGUID then
hooksecurefunc(frame, 'SetFollowerGUID', UpdateFollowerColorOnBoard)
end
if frame.SetEmpty then
hooksecurefunc(frame, 'SetEmpty', ResetFollowerColorOnBoard)
end
frame.IsSkinned = true
end
end
end
local function SkinMissionBoards(board)
SkinFollowerBoard(board, 'enemy')
SkinFollowerBoard(board, 'follower')
end
local function UpdateSpellAbilities(spell, followerInfo)
local autoSpellInfo = followerInfo.autoSpellAbilities
for _ in ipairs(autoSpellInfo) do
local abilityFrame = spell.autoSpellPool:Acquire()
if not abilityFrame.IsSkinned then
S:HandleIcon(abilityFrame.Icon, true)
if abilityFrame.SpellBorder then
abilityFrame.SpellBorder:Hide()
end
abilityFrame.IsSkinned = true
end
end
end
local function ReskinMissionComplete(frame)
local missionComplete = frame.MissionComplete
local bonusRewards = missionComplete.BonusRewards
if bonusRewards then
select(11, bonusRewards:GetRegions()):SetTextColor(1, .8, 0)
bonusRewards.Saturated:StripTextures()
for i = 1, 9 do
select(i, bonusRewards:GetRegions()):SetAlpha(0)
end
bonusRewards:CreateBackdrop()
end
if missionComplete.NextMissionButton then
S:HandleButton(missionComplete.NextMissionButton)
end
if missionComplete.CompleteFrame then
if E.private.skins.parchmentRemoverEnable then
missionComplete:StripTextures()
end
missionComplete:CreateBackdrop('Transparent')
missionComplete.backdrop:SetPoint("TOPLEFT", 3, 2)
missionComplete.backdrop:SetPoint("BOTTOMRIGHT", -3, -10)
if E.private.skins.parchmentRemoverEnable then
missionComplete.CompleteFrame:StripTextures()
end
S:HandleButton(missionComplete.CompleteFrame.ContinueButton)
S:HandleButton(missionComplete.CompleteFrame.SpeedButton)
S:HandleButton(missionComplete.RewardsScreen.FinalRewardsPanel.ContinueButton)
end
end
-- TO DO: Extend this function
local function SkinMissionFrame(frame, strip)
if strip then
frame:StripTextures()
end
if not frame.backdrop then
frame:CreateBackdrop('Transparent')
end
frame.CloseButton:StripTextures()
S:HandleCloseButton(frame.CloseButton)
if frame.GarrCorners then frame.GarrCorners:Hide() end
if frame.OverlayElements then frame.OverlayElements:SetAlpha(0) end
for i = 1, 3 do
local tab = _G[frame:GetName()..'Tab'..i]
if tab then S:HandleTab(tab) end
end
if frame.MapTab then
frame.MapTab.ScrollContainer.Child.TiledBackground:Hide()
end
ReskinMissionComplete(frame)
hooksecurefunc(frame.FollowerTab, 'UpdateCombatantStats', UpdateSpellAbilities)
for _, item in pairs({frame.FollowerTab.ItemWeapon, frame.FollowerTab.ItemArmor}) do
if item then
local icon = item.Icon
item.Border:Hide()
S:HandleIcon(icon)
end
end
end
function S:Blizzard_GarrisonUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.garrison) then return end
--These hooks affect both Garrison and OrderHall, so make sure they are set even if Garrison skin is disabled
hooksecurefunc('GarrisonMissionButton_SetRewards', function(s)
--Set border color according to rarity of item
local firstRegion, r, g, b
local index = 0
for _, reward in pairs(s.Rewards) do
firstRegion = reward.GetRegions and reward:GetRegions()
if firstRegion then firstRegion:Hide() end
if reward.IconBorder then
reward.IconBorder:SetTexture()
end
if reward.IconBorder and reward.IconBorder:IsShown() then
r, g, b = reward.IconBorder:GetVertexColor()
else
r, g, b = unpack(E.media.bordercolor)
end
if not reward.Icon.backdrop then
S:HandleIcon(reward.Icon, true)
end
reward.Icon.backdrop:SetBackdropBorderColor(r, g, b)
index = index + 1
end
end)
hooksecurefunc('GarrisonMissionPage_SetReward', function(frame)
frame.BG:SetTexture()
if not frame.backdrop then
S:HandleIcon(frame.Icon)
end
if frame.IconBorder then
frame.IconBorder:SetTexture()
end
frame.Icon:SetDrawLayer('BORDER', 0)
end)
hooksecurefunc('GarrisonMissionPortrait_SetFollowerPortrait', function(portraitFrame, followerInfo)
if not portraitFrame.IsSkinned then
S:HandleGarrisonPortrait(portraitFrame)
portraitFrame.IsSkinned = true
end
local color = _G.ITEM_QUALITY_COLORS[followerInfo.quality]
portraitFrame.Portrait.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
portraitFrame.Portrait.backdrop:Show()
end)
-- Building frame
local GarrisonBuildingFrame = _G.GarrisonBuildingFrame
GarrisonBuildingFrame:StripTextures(true)
GarrisonBuildingFrame.TitleText:Show()
GarrisonBuildingFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(GarrisonBuildingFrame.CloseButton, GarrisonBuildingFrame.backdrop)
if E.private.skins.blizzard.tooltip then
GarrisonBuildingFrame.BuildingLevelTooltip:StripTextures()
GarrisonBuildingFrame.BuildingLevelTooltip:CreateBackdrop('Transparent')
end
-- Follower List
local FollowerList = GarrisonBuildingFrame.FollowerList
S:HandleScrollBar(FollowerList.listScroll.scrollBar)
FollowerList:ClearAllPoints()
FollowerList:Point('BOTTOMLEFT', 24, 34)
local scrollFrame = FollowerList.listScroll
S:HandleScrollBar(scrollFrame.scrollBar)
-- Capacitive display frame
local GarrisonCapacitiveDisplayFrame = _G.GarrisonCapacitiveDisplayFrame
S:HandlePortraitFrame(GarrisonCapacitiveDisplayFrame)
S:HandleButton(GarrisonCapacitiveDisplayFrame.StartWorkOrderButton)
S:HandleButton(GarrisonCapacitiveDisplayFrame.CreateAllWorkOrdersButton)
GarrisonCapacitiveDisplayFrame.Count:StripTextures()
S:HandleEditBox(GarrisonCapacitiveDisplayFrame.Count)
S:HandleNextPrevButton(GarrisonCapacitiveDisplayFrame.DecrementButton)
S:HandleNextPrevButton(GarrisonCapacitiveDisplayFrame.IncrementButton)
local CapacitiveDisplay = GarrisonCapacitiveDisplayFrame.CapacitiveDisplay
CapacitiveDisplay.IconBG:SetTexture()
CapacitiveDisplay.ShipmentIconFrame.Icon:SetTexCoord(unpack(E.TexCoords))
CapacitiveDisplay.ShipmentIconFrame.Icon:SetInside()
--Fix unitframes appearing above work orders
GarrisonCapacitiveDisplayFrame:SetFrameStrata('MEDIUM')
GarrisonCapacitiveDisplayFrame:SetFrameLevel(45)
hooksecurefunc('GarrisonCapacitiveDisplayFrame_Update', function(s)
for _, Reagent in ipairs(s.CapacitiveDisplay.Reagents) do
if not Reagent.backdrop then
Reagent.NameFrame:SetTexture()
S:HandleIcon(Reagent.Icon, true)
Reagent:CreateBackdrop()
end
end
end)
-- Recruiter frame
S:HandlePortraitFrame(_G.GarrisonRecruiterFrame)
-- Recruiter Unavailable frame
local UnavailableFrame = _G.GarrisonRecruiterFrame.UnavailableFrame
S:HandleButton(UnavailableFrame:GetChildren())
-- Mission UI
local GarrisonMissionFrame = _G.GarrisonMissionFrame
GarrisonMissionFrame:StripTextures(true)
GarrisonMissionFrame.TitleText:Show()
GarrisonMissionFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(GarrisonMissionFrame.CloseButton, GarrisonMissionFrame.backdrop)
for i = 1,2 do
S:HandleTab(_G['GarrisonMissionFrameTab'..i])
end
_G.GarrisonMissionFrameTab1:ClearAllPoints()
_G.GarrisonMissionFrameTab1:Point('BOTTOMLEFT', 11, -40)
GarrisonMissionFrame.GarrCorners:Hide()
-- Follower list
FollowerList = GarrisonMissionFrame.FollowerList
FollowerList:DisableDrawLayer('BORDER')
FollowerList.MaterialFrame:StripTextures()
S:HandleEditBox(FollowerList.SearchBox)
S:HandleScrollBar(FollowerList.listScroll.scrollBar)
hooksecurefunc(FollowerList, 'ShowFollower', showFollower)
-- Mission list
local MissionTab = GarrisonMissionFrame.MissionTab
local MissionList = MissionTab.MissionList
local MissionPage = GarrisonMissionFrame.MissionTab.MissionPage
MissionList:DisableDrawLayer('BORDER')
S:HandleScrollBar(MissionList.listScroll.scrollBar)
S:HandleCloseButton(MissionPage.CloseButton)
MissionPage.CloseButton:SetFrameLevel(MissionPage:GetFrameLevel() + 2)
S:HandleButton(MissionList.CompleteDialog.BorderFrame.ViewButton)
MissionList.CompleteDialog.BorderFrame.ViewButton.backdrop:SetFrameLevel(MissionList.CompleteDialog.BorderFrame.ViewButton:GetFrameLevel())
S:HandleButton(MissionPage.StartMissionButton)
S:HandleButton(GarrisonMissionFrame.MissionComplete.NextMissionButton)
MissionPage.StartMissionButton.Flash:Hide()
MissionPage.StartMissionButton.Flash.Show = E.noop
MissionPage.StartMissionButton.FlashAnim:Stop()
MissionPage.StartMissionButton.FlashAnim.Play = E.noop
-- Landing page
local GarrisonLandingPage = _G.GarrisonLandingPage
local Report = GarrisonLandingPage.Report
GarrisonLandingPage:CreateBackdrop('Transparent')
S:HandleCloseButton(GarrisonLandingPage.CloseButton, GarrisonLandingPage.backdrop)
S:HandleTab(_G.GarrisonLandingPageTab1)
S:HandleTab(_G.GarrisonLandingPageTab2)
S:HandleTab(_G.GarrisonLandingPageTab3)
_G.GarrisonLandingPageTab1:ClearAllPoints()
_G.GarrisonLandingPageTab1:Point('TOPLEFT', GarrisonLandingPage, 'BOTTOMLEFT', 70, 2)
if E.private.skins.parchmentRemoverEnable then
for i = 1, 10 do
select(i, GarrisonLandingPage:GetRegions()):Hide()
end
for _, tab in pairs({Report.InProgress, Report.Available}) do
tab:SetHighlightTexture('')
tab.Text:ClearAllPoints()
tab.Text:Point('CENTER')
local bg = CreateFrame('Frame', nil, tab)
bg:SetFrameLevel(tab:GetFrameLevel() - 1)
bg:CreateBackdrop('Transparent')
local selectedTex = bg:CreateTexture(nil, 'BACKGROUND')
selectedTex:SetAllPoints()
selectedTex:SetColorTexture(unpack(E.media.rgbvaluecolor))
selectedTex:SetAlpha(0.25)
selectedTex:Hide()
tab.selectedTex = selectedTex
if tab == Report.InProgress then
bg:Point('TOPLEFT', 5, 0)
bg:Point('BOTTOMRIGHT')
else
bg:Point('TOPLEFT')
bg:Point('BOTTOMRIGHT', -7, 0)
end
end
hooksecurefunc('GarrisonLandingPageReport_SetTab', function(s)
local unselectedTab = Report.unselectedTab
unselectedTab:Height(36)
unselectedTab:SetNormalTexture('')
unselectedTab.selectedTex:Hide()
s:SetNormalTexture('')
s.selectedTex:Show()
end)
end
-- Landing page: Report
Report = GarrisonLandingPage.Report -- reassigned
Report.List:StripTextures(true)
scrollFrame = Report.List.listScroll
S:HandleScrollBar(scrollFrame.scrollBar)
local buttons = scrollFrame.buttons
for i = 1, #buttons do
local button = buttons[i]
for _, reward in pairs(button.Rewards) do
reward.Icon:SetTexCoord(unpack(E.TexCoords))
if not reward.border then
reward.border = CreateFrame('Frame', nil, reward)
S:HandleIcon(reward.Icon, reward.border)
reward.Quantity:SetParent(reward.border)
reward.IconBorder:Kill()
-- For some reason, this fix icon border in 8.1
reward:ClearAllPoints()
reward:Point('TOPRIGHT', -5, -5)
if E.private.skins.parchmentRemoverEnable then
button.BG:Hide()
local bg = CreateFrame('Frame', nil, button)
bg:Point('TOPLEFT')
bg:Point('BOTTOMRIGHT', 0, 1)
bg:SetFrameLevel(button:GetFrameLevel() - 1)
bg:CreateBackdrop('Transparent')
end
end
end
end
-- Landing page: Follower list
FollowerList = GarrisonLandingPage.FollowerList
FollowerList.FollowerHeaderBar:Hide()
FollowerList.FollowerScrollFrame:Hide()
S:HandleEditBox(FollowerList.SearchBox)
scrollFrame = FollowerList.listScroll
S:HandleScrollBar(scrollFrame.scrollBar)
hooksecurefunc(FollowerList, 'ShowFollower', showFollower)
hooksecurefunc('GarrisonFollowerButton_AddAbility', function(s, index)
local ability = s.Abilities[index]
if not ability.styled then
S:HandleIcon(ability.Icon, ability)
ability.styled = true
end
end)
-- Garrison Portraits
S:HandleFollowerListOnUpdateData('GarrisonMissionFrameFollowers')
S:HandleFollowerListOnUpdateData('GarrisonLandingPageFollowerList') -- this also applies to orderhall landing page
local FollowerTab = GarrisonLandingPage.FollowerTab
hooksecurefunc(FollowerTab, 'UpdateCombatantStats', UpdateSpellAbilities)
-- Landing page: Fleet
local ShipFollowerList = GarrisonLandingPage.ShipFollowerList
ShipFollowerList.FollowerHeaderBar:Hide()
S:HandleEditBox(ShipFollowerList.SearchBox)
scrollFrame = ShipFollowerList.listScroll
S:HandleScrollBar(scrollFrame.scrollBar)
-- HandleShipFollowerPage(ShipFollowerList.followerTab)
-- ShipYard
local GarrisonShipyardFrame = _G.GarrisonShipyardFrame
GarrisonShipyardFrame:StripTextures(true)
GarrisonShipyardFrame.BorderFrame:StripTextures(true)
GarrisonShipyardFrame:CreateBackdrop('Transparent')
GarrisonShipyardFrame.backdrop:SetOutside(GarrisonShipyardFrame.BorderFrame)
GarrisonShipyardFrame.BorderFrame.GarrCorners:Hide()
S:HandleCloseButton(GarrisonShipyardFrame.BorderFrame.CloseButton2)
S:HandleTab(_G.GarrisonShipyardFrameTab1)
S:HandleTab(_G.GarrisonShipyardFrameTab2)
-- ShipYard: Naval Map
MissionTab = GarrisonShipyardFrame.MissionTab
MissionList = MissionTab.MissionList
MissionList:CreateBackdrop('Transparent')
MissionList.backdrop:SetOutside(MissionList.MapTexture)
MissionList.CompleteDialog.BorderFrame:StripTextures()
MissionList.CompleteDialog.BorderFrame:CreateBackdrop('Transparent')
-- ShipYard: Mission
MissionPage = MissionTab.MissionPage
S:HandleCloseButton(MissionPage.CloseButton)
MissionPage.CloseButton:SetFrameLevel(MissionPage.CloseButton:GetFrameLevel() + 2)
S:HandleButton(MissionList.CompleteDialog.BorderFrame.ViewButton)
MissionList.CompleteDialog.BorderFrame.ViewButton.backdrop:SetFrameLevel(MissionList.CompleteDialog.BorderFrame.ViewButton:GetFrameLevel())
S:HandleButton(GarrisonShipyardFrame.MissionComplete.NextMissionButton)
MissionList.CompleteDialog:SetAllPoints(MissionList.MapTexture)
GarrisonShipyardFrame.MissionCompleteBackground:SetAllPoints(MissionList.MapTexture)
S:HandleButton(MissionPage.StartMissionButton)
MissionPage.StartMissionButton.Flash:Hide()
MissionPage.StartMissionButton.Flash.Show = E.noop
MissionPage.StartMissionButton.FlashAnim:Stop()
MissionPage.StartMissionButton.FlashAnim.Play = E.noop
-- ShipYard: Follower List
FollowerList = GarrisonShipyardFrame.FollowerList
scrollFrame = FollowerList.listScroll
FollowerList:StripTextures()
S:HandleScrollBar(scrollFrame.scrollBar)
S:HandleEditBox(FollowerList.SearchBox)
FollowerList.MaterialFrame:StripTextures()
FollowerList.MaterialFrame.Icon:SetAtlas('ShipMission_CurrencyIcon-Oil', false) --Re-add the material icon
-- HandleShipFollowerPage(FollowerList.followerTab)
if E.private.skins.blizzard.tooltip ~= true then return end
-- ShipYard: Mission Tooltip
local tooltip = _G.GarrisonShipyardMapMissionTooltip
tooltip:CreateBackdrop('Transparent')
local reward = tooltip.ItemTooltip
local icon = reward.Icon
if icon then
S:HandleIcon(icon)
reward.IconBorder:SetTexture()
end
local bonusIcon = tooltip.BonusReward and tooltip.BonusReward.Icon
if bonusIcon then S:HandleIcon(bonusIcon) end
-- Threat Counter Tooltips
_G.GarrisonMissionMechanicFollowerCounterTooltip:CreateBackdrop('Transparent')
_G.GarrisonMissionMechanicTooltip:CreateBackdrop('Transparent')
-- MissionFrame
local OrderHallMissionFrame = _G.OrderHallMissionFrame
OrderHallMissionFrame:StripTextures()
OrderHallMissionFrame.ClassHallIcon:Kill()
OrderHallMissionFrame:StripTextures()
OrderHallMissionFrame.GarrCorners:Hide()
OrderHallMissionFrame:CreateBackdrop('Transparent')
OrderHallMissionFrame.backdrop:SetOutside(OrderHallMissionFrame.BorderFrame)
S:HandleCloseButton(OrderHallMissionFrame.CloseButton)
for i = 1, 3 do
S:HandleTab(_G['OrderHallMissionFrameTab' .. i])
end
for _, Button in pairs(OrderHallMissionFrame.MissionTab.MissionList.listScroll.buttons) do
if not Button.backdrop then -- added in S:HandleButton
S:HandleButton(Button, true)
Button.backdrop:SetFrameLevel(Button:GetFrameLevel())
Button.LocBG:SetDrawLayer('BACKGROUND', 1)
end
end
-- Followers
local Follower = _G.OrderHallMissionFrameFollowers
FollowerList = OrderHallMissionFrame.FollowerList -- swap
local FollowerTab = OrderHallMissionFrame.FollowerTab
Follower:StripTextures()
Follower:CreateBackdrop('Transparent')
FollowerList:StripTextures()
FollowerList.MaterialFrame:StripTextures()
S:HandleEditBox(FollowerList.SearchBox)
S:HandleScrollBar(OrderHallMissionFrame.FollowerList.listScroll.scrollBar)
hooksecurefunc(FollowerList, 'ShowFollower', showFollower)
FollowerTab:StripTextures()
FollowerTab.Class:Size(50, 43)
FollowerTab.XPBar:StripTextures()
FollowerTab.XPBar:SetStatusBarTexture(E.media.normTex)
FollowerTab.XPBar:CreateBackdrop()
-- Orderhall Portraits
S:HandleFollowerListOnUpdateData('OrderHallMissionFrameFollowers')
S:HandleFollowerListOnUpdateData('GarrisonLandingPageFollowerList') -- this also applies to garrison landing page
-- Missions
MissionTab = OrderHallMissionFrame.MissionTab -- swap
local MissionComplete = OrderHallMissionFrame.MissionComplete
MissionList = MissionTab.MissionList -- swap
MissionPage = MissionTab.MissionPage -- swap
local ZoneSupportMissionPage = MissionTab.ZoneSupportMissionPage
S:HandleScrollBar(MissionList.listScroll.scrollBar)
MissionList.CompleteDialog:StripTextures()
MissionList.CompleteDialog:CreateBackdrop('Transparent')
S:HandleButton(MissionList.CompleteDialog.BorderFrame.ViewButton)
MissionList.CompleteDialog.BorderFrame.ViewButton.backdrop:SetFrameLevel(MissionList.CompleteDialog.BorderFrame.ViewButton:GetFrameLevel())
MissionList:StripTextures()
MissionList.listScroll:StripTextures()
S:HandleButton(_G.OrderHallMissionFrameMissions.CombatAllyUI.InProgress.Unassign)
S:HandleCloseButton(MissionPage.CloseButton)
S:HandleButton(MissionPage.StartMissionButton)
S:HandleCloseButton(ZoneSupportMissionPage.CloseButton)
S:HandleButton(ZoneSupportMissionPage.StartMissionButton)
S:HandleButton(MissionComplete.NextMissionButton)
-- BFA Mission
local MissionFrame = _G.BFAMissionFrame
MissionFrame.OverlayElements:Hide()
MissionFrame.TopBorder:Hide()
MissionFrame.TopLeftCorner:Hide()
MissionFrame.TopRightCorner:Hide()
MissionFrame.RightBorder:Hide()
MissionFrame.LeftBorder:Hide()
MissionFrame.BotLeftCorner:Hide()
MissionFrame.BotRightCorner:Hide()
MissionFrame.BottomBorder:Hide()
MissionFrame.GarrCorners:Hide()
MissionFrame.TitleScroll:Hide()
MissionFrame.BackgroundTile:Kill()
MissionFrame.Left:Hide()
MissionFrame.Bottom:Hide()
MissionFrame.Top:Hide()
MissionFrame.Right:Hide()
MissionFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(MissionFrame.CloseButton)
S:HandleButton(MissionFrame.MissionComplete.NextMissionButton)
for i = 1, 3 do
S:HandleTab(_G['BFAMissionFrameTab'..i])
end
-- Missions
S:HandleButton(_G.BFAMissionFrameMissions.CompleteDialog.BorderFrame.ViewButton)
-- Mission Tab
MissionTab = MissionFrame.MissionTab -- swap
S:HandleCloseButton(MissionTab.MissionPage.CloseButton)
S:HandleButton(MissionTab.MissionPage.StartMissionButton)
S:HandleScrollBar(_G.BFAMissionFrameMissionsListScrollFrameScrollBar)
-- Follower Tab
Follower = _G.BFAMissionFrameFollowers -- swap
local XPBar = MissionFrame.FollowerTab.XPBar
local Class = MissionFrame.FollowerTab.Class
Follower:StripTextures()
Follower:CreateBackdrop('Transparent')
S:HandleEditBox(Follower.SearchBox)
hooksecurefunc(Follower, 'ShowFollower', showFollower)
S:HandleScrollBar(_G.BFAMissionFrameFollowersListScrollFrameScrollBar)
S:HandleFollowerListOnUpdateData('BFAMissionFrameFollowers') -- The function needs to be updated for BFA
XPBar:StripTextures()
XPBar:SetStatusBarTexture(E.media.normTex)
XPBar:CreateBackdrop()
Class:Size(50, 43)
-- Shadowlands Mission
local CovenantMissionFrame = _G.CovenantMissionFrame
SkinMissionFrame(CovenantMissionFrame) -- currently dont use StripTextures here, cause it seems blizzard fucks this up /shurg
_G.CovenantMissionFrameMissions.RaisedFrameEdges:SetAlpha(0)
S:HandleIcon(_G.CovenantMissionFrameMissions.MaterialFrame.Icon)
--S:HandleScrollBar(_G.CovenantMissionFrameMissionsListScrollFrameScrollBar) -- Dont skin it, the "NEW" default ones looks amazing
-- Complete Missions
_G.CombatLog.CombatLogMessageFrame:StripTextures()
_G.CombatLog.ElevatedFrame:SetAlpha(0)
_G.CombatLog.CombatLogMessageFrame:CreateBackdrop('Transparent')
-- Adventures / Follower Tab
Follower = _G.CovenantMissionFrameFollowers -- swap
FollowerTab = CovenantMissionFrame.FollowerTab
hooksecurefunc(Follower, 'ShowFollower', showFollower)
Follower:StripTextures()
Follower:CreateBackdrop('Transparent')
FollowerTab:StripTextures()
FollowerTab.RaisedFrameEdges:SetAlpha(0)
S:HandleIcon(CovenantMissionFrame.FollowerTab.HealFollowerFrame.CostFrame.CostIcon)
S:HandleFollowerListOnUpdateData('CovenantMissionFrameFollowers')
if Follower.HealAllButton then
S:HandleButton(Follower.HealAllButton)
end
if _G.HealFollowerButtonTemplate then
S:HandleButton(_G.HealFollowerButtonTemplate)
end
-- Mission Tab
S:HandleButton(CovenantMissionFrame.MissionTab.MissionPage.StartMissionButton)
S:HandleCloseButton(CovenantMissionFrame.MissionTab.MissionPage.CloseButton)
S:HandleIcon(CovenantMissionFrame.MissionTab.MissionPage.CostFrame.CostIcon)
CovenantMissionFrame.MissionTab.MissionPage.Board:HookScript('OnShow', SkinMissionBoards)
CovenantMissionFrame.MissionComplete.Board:HookScript('OnShow', SkinMissionBoards)
end
local function SkinFollowerTooltip(frame)
if not frame then return end
S:HandleTooltipBorderedFrame(frame)
end
local function SkinAbilityTooltip(frame)
if not frame then return end
for i = 1, 9 do
select(i, frame:GetRegions()):Hide()
end
local icon = frame.Icon
icon:SetTexCoord(unpack(E.TexCoords))
if not frame.border then
frame.border = CreateFrame('Frame', nil, frame)
S:HandleIcon(frame.Icon, frame.border)
end
frame:CreateBackdrop('Transparent')
end
function S:GarrisonTooltips()
if not (E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.garrison and E.private.skins.blizzard.tooltip) then return end
SkinFollowerTooltip(_G.GarrisonFollowerTooltip)
SkinFollowerTooltip(_G.FloatingGarrisonFollowerTooltip)
SkinFollowerTooltip(_G.FloatingGarrisonMissionTooltip)
SkinFollowerTooltip(_G.FloatingGarrisonShipyardFollowerTooltip)
SkinFollowerTooltip(_G.GarrisonShipyardFollowerTooltip)
SkinAbilityTooltip(_G.GarrisonFollowerAbilityTooltip)
SkinAbilityTooltip(_G.FloatingGarrisonFollowerAbilityTooltip)
SkinAbilityTooltip(_G.GarrisonFollowerMissionAbilityWithoutCountersTooltip)
SkinAbilityTooltip(_G.GarrisonFollowerAbilityWithoutCountersTooltip)
S:HandleCloseButton(_G.FloatingGarrisonFollowerTooltip.CloseButton)
S:HandleCloseButton(_G.FloatingGarrisonFollowerAbilityTooltip.CloseButton)
S:HandleCloseButton(_G.FloatingGarrisonMissionTooltip.CloseButton)
S:HandleCloseButton(_G.FloatingGarrisonShipyardFollowerTooltip.CloseButton)
hooksecurefunc('GarrisonFollowerTooltipTemplate_SetGarrisonFollower', function(tooltipFrame)
-- Abilities
if tooltipFrame.numAbilitiesStyled == nil then
tooltipFrame.numAbilitiesStyled = 1
end
local numAbilitiesStyled = tooltipFrame.numAbilitiesStyled
local abilities = tooltipFrame.Abilities
local ability = abilities[numAbilitiesStyled]
while ability do
local icon = ability.Icon
icon:SetTexCoord(unpack(E.TexCoords))
if not ability.border then
ability.border = CreateFrame('Frame', nil, ability)
S:HandleIcon(ability.Icon, ability.border)
end
numAbilitiesStyled = numAbilitiesStyled + 1
ability = abilities[numAbilitiesStyled]
end
tooltipFrame.numAbilitiesStyled = numAbilitiesStyled
-- Traits
if tooltipFrame.numTraitsStyled == nil then
tooltipFrame.numTraitsStyled = 1
end
local numTraitsStyled = tooltipFrame.numTraitsStyled
local traits = tooltipFrame.Traits
local trait = traits[numTraitsStyled]
while trait do
local icon = trait.Icon
icon:SetTexCoord(unpack(E.TexCoords))
if not trait.border then
trait.border = CreateFrame('Frame', nil, trait)
S:HandleIcon(trait.Icon, trait.border)
end
numTraitsStyled = numTraitsStyled + 1
trait = traits[numTraitsStyled]
end
tooltipFrame.numTraitsStyled = numTraitsStyled
end)
hooksecurefunc('GarrisonFollowerTooltipTemplate_SetShipyardFollower', function(tooltipFrame)
-- Properties
if tooltipFrame.numPropertiesStyled == nil then
tooltipFrame.numPropertiesStyled = 1
end
local numPropertiesStyled = tooltipFrame.numPropertiesStyled
local properties = tooltipFrame.Properties
local property = properties[numPropertiesStyled]
while property do
local icon = property.Icon
icon:SetTexCoord(unpack(E.TexCoords))
if not property.border then
property.border = CreateFrame('Frame', nil, property)
S:HandleIcon(property.Icon, property.border)
end
numPropertiesStyled = numPropertiesStyled + 1
property = properties[numPropertiesStyled]
end
tooltipFrame.numPropertiesStyled = numPropertiesStyled
end)
end
S:AddCallbackForAddon('Blizzard_GarrisonUI')
S:AddCallback('GarrisonTooltips')

View File

@@ -0,0 +1,34 @@
local E, L, V, P, G = unpack(select(2, ...))
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
local C_Garrison_GetFollowerInfo = C_Garrison.GetFollowerInfo
local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS
function S:Blizzard_GarrisonTemplates()
if E.private.skins.blizzard.enable ~= true or (E.private.skins.blizzard.orderhall ~= true or E.private.skins.blizzard.garrison ~= true) then return end
hooksecurefunc(_G.GarrisonFollowerTabMixin, 'ShowFollower', function(s, followerID)
local followerInfo = followerID and C_Garrison_GetFollowerInfo(followerID)
if not followerInfo then return end
if not s.PortraitFrameStyled then
S:HandleGarrisonPortrait(s.PortraitFrame)
s.PortraitFrameStyled = true
end
local color = followerInfo.quality and ITEM_QUALITY_COLORS[followerInfo.quality]
if color then
if s.PortraitFrame.backdrop then
s.PortraitFrame.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
s.Name:SetVertexColor(color.r, color.g, color.b)
end
s.XPBar:ClearAllPoints()
s.XPBar:Point('BOTTOMLEFT', s.PortraitFrame, 'BOTTOMRIGHT', 7, -15)
end)
end
S:AddCallbackForAddon('Blizzard_GarrisonTemplates')

View File

@@ -0,0 +1,98 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local next, pairs, ipairs = next, pairs, ipairs
local hooksecurefunc = hooksecurefunc
local function handleGossipText()
local buttons = _G.GossipFrame.buttons
if buttons and next(buttons) then
for _, button in ipairs(buttons) do
local str = button:GetFontString()
if str then
str:SetTextColor(1, 1, 1)
local text = str:GetText()
if text then
local stripped = E:StripString(text)
str:SetText(stripped)
end
end
end
end
end
function S:GossipFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.gossip) then return end
_G.ItemTextFrame:StripTextures(true)
_G.ItemTextFrame:CreateBackdrop('Transparent')
_G.ItemTextScrollFrame:StripTextures()
_G.GossipFrame:CreateBackdrop('Transparent')
_G.GossipFramePortrait:Kill()
S:HandleCloseButton(_G.ItemTextFrameCloseButton)
S:HandleScrollBar(_G.GossipGreetingScrollFrameScrollBar, 5)
S:HandleScrollBar(_G.ItemTextScrollFrameScrollBar)
S:HandleNextPrevButton(_G.ItemTextPrevPageButton)
S:HandleNextPrevButton(_G.ItemTextNextPageButton)
_G.ItemTextPageText:SetTextColor(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)
local StripAllTextures = { 'GossipFrameGreetingPanel', 'GossipGreetingScrollFrame' }
for _, object in pairs(StripAllTextures) do
_G[object]:StripTextures()
end
local GossipFrame = _G.GossipFrame
S:HandlePortraitFrame(GossipFrame)
local GossipGreetingScrollFrame = _G.GossipGreetingScrollFrame
GossipGreetingScrollFrame:CreateBackdrop()
if E.private.skins.parchmentRemoverEnable then
hooksecurefunc('GossipFrameUpdate', handleGossipText)
_G.GossipGreetingText:SetTextColor(1, 1, 1)
handleGossipText()
else
GossipGreetingScrollFrame.spellTex = GossipGreetingScrollFrame:CreateTexture(nil, 'ARTWORK')
GossipGreetingScrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
GossipGreetingScrollFrame.spellTex:Point('TOPLEFT', 2, -2)
GossipGreetingScrollFrame.spellTex:Size(506, 615)
GossipGreetingScrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
end
_G.GossipFrameGreetingGoodbyeButton:StripTextures()
S:HandleButton(_G.GossipFrameGreetingGoodbyeButton)
for i = 1, 4 do
local notch = _G['NPCFriendshipStatusBarNotch'..i]
if notch then
notch:SetColorTexture(0, 0, 0)
notch:Size(1, 16)
end
end
local NPCFriendshipStatusBar = _G.NPCFriendshipStatusBar
NPCFriendshipStatusBar:StripTextures()
NPCFriendshipStatusBar:SetStatusBarTexture(E.media.normTex)
NPCFriendshipStatusBar:CreateBackdrop()
E:RegisterStatusBar(NPCFriendshipStatusBar)
NPCFriendshipStatusBar.icon:ClearAllPoints()
NPCFriendshipStatusBar.icon:Point('RIGHT', NPCFriendshipStatusBar, 'LEFT', 0, -3)
S:HandleIcon(NPCFriendshipStatusBar.icon)
end
S:AddCallback('GossipFrame')

View File

@@ -0,0 +1,24 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_NewPlayerExperienceGuide()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.guide) then return end
local frame = _G.GuideFrame
S:HandlePortraitFrame(frame)
S:HandleScrollBar(frame.ScrollFrame.ScrollBar)
S:HandleButton(frame.ScrollFrame.ConfirmationButton)
frame.ScrollFrame.Child.ObjectivesFrame:StripTextures()
frame.ScrollFrame.Child.ObjectivesFrame:CreateBackdrop('Transparent')
-- Texts if parchment is enabled
-- TO DO: Add Parchment option
frame.Title:SetTextColor(1, 1, 1)
frame.ScrollFrame.Child.Text:SetTextColor(1, 1, 1)
end
S:AddCallbackForAddon('Blizzard_NewPlayerExperienceGuide')

View File

@@ -0,0 +1,274 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local next, pairs, select, unpack = next, pairs, select, unpack
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local C_GuildInfo_CanViewOfficerNote = C_GuildInfo.CanViewOfficerNote
function S:Blizzard_GuildUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.guild) then return end
local GuildFrame = _G.GuildFrame
S:HandlePortraitFrame(GuildFrame)
S:HandleCloseButton(_G.GuildMemberDetailCloseButton)
S:HandleScrollBar(_G.GuildInfoFrameApplicantsContainerScrollBar)
local striptextures = {
'GuildFrameInset',
'GuildFrameBottomInset',
'GuildAllPerksFrame',
'GuildMemberDetailFrame',
'GuildMemberNoteBackground',
'GuildInfoFrameInfo',
'GuildLogContainer',
'GuildLogFrame',
'GuildRewardsFrame',
'GuildMemberOfficerNoteBackground',
'GuildTextEditContainer',
'GuildTextEditFrame',
'GuildRecruitmentRolesFrame',
'GuildRecruitmentAvailabilityFrame',
'GuildRecruitmentInterestFrame',
'GuildRecruitmentLevelFrame',
'GuildRecruitmentCommentFrame',
'GuildRecruitmentCommentInputFrame',
'GuildInfoFrameApplicantsContainer',
'GuildInfoFrameApplicants',
'GuildNewsBossModel',
'GuildNewsBossModelTextFrame',
}
_G.GuildRewardsFrameVisitText:ClearAllPoints()
_G.GuildRewardsFrameVisitText:Point('TOP', _G.GuildRewardsFrame, 'TOP', 0, 30)
for _, frame in pairs(striptextures) do
_G[frame]:StripTextures()
end
_G.GuildNewsBossModel:CreateBackdrop('Transparent')
_G.GuildNewsBossModelTextFrame:CreateBackdrop()
_G.GuildNewsBossModelTextFrame.backdrop:Point('TOPLEFT', _G.GuildNewsBossModel.backdrop, 'BOTTOMLEFT', 0, -1)
_G.GuildNewsBossModel:Point('TOPLEFT', GuildFrame, 'TOPRIGHT', 4, -43)
local buttons = {
'GuildMemberRemoveButton',
'GuildMemberGroupInviteButton',
'GuildAddMemberButton',
'GuildViewLogButton',
'GuildControlButton',
'GuildRecruitmentListGuildButton',
'GuildTextEditFrameAcceptButton',
'GuildRecruitmentInviteButton',
'GuildRecruitmentMessageButton',
'GuildRecruitmentDeclineButton',
}
for i, button in pairs(buttons) do
if i == 1 then
S:HandleButton(_G[button])
else
S:HandleButton(_G[button], true)
end
end
local checkbuttons = {
'Quest',
'Dungeon',
'Raid',
'PvP',
'RP',
'Weekdays',
'Weekends',
}
for _, frame in pairs(checkbuttons) do
S:HandleCheckBox(_G['GuildRecruitment'..frame..'Button'])
end
S:HandleCheckBox(_G.GuildRecruitmentTankButton:GetChildren())
S:HandleCheckBox(_G.GuildRecruitmentHealerButton:GetChildren())
S:HandleCheckBox(_G.GuildRecruitmentDamagerButton:GetChildren())
S:HandleButton(_G.GuildRecruitmentLevelAnyButton)
S:HandleButton(_G.GuildRecruitmentLevelMaxButton)
for i=1,5 do
S:HandleTab(_G['GuildFrameTab'..i])
end
S:HandleScrollBar(_G.GuildPerksContainerScrollBar, 4)
local GuildFactionBar = _G.GuildFactionBar
GuildFactionBar:StripTextures()
GuildFactionBar.progress:SetTexture(E.media.normTex)
E:RegisterStatusBar(GuildFactionBar.progress)
GuildFactionBar:CreateBackdrop()
GuildFactionBar.backdrop:Point('TOPLEFT', GuildFactionBar.progress, 'TOPLEFT', -E.Border, E.Border)
GuildFactionBar.backdrop:Point('BOTTOMRIGHT', GuildFactionBar, 'BOTTOMRIGHT', E.Spacing, E.PixelMode and 1 or 0)
--Roster
S:HandleScrollBar(_G.GuildRosterContainerScrollBar, 5)
S:HandleCheckBox(_G.GuildRosterShowOfflineButton)
for i=1, 4 do
_G['GuildRosterColumnButton'..i]:StripTextures(true)
end
S:HandleDropDownBox(_G.GuildRosterViewDropdown, 200)
for i=1, 14 do
S:HandleButton(_G['GuildRosterContainerButton'..i..'HeaderButton'], true)
end
--Detail Frame
_G.GuildMemberDetailFrame:CreateBackdrop('Transparent')
_G.GuildMemberNoteBackground:CreateBackdrop('Transparent')
_G.GuildMemberOfficerNoteBackground:CreateBackdrop('Transparent')
_G.GuildMemberRankDropdown:SetFrameLevel(_G.GuildMemberRankDropdown:GetFrameLevel() + 5)
S:HandleDropDownBox(_G.GuildMemberRankDropdown, 175)
--Increase height of GuildMemberDetailFrame by changing global variables
local GuildMemberDetailFrame = _G.GuildMemberDetailFrame
local GuildMemberDetailName = _G.GuildMemberDetailName
local GuildMemberDetailRankLabel = _G.GuildMemberDetailRankLabel
hooksecurefunc(GuildMemberDetailFrame, 'SetHeight', function(_, _, breakLoop)
if breakLoop then return; end
if C_GuildInfo_CanViewOfficerNote() then
GuildMemberDetailFrame:Height(_G.GUILD_DETAIL_OFFICER_HEIGHT + 50 + GuildMemberDetailName:GetHeight() + GuildMemberDetailRankLabel:GetHeight(), true)
else
GuildMemberDetailFrame:Height(_G.GUILD_DETAIL_NORM_HEIGHT + 50 + GuildMemberDetailName:GetHeight() + GuildMemberDetailRankLabel:GetHeight(), true)
end
end)
--News
_G.GuildNewsFrame:StripTextures()
for i=1, 17 do
if _G['GuildNewsContainerButton'..i] then
_G['GuildNewsContainerButton'..i].header:Kill()
end
end
_G.GuildNewsFiltersFrame:StripTextures()
_G.GuildNewsFiltersFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.GuildNewsFiltersFrameCloseButton)
for i = 1, #_G.GuildNewsFiltersFrame.GuildNewsFilterButtons do
S:HandleCheckBox(_G.GuildNewsFiltersFrame.GuildNewsFilterButtons[i])
end
_G.GuildNewsFiltersFrame:Point('TOPLEFT', GuildFrame, 'TOPRIGHT', 4, -20)
S:HandleScrollBar(_G.GuildNewsContainerScrollBar, 4)
--Info Frame
S:HandleScrollBar(_G.GuildInfoDetailsFrameScrollBar, 4)
for i=1, 3 do
_G['GuildInfoFrameTab'..i]:StripTextures()
end
local GuildInfoFrameInfo = _G.GuildInfoFrameInfo
local backdrop1 = CreateFrame('Frame', nil, GuildInfoFrameInfo, 'BackdropTemplate')
backdrop1:SetTemplate('Transparent')
backdrop1:SetFrameLevel(GuildInfoFrameInfo:GetFrameLevel() - 1)
backdrop1:Point('TOPLEFT', GuildInfoFrameInfo, 'TOPLEFT', 2, -22)
backdrop1:Point('BOTTOMRIGHT', GuildInfoFrameInfo, 'BOTTOMRIGHT', 0, 200)
local backdrop2 = CreateFrame('Frame', nil, GuildInfoFrameInfo, 'BackdropTemplate')
backdrop2:SetTemplate('Transparent')
backdrop2:SetFrameLevel(GuildInfoFrameInfo:GetFrameLevel() - 1)
backdrop2:Point('TOPLEFT', GuildInfoFrameInfo, 'TOPLEFT', 2, -158)
backdrop2:Point('BOTTOMRIGHT', GuildInfoFrameInfo, 'BOTTOMRIGHT', 0, 118)
local backdrop3 = CreateFrame('Frame', nil, GuildInfoFrameInfo, 'BackdropTemplate')
backdrop3:SetTemplate('Transparent')
backdrop3:SetFrameLevel(GuildInfoFrameInfo:GetFrameLevel() - 1)
backdrop3:Point('TOPLEFT', GuildInfoFrameInfo, 'TOPLEFT', 2, -233)
backdrop3:Point('BOTTOMRIGHT', GuildInfoFrameInfo, 'BOTTOMRIGHT', 0, 3)
_G.GuildRecruitmentCommentInputFrame:CreateBackdrop('Transparent')
for _, button in next, _G.GuildInfoFrameApplicantsContainer.buttons do
button.selectedTex:Kill()
button:GetHighlightTexture():Kill()
button:SetBackdrop()
end
--Text Edit Frame
_G.GuildTextEditFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.GuildTextEditScrollFrameScrollBar, 5)
_G.GuildTextEditContainer:CreateBackdrop('Transparent')
for i=1, _G.GuildTextEditFrame:GetNumChildren() do
local child = select(i, _G.GuildTextEditFrame:GetChildren())
if child:GetName() == 'GuildTextEditFrameCloseButton' and child:GetWidth() < 33 then
S:HandleCloseButton(child)
elseif child:GetName() == 'GuildTextEditFrameCloseButton' then
S:HandleButton(child, true)
end
end
--Guild Log
local GuildLogFrame = _G.GuildLogFrame
S:HandleScrollBar(_G.GuildLogScrollFrameScrollBar, 4)
GuildLogFrame:CreateBackdrop('Transparent')
--Blizzard has two buttons with the same name, this is a fucked up way of determining that it isn't the other button
for i=1, GuildLogFrame:GetNumChildren() do
local child = select(i, GuildLogFrame:GetChildren())
if child:GetName() == 'GuildLogFrameCloseButton' and child:GetWidth() < 33 then
S:HandleCloseButton(child)
elseif child:GetName() == 'GuildLogFrameCloseButton' then
S:HandleButton(child, true)
end
end
--Perks
for i=1, 9 do
local button = _G['GuildPerksContainerButton'..i]
button:DisableDrawLayer('BACKGROUND')
button:DisableDrawLayer('BORDER')
button.icon:SetTexCoord(unpack(E.TexCoords))
button:CreateBackdrop()
button.backdrop:SetOutside(button.icon)
end
--Rewards
S:HandleScrollBar(_G.GuildRewardsContainerScrollBar, 5)
for i=1, 8 do
local button = _G['GuildRewardsContainerButton'..i]
button:StripTextures()
if button.icon then
button.icon:SetTexCoord(unpack(E.TexCoords))
button.icon:ClearAllPoints()
button.icon:Point('TOPLEFT', 2, -2)
button:CreateBackdrop()
button.backdrop:SetOutside(button.icon)
button.icon:SetParent(button.backdrop)
end
end
end
function S:GuildInviteFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.guild) then return end
local GuildInviteFrame = _G.GuildInviteFrame
GuildInviteFrame:StripTextures()
GuildInviteFrame:CreateBackdrop('Transparent')
GuildInviteFrame.Points:ClearAllPoints()
GuildInviteFrame.Points:Point('TOP', GuildInviteFrame, 'CENTER', 15, -25)
S:HandleButton(_G.GuildInviteFrameJoinButton)
S:HandleButton(_G.GuildInviteFrameDeclineButton)
GuildInviteFrame:Height(225)
GuildInviteFrame:HookScript('OnEvent', function()
GuildInviteFrame:Height(225)
end)
_G.GuildInviteFrameWarningText:Kill()
end
S:AddCallbackForAddon('Blizzard_GuildUI')
S:AddCallback('GuildInviteFrame')

View File

@@ -0,0 +1,100 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select, unpack = select, unpack
local CreateFrame = CreateFrame
function S:Blizzard_GuildBankUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.gbank) then return end
local GuildBankFrame = _G.GuildBankFrame
GuildBankFrame:StripTextures()
GuildBankFrame:CreateBackdrop('Transparent')
_G.GuildBankEmblemFrame:StripTextures(true)
_G.GuildBankMoneyFrameBackground:Kill()
S:HandleScrollBar(_G.GuildBankPopupScrollFrameScrollBar)
--Close button doesn't have a fucking name, extreme hackage
for i = 1, GuildBankFrame:GetNumChildren() do
local child = select(i, GuildBankFrame:GetChildren())
if child.GetPushedTexture and child:GetPushedTexture() and not child:GetName() then
S:HandleCloseButton(child)
child:Point('TOPRIGHT', 0, 0)
child:SetFrameLevel(child:GetFrameLevel()+1)
end
end
S:HandleButton(_G.GuildBankFrameDepositButton, true)
S:HandleButton(_G.GuildBankFrameWithdrawButton, true)
S:HandleButton(_G.GuildBankInfoSaveButton, true)
S:HandleButton(_G.GuildBankFramePurchaseButton, true)
_G.GuildBankFrameWithdrawButton:Point('RIGHT', _G.GuildBankFrameDepositButton, 'LEFT', -2, 0)
_G.GuildBankInfoScrollFrame:Point('TOPLEFT', _G.GuildBankInfo, 'TOPLEFT', -10, 12)
_G.GuildBankInfoScrollFrame:StripTextures()
_G.GuildBankInfoScrollFrame:Width(_G.GuildBankInfoScrollFrame:GetWidth() - 8)
_G.GuildBankTransactionsScrollFrame:StripTextures()
GuildBankFrame.inset = CreateFrame('Frame', nil, GuildBankFrame, 'BackdropTemplate')
GuildBankFrame.inset:SetTemplate()
GuildBankFrame.inset:Point('TOPLEFT', 20, -58)
GuildBankFrame.inset:Point('BOTTOMRIGHT', -16, 60)
for i = 1, _G.NUM_GUILDBANK_COLUMNS do
_G['GuildBankColumn'..i]:StripTextures()
for x = 1, _G.NUM_SLOTS_PER_GUILDBANK_GROUP do
local button = _G['GuildBankColumn'..i..'Button'..x]
local icon = _G['GuildBankColumn'..i..'Button'..x..'IconTexture']
local texture = _G['GuildBankColumn'..i..'Button'..x..'NormalTexture']
if texture then
texture:SetTexture()
end
button:StyleButton()
button:CreateBackdrop(nil, true)
icon:SetInside()
icon:SetTexCoord(unpack(E.TexCoords))
S:HandleIconBorder(button.IconBorder)
end
end
for i = 1, _G.MAX_GUILDBANK_TABS do
local button = _G['GuildBankTab'..i..'Button']
local texture = _G['GuildBankTab'..i..'ButtonIconTexture']
_G['GuildBankTab'..i]:StripTextures(true)
button:StripTextures()
button:StyleButton(true)
button:CreateBackdrop(nil, true)
button.backdrop:SetAllPoints()
texture:SetInside()
texture:SetTexCoord(unpack(E.TexCoords))
end
for i = 1, 4 do
S:HandleTab(_G['GuildBankFrameTab'..i])
end
local GuildItemSearchBox = _G.GuildItemSearchBox
GuildItemSearchBox.Left:Kill()
GuildItemSearchBox.Middle:Kill()
GuildItemSearchBox.Right:Kill()
GuildItemSearchBox.searchIcon:Kill()
GuildItemSearchBox:CreateBackdrop('Overlay')
GuildItemSearchBox.backdrop:Point('TOPLEFT', 10, -1)
GuildItemSearchBox.backdrop:Point('BOTTOMRIGHT', -1, 1)
S:HandleScrollBar(_G.GuildBankTransactionsScrollFrameScrollBar)
S:HandleScrollBar(_G.GuildBankInfoScrollFrameScrollBar)
--Popup
_G.GuildBankPopupFrame:Show() --Toggle the frame in order to create the necessary button elements
_G.GuildBankPopupFrame:Hide()
S:HandleIconSelectionFrame(_G.GuildBankPopupFrame, _G.NUM_GUILDBANK_ICONS_SHOWN, 'GuildBankPopupButton', 'GuildBankPopup')
end
S:AddCallbackForAddon('Blizzard_GuildBankUI')

View File

@@ -0,0 +1,143 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local hooksecurefunc = hooksecurefunc
local GuildControlGetNumRanks = GuildControlGetNumRanks
local GetNumGuildBankTabs = GetNumGuildBankTabs
local function SkinGuildRanks()
for i=1, GuildControlGetNumRanks() do
local rankFrame = _G['GuildControlUIRankOrderFrameRank'..i]
if rankFrame then
if not rankFrame.nameBox.backdrop then
S:HandleButton(rankFrame.downButton)
S:HandleButton(rankFrame.upButton)
S:HandleButton(rankFrame.deleteButton)
S:HandleEditBox(rankFrame.nameBox)
end
rankFrame.nameBox.backdrop:ClearAllPoints()
rankFrame.nameBox.backdrop:Point('TOPLEFT', -2, -4)
rankFrame.nameBox.backdrop:Point('BOTTOMRIGHT', -4, 4)
end
end
end
local function fixSkin(frame)
frame.backdrop:Hide();
--Initiate fucked up method of creating a backdrop
if not E.PixelMode then
frame.bg1 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg1:SetDrawLayer('BACKGROUND', 4)
frame.bg1:SetTexture(E.media.normTex) --Default TukUI users this is normTex, normTex doesn't exist
E:RegisterStatusBar(frame.bg1)
frame.bg1:SetVertexColor(unpack(E.media.backdropcolor))
frame.bg1:Point('TOPLEFT', frame.backdrop, 'TOPLEFT', 4, -4)
frame.bg1:Point('BOTTOMRIGHT', frame.backdrop, 'BOTTOMRIGHT', -4, 4)
frame.bg2 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg2:SetDrawLayer('BACKGROUND', 3)
frame.bg2:SetColorTexture(0,0,0)
frame.bg2:Point('TOPLEFT', frame.backdrop, 'TOPLEFT', 3, -3)
frame.bg2:Point('BOTTOMRIGHT', frame.backdrop, 'BOTTOMRIGHT', -3, 3)
frame.bg3 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg3:SetDrawLayer('BACKGROUND', 2)
frame.bg3:SetColorTexture(unpack(E.media.bordercolor))
frame.bg3:Point('TOPLEFT', frame.backdrop, 'TOPLEFT', 2, -2)
frame.bg3:Point('BOTTOMRIGHT', frame.backdrop, 'BOTTOMRIGHT', -2, 2)
frame.bg4 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg4:SetDrawLayer('BACKGROUND', 1)
frame.bg4:SetColorTexture(0,0,0)
frame.bg4:Point('TOPLEFT', frame.backdrop, 'TOPLEFT', 1, -1)
frame.bg4:Point('BOTTOMRIGHT', frame.backdrop, 'BOTTOMRIGHT', -1, 1)
else
frame.bg1 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg1:SetDrawLayer('BACKGROUND', 4)
frame.bg1:SetTexture(E.media.normTex) --Default TukUI users this is normTex, normTex doesn't exist
E:RegisterStatusBar(frame.bg1)
frame.bg1:SetVertexColor(unpack(E.media.backdropcolor))
frame.bg1:SetInside(frame.backdrop)
frame.bg3 = frame:CreateTexture(nil, 'BACKGROUND')
frame.bg3:SetDrawLayer('BACKGROUND', 2)
frame.bg3:SetColorTexture(unpack(E.media.bordercolor))
frame.bg3:SetAllPoints(frame.backdrop)
end
end
function S:Blizzard_GuildControlUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.guildcontrol) then return end
local GuildControlUI = _G.GuildControlUI
GuildControlUI:StripTextures()
GuildControlUI:CreateBackdrop('Transparent')
_G.GuildControlUIHbar:StripTextures()
_G.GuildControlUIRankBankFrameInset:StripTextures()
_G.GuildControlUIRankBankFrameInsetScrollFrame:StripTextures()
S:HandleCloseButton(_G.GuildControlUICloseButton)
S:HandleScrollBar(_G.GuildControlUIRankBankFrameInsetScrollFrameScrollBar);
hooksecurefunc('GuildControlUI_RankOrder_Update', SkinGuildRanks)
_G.GuildControlUIRankOrderFrameNewButton:HookScript('OnClick', function()
E:Delay(1, SkinGuildRanks)
end)
S:HandleDropDownBox(_G.GuildControlUINavigationDropDown)
S:HandleDropDownBox(_G.GuildControlUIRankSettingsFrameRankDropDown, 180)
_G.GuildControlUINavigationDropDownButton:Width(20)
_G.GuildControlUIRankSettingsFrameRankDropDownButton:Width(20)
for i=1, _G.NUM_RANK_FLAGS do
if _G['GuildControlUIRankSettingsFrameCheckbox'..i] then
S:HandleCheckBox(_G['GuildControlUIRankSettingsFrameCheckbox'..i])
end
end
S:HandleButton(_G.GuildControlUIRankOrderFrameNewButton)
local GuildControlUIRankSettingsFrameGoldBox = _G.GuildControlUIRankSettingsFrameGoldBox
S:HandleEditBox(GuildControlUIRankSettingsFrameGoldBox)
GuildControlUIRankSettingsFrameGoldBox.backdrop:Point('TOPLEFT', -2, -4)
GuildControlUIRankSettingsFrameGoldBox.backdrop:Point('BOTTOMRIGHT', 2, 4)
GuildControlUIRankSettingsFrameGoldBox:StripTextures()
_G.GuildControlUIRankBankFrame:StripTextures()
local once = false
hooksecurefunc('GuildControlUI_BankTabPermissions_Update', function()
local numTabs = GetNumGuildBankTabs()
if numTabs < _G.MAX_BUY_GUILDBANK_TABS then
numTabs = numTabs + 1
end
for i=1, numTabs do
local tab = _G['GuildControlBankTab'..i..'Owned']
local icon = tab.tabIcon
icon:SetTexCoord(unpack(E.TexCoords))
if once == false then
S:HandleButton(_G['GuildControlBankTab'..i..'BuyPurchaseButton'])
S:HandleEditBox(_G['GuildControlBankTab'..i..'OwnedStackBox'])
S:HandleCheckBox(_G['GuildControlBankTab'..i..'OwnedViewCheck'])
S:HandleCheckBox(_G['GuildControlBankTab'..i..'OwnedDepositCheck'])
S:HandleCheckBox(_G['GuildControlBankTab'..i..'OwnedUpdateInfoCheck'])
fixSkin(_G['GuildControlBankTab'..i..'OwnedStackBox'])
fixSkin(_G['GuildControlBankTab'..i..'OwnedViewCheck'])
fixSkin(_G['GuildControlBankTab'..i..'OwnedDepositCheck'])
fixSkin(_G['GuildControlBankTab'..i..'OwnedUpdateInfoCheck'])
end
end
once = true
end)
S:HandleDropDownBox(_G.GuildControlUIRankBankFrameRankDropDown, 180)
_G.GuildControlUIRankBankFrameRankDropDownButton:Width(20)
end
S:AddCallbackForAddon('Blizzard_GuildControlUI')

View File

@@ -0,0 +1,39 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
function S:GuildRegistrarFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.guildregistrar) then return end
local GuildRegistrarFrame = _G.GuildRegistrarFrame
S:HandlePortraitFrame(GuildRegistrarFrame)
_G.GuildRegistrarFrameEditBox:StripTextures()
_G.GuildRegistrarGreetingFrame:StripTextures()
S:HandleButton(_G.GuildRegistrarFrameGoodbyeButton)
S:HandleButton(_G.GuildRegistrarFrameCancelButton)
S:HandleButton(_G.GuildRegistrarFramePurchaseButton)
S:HandleEditBox(_G.GuildRegistrarFrameEditBox)
for i = 1, _G.GuildRegistrarFrameEditBox:GetNumRegions() do
local region = select(i, _G.GuildRegistrarFrameEditBox:GetRegions())
if region and region:IsObjectType('Texture') then
if region:GetTexture() == [[Interface\ChatFrame\UI-ChatInputBorder-Left]] or region:GetTexture() == [[Interface\ChatFrame\UI-ChatInputBorder-Right]] then
region:Kill()
end
end
end
_G.GuildRegistrarFrameEditBox:Height(20)
for i=1, 2 do
_G['GuildRegistrarButton'..i]:GetFontString():SetTextColor(1, 1, 1)
end
_G.GuildRegistrarPurchaseText:SetTextColor(1, 1, 1)
_G.AvailableServicesText:SetTextColor(1, 1, 0)
end
S:AddCallback('GuildRegistrarFrame')

View File

@@ -0,0 +1,174 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local function OnEnter(f)
if f.selected:IsShown() or f:IsEnabled() then
f.text:SetTextColor(1, 1, 1)
end
end
local function OnLeave(f)
if f.selected:IsShown() or f:IsEnabled() then
f.text:SetTextColor(1, .8, 0)
end
end
local function HandleTabButton(button)
button.selected:SetColorTexture(1, 1, 1, 0.3)
button.selected:SetDrawLayer('BACKGROUND')
S:HandleButton(button)
button:SetScript('OnEnter', OnEnter)
button:SetScript('OnLeave', OnLeave)
end
function S:HelpFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.help) then return end
local frame = _G.HelpFrame
frame:StripTextures()
frame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.HelpFrameCloseButton, frame.backdrop)
local browser = _G.HelpBrowser
browser.BrowserInset:StripTextures()
local frames = {
_G.HelpFrameLeftInset,
_G.HelpFrameMainInset,
_G.HelpFrameKnowledgebase,
_G.HelpFrameKnowledgebaseErrorFrame,
}
local buttons = {
_G.HelpFrameAccountSecurityOpenTicket,
_G.HelpFrameOpenTicketHelpOpenTicket,
_G.HelpFrameKnowledgebaseSearchButton,
_G.HelpFrameKnowledgebaseNavBarHomeButton,
_G.HelpFrameCharacterStuckStuck,
_G.HelpFrameSubmitSuggestionSubmit,
_G.HelpFrameReportBugSubmit,
}
for i = 1, #frames do
frames[i]:StripTextures(true)
frames[i]:CreateBackdrop('Transparent')
end
local Header = _G.HelpFrame.Header
Header:StripTextures(true)
Header:CreateBackdrop(nil, true)
Header:SetFrameLevel(Header:GetFrameLevel() + 2)
_G.HelpFrameKnowledgebaseErrorFrame:SetFrameLevel(_G.HelpFrameKnowledgebaseErrorFrame:GetFrameLevel() + 2)
local HelpFrameReportBugScrollFrame = _G.HelpFrameReportBugScrollFrame
HelpFrameReportBugScrollFrame:StripTextures()
HelpFrameReportBugScrollFrame:CreateBackdrop('Transparent')
HelpFrameReportBugScrollFrame.backdrop:Point('TOPLEFT', -4, 4)
HelpFrameReportBugScrollFrame.backdrop:Point('BOTTOMRIGHT', 6, -4)
for i = 1, _G.HelpFrameReportBug:GetNumChildren() do
local child = select(i, _G.HelpFrameReportBug:GetChildren())
if child and not child:GetName() then
child:StripTextures()
end
end
S:HandleScrollBar(_G.HelpFrameReportBugScrollFrameScrollBar)
local HelpFrameSubmitSuggestionScrollFrame = _G.HelpFrameSubmitSuggestionScrollFrame
HelpFrameSubmitSuggestionScrollFrame:StripTextures()
HelpFrameSubmitSuggestionScrollFrame:CreateBackdrop('Transparent')
HelpFrameSubmitSuggestionScrollFrame.backdrop:Point('TOPLEFT', -4, 4)
HelpFrameSubmitSuggestionScrollFrame.backdrop:Point('BOTTOMRIGHT', 6, -4)
for i = 1, _G.HelpFrameSubmitSuggestion:GetNumChildren() do
local child = select(i, _G.HelpFrameSubmitSuggestion:GetChildren())
if not child:GetName() then
child:StripTextures()
end
end
S:HandleScrollBar(_G.HelpFrameSubmitSuggestionScrollFrameScrollBar)
S:HandleScrollBar(_G.HelpFrameKnowledgebaseScrollFrame2ScrollBar)
-- skin sub buttons
for i = 1, #buttons do
buttons[i]:StripTextures(true)
S:HandleButton(buttons[i], true)
if buttons[i].text then
buttons[i].text:ClearAllPoints()
buttons[i].text:Point('CENTER')
buttons[i].text:SetJustifyH('CENTER')
end
end
-- skin main buttons
for i = 1, 6 do
HandleTabButton(_G['HelpFrameButton'..i])
end
HandleTabButton(_G.HelpFrameButton16)
-- skin table options
for i = 1, _G.HelpFrameKnowledgebaseScrollFrameScrollChild:GetNumChildren() do
local b = _G['HelpFrameKnowledgebaseScrollFrameButton'..i]
b:StripTextures(true)
S:HandleButton(b, true)
end
--Navigation buttons
local HelpBrowserNavHome = _G.HelpBrowserNavHome
S:HandleButton(HelpBrowserNavHome)
HelpBrowserNavHome:Size(26)
HelpBrowserNavHome:ClearAllPoints()
HelpBrowserNavHome:Point('BOTTOMLEFT', _G.HelpBrowser, 'TOPLEFT', -5, 9)
S:HandleNextPrevButton(_G.HelpBrowserNavBack)
_G.HelpBrowserNavBack:Size(26)
S:HandleNextPrevButton(_G.HelpBrowserNavForward)
_G.HelpBrowserNavForward:Size(26)
S:HandleButton(_G.HelpBrowserNavReload)
_G.HelpBrowserNavReload:Size(26)
S:HandleButton(_G.HelpBrowserNavStop)
_G.HelpBrowserNavStop:Size(26)
S:HandleButton(_G.HelpBrowserBrowserSettings)
_G.HelpBrowserBrowserSettings:Size(26)
_G.HelpBrowserBrowserSettings:ClearAllPoints()
_G.HelpBrowserBrowserSettings:Point('TOPRIGHT', _G.HelpFrameCloseButton, 'TOPLEFT', -3, -8)
_G.BrowserSettingsTooltip:StripTextures()
_G.BrowserSettingsTooltip:CreateBackdrop('Transparent')
S:HandleButton(_G.BrowserSettingsTooltip.CookiesButton)
-- skin misc items
_G.HelpFrameKnowledgebaseSearchBox:ClearAllPoints()
_G.HelpFrameKnowledgebaseSearchBox:Point('TOPLEFT', _G.HelpFrameMainInset, 'TOPLEFT', 13, -10)
_G.HelpFrameKnowledgebaseNavBar:StripTextures()
local HelpFrame = _G.HelpFrame
HelpFrame:StripTextures(true)
HelpFrame:CreateBackdrop('Transparent')
S:HandleEditBox(_G.HelpFrameKnowledgebaseSearchBox)
S:HandleScrollBar(_G.HelpFrameKnowledgebaseScrollFrameScrollBar, 5)
S:HandleCloseButton(_G.HelpFrameKnowledgebaseErrorFrameCloseButton, _G.HelpFrameKnowledgebaseErrorFrame.backdrop)
--Hearth Stone Button
local HelpFrameCharacterStuckHearthstone = _G.HelpFrameCharacterStuckHearthstone
HelpFrameCharacterStuckHearthstone:StyleButton()
HelpFrameCharacterStuckHearthstone:CreateBackdrop(nil, true)
HelpFrameCharacterStuckHearthstone.IconTexture:SetInside()
HelpFrameCharacterStuckHearthstone.IconTexture:SetTexCoord(unpack(E.TexCoords))
S:HandleButton(_G.HelpFrameGM_ResponseNeedMoreHelp)
S:HandleButton(_G.HelpFrameGM_ResponseCancel)
for i = 1, _G.HelpFrameGM_Response:GetNumChildren() do
local child = select(i, _G.HelpFrameGM_Response:GetChildren())
if child and child:IsObjectType('Frame') and not child:GetName() then
child:CreateBackdrop()
end
end
end
S:AddCallback('HelpFrame')

View File

@@ -0,0 +1,105 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local hooksecurefunc = hooksecurefunc
function S:Blizzard_InspectUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.inspect) then return end
local InspectFrame = _G.InspectFrame
S:HandlePortraitFrame(InspectFrame)
S:HandleButton(_G.InspectPaperDollFrame.ViewButton)
_G.SpecializationRing:Hide()
S:HandleIcon(_G.SpecializationSpecIcon, true)
_G.SpecializationSpecIcon:Size(55, 55) -- 70, 70 default size
--Create portrait element for the PvP Frame so we can see prestige
local InspectPVPFrame = _G.InspectPVPFrame
local portrait = InspectPVPFrame:CreateTexture(nil, 'OVERLAY')
portrait:Size(55, 55)
portrait:Point('CENTER', InspectPVPFrame.PortraitBackground)
InspectPVPFrame.PortraitBackground:Kill()
InspectPVPFrame.PortraitBackground:ClearAllPoints()
InspectPVPFrame.PortraitBackground:Point('TOPLEFT', 5, -5)
InspectPVPFrame.SmallWreath:ClearAllPoints()
InspectPVPFrame.SmallWreath:Point('TOPLEFT', -2, -25)
-- PVE Talents
for i = 1, 7 do
for j = 1, 3 do
local button = _G['TalentsTalentRow'..i..'Talent'..j]
button:StripTextures()
S:HandleIcon(button.icon, true)
end
end
-- PVP Talents
local function SkinPvpTalents(slot)
local icon = slot.Texture
slot:StripTextures()
S:HandleIcon(icon, true)
slot.Border:Hide()
end
for i = 1, 3 do
SkinPvpTalents(InspectPVPFrame['TalentSlot'..i])
end
for i = 1, 4 do
S:HandleTab(_G['InspectFrameTab'..i])
end
local InspectModelFrame = _G.InspectModelFrame
InspectModelFrame:StripTextures()
InspectModelFrame:CreateBackdrop()
InspectModelFrame.backdrop:Point('TOPLEFT', E.PixelMode and -1 or -2, E.PixelMode and 1 or 2)
InspectModelFrame.backdrop:Point('BOTTOMRIGHT', E.PixelMode and 1 or 2, E.PixelMode and -2 or -3)
_G.InspectModelFrameBorderTopLeft:Kill()
_G.InspectModelFrameBorderTopRight:Kill()
_G.InspectModelFrameBorderTop:Kill()
_G.InspectModelFrameBorderLeft:Kill()
_G.InspectModelFrameBorderRight:Kill()
_G.InspectModelFrameBorderBottomLeft:Kill()
_G.InspectModelFrameBorderBottomRight:Kill()
_G.InspectModelFrameBorderBottom:Kill()
_G.InspectModelFrameBorderBottom2:Kill()
--Re-add the overlay texture which was removed via StripTextures
InspectModelFrame.BackgroundOverlay:SetColorTexture(0, 0, 0)
-- Give inspect frame model backdrop it's color back
for _, corner in pairs({'TopLeft','TopRight','BotLeft','BotRight'}) do
local bg = _G['InspectModelFrameBackground'..corner];
if bg then
bg:SetDesaturated(false);
bg.ignoreDesaturated = true; -- so plugins can prevent this if they want.
hooksecurefunc(bg, 'SetDesaturated', function(bckgnd, value)
if value and bckgnd.ignoreDesaturated then
bckgnd:SetDesaturated(false);
end
end)
end
end
for _, Slot in pairs({_G.InspectPaperDollItemsFrame:GetChildren()}) do
if Slot:IsObjectType('Button') or Slot:IsObjectType('ItemButton') then
S:HandleIcon(Slot.icon, true)
Slot.icon.backdrop:SetFrameLevel(Slot:GetFrameLevel())
Slot.icon:SetInside()
Slot:StripTextures()
Slot:StyleButton()
S:HandleIconBorder(Slot.IconBorder, Slot.icon.backdrop)
end
end
InspectPVPFrame.BG:Kill()
_G.InspectGuildFrameBG:Kill()
_G.InspectTalentFrame:StripTextures()
end
S:AddCallbackForAddon('Blizzard_InspectUI')

View File

@@ -0,0 +1,15 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_IslandsPartyPoseUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.islandsPartyPose) then return end
local IslandsPartyPoseFrame = _G.IslandsPartyPoseFrame
IslandsPartyPoseFrame:StripTextures()
IslandsPartyPoseFrame:CreateBackdrop('Transparent')
S:HandleButton(IslandsPartyPoseFrame.LeaveButton)
end
S:AddCallbackForAddon('Blizzard_IslandsPartyPoseUI')

View File

@@ -0,0 +1,30 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
function S:Blizzard_IslandsQueueUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.islandQueue) then return end
local IslandsFrame = _G.IslandsQueueFrame
S:HandlePortraitFrame(IslandsFrame)
S:HandleButton(IslandsFrame.DifficultySelectorFrame.QueueButton)
local WeeklyQuest = IslandsFrame.WeeklyQuest
local StatusBar = WeeklyQuest.StatusBar
WeeklyQuest.OverlayFrame:StripTextures()
-- StatusBar
StatusBar:CreateBackdrop()
--StatusBar Icon
WeeklyQuest.QuestReward.Icon:SetTexCoord(unpack(E.TexCoords))
-- Maybe Adjust me
local TutorialFrame = IslandsFrame.TutorialFrame
S:HandleButton(TutorialFrame.Leave)
S:HandleCloseButton(TutorialFrame.CloseButton)
end
S:AddCallbackForAddon('Blizzard_IslandsQueueUI')

View File

@@ -0,0 +1,49 @@
local E, L, V, P, G = unpack(select(2, ...))
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_ItemInteractionUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.itemInteraction) then return end
local ItemInteractionFrame = _G.ItemInteractionFrame
S:HandlePortraitFrame(ItemInteractionFrame)
do -- ItemSlot
local ItemSlot = ItemInteractionFrame.ItemSlot
ItemSlot:StripTextures()
ItemSlot:CreateBackdrop()
ItemSlot:Size(58)
ItemSlot:ClearAllPoints()
ItemSlot:Point('TOPLEFT', 143, -97)
ItemSlot.Icon:ClearAllPoints()
ItemSlot.Icon:Point('TOPLEFT', 1, -1)
ItemSlot.Icon:Point('BOTTOMRIGHT', -1, 1)
S:HandleIcon(ItemSlot.Icon)
ItemSlot.GlowOverlay:SetAlpha(0)
end
local ButtonFrame = ItemInteractionFrame.ButtonFrame
ButtonFrame:StripTextures()
ButtonFrame.MoneyFrameEdge:SetAlpha(0)
ButtonFrame.BlackBorder:SetAlpha(0)
ButtonFrame.ButtonBorder:Hide()
ButtonFrame.ButtonBottomBorder:Hide()
ButtonFrame.Currency:Point('BOTTOMRIGHT', ButtonFrame.MoneyFrameEdge, -9, 4)
ButtonFrame.MoneyFrame:Point('BOTTOMRIGHT', ButtonFrame.MoneyFrameEdge, 7, 5)
S:HandleIcon(ButtonFrame.Currency.icon)
S:HandleButton(ButtonFrame.ActionButton)
-- Temp mover
ItemInteractionFrame:SetMovable(true)
ItemInteractionFrame:RegisterForDrag('LeftButton')
ItemInteractionFrame:SetScript('OnDragStart', function(s) s:StartMoving() end)
ItemInteractionFrame:SetScript('OnDragStop', function(s) s:StopMovingOrSizing() end)
end
S:AddCallbackForAddon('Blizzard_ItemInteractionUI')

View File

@@ -0,0 +1,51 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local hooksecurefunc = hooksecurefunc
local GetItemUpgradeItemInfo = GetItemUpgradeItemInfo
local BAG_ITEM_QUALITY_COLORS = BAG_ITEM_QUALITY_COLORS
function S:Blizzard_ItemUpgradeUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.itemUpgrade) then return end
local ItemUpgradeFrame = _G.ItemUpgradeFrame
S:HandlePortraitFrame(ItemUpgradeFrame)
local ItemButton = ItemUpgradeFrame.ItemButton
ItemButton:CreateBackdrop()
ItemButton.backdrop:SetAllPoints()
ItemButton.Frame:SetTexture('')
ItemButton:SetPushedTexture('')
S:HandleItemButton(ItemButton)
local Highlight = ItemButton:GetHighlightTexture()
Highlight:SetColorTexture(1, 1, 1, .25)
hooksecurefunc('ItemUpgradeFrame_Update', function()
local icon, _, quality = GetItemUpgradeItemInfo()
if icon then
ItemButton.IconTexture:SetTexCoord(unpack(E.TexCoords))
local color = BAG_ITEM_QUALITY_COLORS[quality or 1]
ItemButton.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
else
ItemButton.IconTexture:SetTexture('')
ItemButton.backdrop:SetBackdropBorderColor(0, 0, 0)
end
end)
local TextFrame = ItemUpgradeFrame.TextFrame
TextFrame:StripTextures()
TextFrame:CreateBackdrop('Transparent')
TextFrame.backdrop:Point('TOPLEFT', ItemButton.IconTexture, 'TOPRIGHT', 3, 1)
TextFrame.backdrop:Point('BOTTOMRIGHT', -6, 2)
_G.ItemUpgradeFrameMoneyFrame:StripTextures()
S:HandleIcon(_G.ItemUpgradeFrameMoneyFrame.Currency.icon)
S:HandleButton(_G.ItemUpgradeFrameUpgradeButton, true)
ItemUpgradeFrame.FinishedGlow:Kill()
ItemUpgradeFrame.ButtonFrame:DisableDrawLayer('BORDER')
end
S:AddCallbackForAddon('Blizzard_ItemUpgradeUI')

View File

@@ -0,0 +1,728 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local LBG = E.Libs.ButtonGlow
local _G = _G
local unpack, ipairs, pairs, select = unpack, ipairs, pairs, select
local min, strlower = min, strlower
local hooksecurefunc = hooksecurefunc
local GetLFGProposal = GetLFGProposal
local GetLFGProposalMember = GetLFGProposalMember
local GetBackgroundTexCoordsForRole = GetBackgroundTexCoordsForRole
local C_ChallengeMode_GetAffixInfo = C_ChallengeMode.GetAffixInfo
local C_LFGList_GetApplicationInfo = C_LFGList.GetApplicationInfo
local C_LFGList_GetAvailableActivities = C_LFGList.GetAvailableActivities
local C_LFGList_GetAvailableRoles = C_LFGList.GetAvailableRoles
local C_MythicPlus_GetCurrentAffixes = C_MythicPlus.GetCurrentAffixes
local function LFDQueueFrameRoleButtonIconOnShow(self)
LBG.ShowOverlayGlow(self:GetParent().checkButton)
end
local function LFDQueueFrameRoleButtonIconOnHide(self)
LBG.HideOverlayGlow(self:GetParent().checkButton)
end
local function HandleGoldIcon(button)
local Button = _G[button]
if Button.backdrop then return end
local count = _G[button..'Count']
local nameFrame = _G[button..'NameFrame']
local iconTexture = _G[button..'IconTexture']
Button:CreateBackdrop()
Button.backdrop:ClearAllPoints()
Button.backdrop:Point('LEFT', 1, 0)
Button.backdrop:Size(42)
iconTexture:SetTexCoord(unpack(E.TexCoords))
iconTexture:SetDrawLayer('OVERLAY')
iconTexture:SetParent(Button.backdrop)
iconTexture:SetInside()
count:SetParent(Button.backdrop)
count:SetDrawLayer('OVERLAY')
nameFrame:SetTexture()
nameFrame:Size(118, 39)
end
local function SkinItemButton(parentFrame, _, index)
local parentName = parentFrame:GetName()
local item = _G[parentName..'Item'..index]
if item and not item.backdrop then
item:CreateBackdrop()
item.backdrop:ClearAllPoints()
item.backdrop:Point('LEFT', 1, 0)
item.backdrop:Size(42)
item.Icon:SetTexCoord(unpack(E.TexCoords))
item.Icon:SetDrawLayer('OVERLAY')
item.Icon:SetParent(item.backdrop)
item.Icon:SetInside()
item.Count:SetDrawLayer('OVERLAY')
item.Count:SetParent(item.backdrop)
item.NameFrame:SetTexture()
item.NameFrame:Size(118, 39)
item.shortageBorder:SetTexture()
item.roleIcon1:SetParent(item.backdrop)
item.roleIcon2:SetParent(item.backdrop)
S:HandleIconBorder(item.IconBorder)
end
end
local function SetRoleIcon(self, resultID)
local _,_,_,_, role = C_LFGList_GetApplicationInfo(resultID)
self.RoleIcon:SetTexCoord(GetBackgroundTexCoordsForRole(role))
end
local function HandleAffixIcons(self)
for _, frame in ipairs(self.Affixes) do
frame.Border:SetTexture()
frame.Portrait:SetTexture()
if frame.info then
frame.Portrait:SetTexture(_G.CHALLENGE_MODE_EXTRA_AFFIX_INFO[frame.info.key].texture)
elseif frame.affixID then
local _, _, filedataid = C_ChallengeMode_GetAffixInfo(frame.affixID)
frame.Portrait:SetTexture(filedataid)
end
frame.Portrait:SetTexCoord(unpack(E.TexCoords))
end
end
function S:LookingForGroupFrames()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.lfg) then return end
local PVEFrame = _G.PVEFrame
S:HandlePortraitFrame(PVEFrame)
_G.RaidFinderQueueFrame:StripTextures(true)
_G.PVEFrameBg:Hide()
PVEFrame.shadows:Kill() -- We need to kill it, because if you switch to Mythic Dungeon Tab and back, it shows back up.
S:HandleButton(_G.LFDQueueFramePartyBackfillBackfillButton)
S:HandleButton(_G.LFDQueueFramePartyBackfillNoBackfillButton)
_G.GroupFinderFrame.groupButton1.icon:SetTexture([[Interface\Icons\INV_Helmet_08]])
_G.GroupFinderFrame.groupButton2.icon:SetTexture([[Interface\LFGFrame\UI-LFR-PORTRAIT]])
_G.GroupFinderFrame.groupButton3.icon:SetTexture([[Interface\Icons\Icon_Scenarios]])
_G.LFGDungeonReadyDialogBackground:Kill()
S:HandleButton(_G.LFGDungeonReadyDialogEnterDungeonButton)
S:HandleButton(_G.LFGDungeonReadyDialogLeaveQueueButton)
S:HandleCloseButton(_G.LFGDungeonReadyDialogCloseButton)
_G.LFGDungeonReadyDialog:StripTextures()
_G.LFGDungeonReadyDialog:CreateBackdrop('Transparent')
_G.LFGDungeonReadyStatus:StripTextures()
_G.LFGDungeonReadyStatus:CreateBackdrop('Transparent')
_G.LFGDungeonReadyDialogRoleIconTexture:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
_G.LFGDungeonReadyDialogRoleIconTexture:SetAlpha(0.5)
hooksecurefunc(_G.LFGDungeonReadyDialog, 'SetBackdrop', function(frame, backdrop)
if backdrop ~= nil then frame:SetBackdrop() end
end)
hooksecurefunc('LFGDungeonReadyPopup_Update', function()
local _, _, _, _, _, _, role = GetLFGProposal()
if _G.LFGDungeonReadyDialogRoleIcon:IsShown() then
if role == 'DAMAGER' then
_G.LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(_G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
elseif role == 'TANK' then
_G.LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(_G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
elseif role == 'HEALER' then
_G.LFGDungeonReadyDialogRoleIconTexture:SetTexCoord(_G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
end
end
end)
hooksecurefunc('LFGDungeonReadyStatusIndividual_UpdateIcon', function(button)
local _, role = GetLFGProposalMember(button:GetID())
button.texture:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
button.texture:SetAlpha(0.6)
if role == 'DAMAGER' then
button.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
elseif role == 'TANK' then
button.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
elseif role == 'HEALER' then
button.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
end
end)
_G.LFDQueueFrame:StripTextures(true)
_G.LFDQueueFrameRoleButtonTankIncentiveIcon:SetAlpha(0)
_G.LFDQueueFrameRoleButtonHealerIncentiveIcon:SetAlpha(0)
_G.LFDQueueFrameRoleButtonDPSIncentiveIcon:SetAlpha(0)
_G.LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript('OnShow', LFDQueueFrameRoleButtonIconOnShow)
_G.LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript('OnShow', LFDQueueFrameRoleButtonIconOnShow)
_G.LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript('OnShow', LFDQueueFrameRoleButtonIconOnShow)
_G.LFDQueueFrameRoleButtonTankIncentiveIcon:HookScript('OnHide', LFDQueueFrameRoleButtonIconOnHide)
_G.LFDQueueFrameRoleButtonHealerIncentiveIcon:HookScript('OnHide', LFDQueueFrameRoleButtonIconOnHide)
_G.LFDQueueFrameRoleButtonDPSIncentiveIcon:HookScript('OnHide', LFDQueueFrameRoleButtonIconOnHide)
_G.LFDQueueFrameRoleButtonTank.shortageBorder:Kill()
_G.LFDQueueFrameRoleButtonDPS.shortageBorder:Kill()
_G.LFDQueueFrameRoleButtonHealer.shortageBorder:Kill()
_G.LFGDungeonReadyDialog.filigree:SetAlpha(0)
_G.LFGDungeonReadyDialog.bottomArt:SetAlpha(0)
S:HandleCloseButton(_G.LFGDungeonReadyStatusCloseButton)
local RoleButtons1 = {
_G.LFDQueueFrameRoleButtonHealer,
_G.LFDQueueFrameRoleButtonDPS,
_G.LFDQueueFrameRoleButtonLeader,
_G.LFDQueueFrameRoleButtonTank,
_G.RaidFinderQueueFrameRoleButtonHealer,
_G.RaidFinderQueueFrameRoleButtonDPS,
_G.RaidFinderQueueFrameRoleButtonLeader,
_G.RaidFinderQueueFrameRoleButtonTank,
_G.LFGInvitePopupRoleButtonTank,
_G.LFGInvitePopupRoleButtonHealer,
_G.LFGInvitePopupRoleButtonDPS,
_G.LFGListApplicationDialog.TankButton,
_G.LFGListApplicationDialog.HealerButton,
_G.LFGListApplicationDialog.DamagerButton,
_G.RolePollPopupRoleButtonTank,
_G.RolePollPopupRoleButtonHealer,
_G.RolePollPopupRoleButtonDPS,
}
for _, roleButton in pairs(RoleButtons1) do
S:HandleCheckBox(roleButton.checkButton or roleButton.CheckButton)
roleButton:DisableDrawLayer('ARTWORK')
roleButton:DisableDrawLayer('OVERLAY')
if not roleButton.background then
local isLeader = roleButton:GetName() ~= nil and roleButton:GetName():find('Leader') or false
if not isLeader then
roleButton.background = roleButton:CreateTexture(nil, 'BACKGROUND')
roleButton.background:Size(80, 80)
roleButton.background:Point('CENTER')
roleButton.background:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
roleButton.background:SetAlpha(0.65)
local buttonName = roleButton:GetName() ~= nil and roleButton:GetName() or roleButton.role
roleButton.background:SetTexCoord(GetBackgroundTexCoordsForRole((strlower(buttonName):find('tank') and 'TANK') or (strlower(buttonName):find('healer') and 'HEALER') or 'DAMAGER'))
end
end
end
hooksecurefunc('SetCheckButtonIsRadio', function(button)
S:HandleCheckBox(button)
end)
--Fix issue with role buttons overlapping each other (Blizzard bug)
local repositionCheckButtons = {
_G.LFGListApplicationDialog.TankButton.CheckButton,
_G.LFGListApplicationDialog.HealerButton.CheckButton,
_G.LFGListApplicationDialog.DamagerButton.CheckButton,
}
for _, checkButton in pairs(repositionCheckButtons) do
checkButton:ClearAllPoints()
checkButton:Point('BOTTOMLEFT', 0, 0)
end
hooksecurefunc('LFGListApplicationDialog_UpdateRoles', function(self) --Copy from Blizzard, we just fix position
local availTank, availHealer, availDPS = C_LFGList_GetAvailableRoles()
local avail1, avail2
if availTank then
avail1 = self.TankButton
end
if availHealer then
if avail1 then
avail2 = self.HealerButton
else
avail1 = self.HealerButton
end
end
if availDPS then
if avail1 then
avail2 = self.DamagerButton
else
avail1 = self.DamagerButton
end
end
if avail2 then
avail1:ClearAllPoints();
avail1:Point('TOPRIGHT', self, 'TOP', -40, -35)
avail2:ClearAllPoints()
avail2:Point('TOPLEFT', self, 'TOP', 40, -35)
elseif avail1 then
avail1:ClearAllPoints()
avail1:Point('TOP', self, 'TOP', 0, -35)
end
end)
_G.LFDQueueFrameRoleButtonLeader.leadIcon = _G.LFDQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
_G.LFDQueueFrameRoleButtonLeader.leadIcon:SetTexture(E.Media.Textures.LeaderHQ)
_G.LFDQueueFrameRoleButtonLeader.leadIcon:Point(_G.LFDQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint(), -10, 5)
_G.LFDQueueFrameRoleButtonLeader.leadIcon:Size(50)
_G.LFDQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.6)
_G.LFDQueueFrameRoleButtonTankBackground:SetTexture(E.Media.Textures.RolesHQ)
_G.LFDQueueFrameRoleButtonHealerBackground:SetTexture(E.Media.Textures.RolesHQ)
_G.LFDQueueFrameRoleButtonDPSBackground:SetTexture(E.Media.Textures.RolesHQ)
_G.RaidFinderQueueFrameRoleButtonLeader.leadIcon = _G.RaidFinderQueueFrameRoleButtonLeader:CreateTexture(nil, 'BACKGROUND')
_G.RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetTexture(E.Media.Textures.LeaderHQ)
_G.RaidFinderQueueFrameRoleButtonLeader.leadIcon:Point(_G.RaidFinderQueueFrameRoleButtonLeader:GetNormalTexture():GetPoint(), -10, 5)
_G.RaidFinderQueueFrameRoleButtonLeader.leadIcon:Size(50)
_G.RaidFinderQueueFrameRoleButtonLeader.leadIcon:SetAlpha(0.6)
hooksecurefunc('LFG_DisableRoleButton', function(button)
if button.checkButton:GetChecked() then
button.checkButton:SetAlpha(1)
else
button.checkButton:SetAlpha(0)
end
if button.background then
button.background:Show()
end
end)
hooksecurefunc('LFG_EnableRoleButton', function(button)
button.checkButton:SetAlpha(1)
end)
hooksecurefunc('LFG_PermanentlyDisableRoleButton', function(self)
if self.background then
self.background:Show()
self.background:SetDesaturated(true)
end
end)
for i = 1, 3 do
local bu = _G.GroupFinderFrame['groupButton'..i]
bu.ring:Kill()
bu.bg:Kill()
S:HandleButton(bu)
bu.icon:Size(45)
bu.icon:ClearAllPoints()
bu.icon:Point('LEFT', 10, 0)
S:HandleIcon(bu.icon, true)
end
for i = 1, 3 do
S:HandleTab(_G['PVEFrameTab'..i])
end
_G.PVEFrameTab1:Point('BOTTOMLEFT', PVEFrame, 'BOTTOMLEFT', 19, E.PixelMode and -31 or -32)
-- Raid finder
S:HandleButton(_G.LFDQueueFrameFindGroupButton)
_G.LFDParentFrame:StripTextures()
_G.LFDParentFrameInset:StripTextures()
HandleGoldIcon('LFDQueueFrameRandomScrollFrameChildFrameMoneyReward')
HandleGoldIcon('RaidFinderQueueFrameScrollFrameChildFrameMoneyReward')
for i = 1, _G.NUM_LFD_CHOICE_BUTTONS do
S:HandleCheckBox(_G['LFDQueueFrameSpecificListButton'..i].enableButton, nil, true)
end
hooksecurefunc('LFGDungeonListButton_SetDungeon', function(button)
if button and button.expandOrCollapseButton:IsShown() then
if button.isCollapsed then
button.expandOrCollapseButton:SetNormalTexture(E.Media.Textures.PlusButton);
else
button.expandOrCollapseButton:SetNormalTexture(E.Media.Textures.MinusButton);
end
end
end)
for i = 1, _G.NUM_LFR_CHOICE_BUTTONS do
local bu = _G['LFRQueueFrameSpecificListButton'..i].enableButton
S:HandleCheckBox(bu, nil, true)
end
S:HandleDropDownBox(_G.LFDQueueFrameTypeDropDown)
-- Raid Finder
_G.RaidFinderFrame:StripTextures()
_G.RaidFinderFrameRoleInset:StripTextures()
S:HandleDropDownBox(_G.RaidFinderQueueFrameSelectionDropDown)
_G.RaidFinderFrameFindRaidButton:StripTextures()
S:HandleButton(_G.RaidFinderFrameFindRaidButton)
_G.RaidFinderQueueFrame:StripTextures()
_G.RaidFinderQueueFrameScrollFrameScrollBar:StripTextures()
S:HandleScrollBar(_G.RaidFinderQueueFrameScrollFrameScrollBar)
--Skin Reward Items (This works for all frames, LFD, Raid, Scenario)
hooksecurefunc('LFGRewardsFrame_SetItemButton', SkinItemButton)
-- Looking for raid
_G.LFRBrowseFrameListScrollFrame:StripTextures()
_G.LFRBrowseFrame:HookScript('OnShow', function()
if not _G.LFRBrowseFrameListScrollFrameScrollBar.skinned then
S:HandleScrollBar(_G.LFRBrowseFrameListScrollFrameScrollBar)
_G.LFRBrowseFrameListScrollFrameScrollBar.skinned = true
end
end)
_G.LFRBrowseFrameRoleInset:DisableDrawLayer('BORDER')
_G.RaidBrowserFrameBg:Hide()
_G.LFRQueueFrameSpecificListScrollFrameScrollBackgroundTopLeft:Hide()
_G.LFRQueueFrameSpecificListScrollFrameScrollBackgroundBottomRight:Hide()
_G.LFRQueueFrameCommentScrollFrame:CreateBackdrop()
_G.LFRBrowseFrameColumnHeader1:Width(94) --Fix the columns being slightly off
_G.LFRBrowseFrameColumnHeader2:Width(38)
_G.RaidBrowserFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.RaidBrowserFrameCloseButton)
S:HandleButton(_G.LFRQueueFrameFindGroupButton)
S:HandleButton(_G.LFRQueueFrameAcceptCommentButton)
local RoleButtons2 = {
_G.LFRQueueFrameRoleButtonHealer,
_G.LFRQueueFrameRoleButtonDPS,
_G.LFRQueueFrameRoleButtonTank,
}
S:HandleScrollBar(_G.LFRQueueFrameCommentScrollFrameScrollBar)
S:HandleScrollBar(_G.LFDQueueFrameSpecificListScrollFrameScrollBar)
_G.LFDQueueFrameSpecificListScrollFrame:StripTextures()
_G.RaidBrowserFrame:HookScript('OnShow', function()
if not _G.LFRQueueFrameSpecificListScrollFrameScrollBar.skinned then
S:HandleScrollBar(_G.LFRQueueFrameSpecificListScrollFrameScrollBar)
_G.LFRBrowseFrame:StripTextures()
for _, roleButton in pairs(RoleButtons2) do
roleButton:SetNormalTexture('')
S:HandleCheckBox(roleButton.checkButton, nil, true)
roleButton:GetChildren():SetFrameLevel(roleButton:GetChildren():GetFrameLevel() + 1)
end
for i=1, 2 do
local tab = _G['LFRParentFrameSideTab'..i]
tab:DisableDrawLayer('BACKGROUND')
tab:GetNormalTexture():SetTexCoord(unpack(E.TexCoords))
tab:GetNormalTexture():SetInside()
tab.pushed = true
tab:CreateBackdrop()
tab.backdrop:SetAllPoints()
tab:StyleButton(true)
hooksecurefunc(tab:GetHighlightTexture(), 'SetTexture', function(highlight, texPath)
if texPath ~= nil then
highlight:SetTexture()
end
end)
hooksecurefunc(tab:GetCheckedTexture(), 'SetTexture', function(highlight, texPath)
if texPath ~= nil then
highlight:SetTexture()
end
end)
end
for i=1, 7 do
local tab = _G['LFRBrowseFrameColumnHeader'..i]
tab:DisableDrawLayer('BACKGROUND')
end
S:HandleDropDownBox(_G.LFRBrowseFrameRaidDropDown)
S:HandleButton(_G.LFRBrowseFrameRefreshButton)
S:HandleButton(_G.LFRBrowseFrameInviteButton)
S:HandleButton(_G.LFRBrowseFrameSendMessageButton)
_G.LFRQueueFrameSpecificListScrollFrameScrollBar.skinned = true
end
end)
--[[LFGInvitePopup_Update('Elvz', true, true, true)
StaticPopupSpecial_Show(LFGInvitePopup);]]
_G.LFGInvitePopup:StripTextures()
_G.LFGInvitePopup:CreateBackdrop('Transparent')
S:HandleButton(_G.LFGInvitePopupAcceptButton)
S:HandleButton(_G.LFGInvitePopupDeclineButton)
S:HandleButton(_G[_G.LFDQueueFrame.PartyBackfill:GetName()..'BackfillButton'])
S:HandleButton(_G[_G.LFDQueueFrame.PartyBackfill:GetName()..'NoBackfillButton'])
S:HandleButton(_G[_G.RaidFinderQueueFrame.PartyBackfill:GetName()..'BackfillButton'])
S:HandleButton(_G[_G.RaidFinderQueueFrame.PartyBackfill:GetName()..'NoBackfillButton'])
_G.LFDQueueFrameRandomScrollFrameScrollBar:StripTextures()
S:HandleScrollBar(_G.LFDQueueFrameRandomScrollFrameScrollBar)
--LFGListFrame
local LFGListFrame = _G.LFGListFrame
LFGListFrame.CategorySelection.Inset:StripTextures()
S:HandleButton(LFGListFrame.CategorySelection.StartGroupButton)
S:HandleButton(LFGListFrame.CategorySelection.FindGroupButton)
LFGListFrame.CategorySelection.StartGroupButton:ClearAllPoints()
LFGListFrame.CategorySelection.StartGroupButton:Point('BOTTOMLEFT', -1, 3)
LFGListFrame.CategorySelection.FindGroupButton:ClearAllPoints()
LFGListFrame.CategorySelection.FindGroupButton:Point('BOTTOMRIGHT', -6, 3)
LFGListFrame.EntryCreation.Inset:StripTextures()
S:HandleButton(LFGListFrame.EntryCreation.CancelButton)
S:HandleButton(LFGListFrame.EntryCreation.ListGroupButton)
LFGListFrame.EntryCreation.CancelButton:ClearAllPoints()
LFGListFrame.EntryCreation.CancelButton:Point('BOTTOMLEFT', -1, 3)
LFGListFrame.EntryCreation.ListGroupButton:ClearAllPoints()
LFGListFrame.EntryCreation.ListGroupButton:Point('BOTTOMRIGHT', -6, 3)
S:HandleEditBox(LFGListFrame.EntryCreation.Description)
S:HandleEditBox(LFGListFrame.EntryCreation.Name)
S:HandleEditBox(LFGListFrame.EntryCreation.ItemLevel.EditBox)
S:HandleEditBox(LFGListFrame.EntryCreation.HonorLevel.EditBox)
S:HandleEditBox(LFGListFrame.EntryCreation.VoiceChat.EditBox)
S:HandleDropDownBox(_G.LFGListEntryCreationActivityDropDown)
S:HandleDropDownBox(_G.LFGListEntryCreationGroupDropDown)
S:HandleDropDownBox(_G.LFGListEntryCreationCategoryDropDown, 330)
S:HandleCheckBox(LFGListFrame.EntryCreation.ItemLevel.CheckButton)
S:HandleCheckBox(LFGListFrame.EntryCreation.HonorLevel.CheckButton)
S:HandleCheckBox(LFGListFrame.EntryCreation.VoiceChat.CheckButton)
S:HandleCheckBox(LFGListFrame.EntryCreation.PrivateGroup.CheckButton)
LFGListFrame.EntryCreation.ActivityFinder.Dialog:StripTextures()
LFGListFrame.EntryCreation.ActivityFinder.Dialog:CreateBackdrop('Transparent')
LFGListFrame.EntryCreation.ActivityFinder.Dialog.BorderFrame:StripTextures()
LFGListFrame.EntryCreation.ActivityFinder.Dialog.BorderFrame:CreateBackdrop('Transparent')
S:HandleEditBox(LFGListFrame.EntryCreation.ActivityFinder.Dialog.EntryBox)
S:HandleScrollBar(_G.LFGListEntryCreationSearchScrollFrameScrollBar)
S:HandleButton(LFGListFrame.EntryCreation.ActivityFinder.Dialog.SelectButton)
S:HandleButton(LFGListFrame.EntryCreation.ActivityFinder.Dialog.CancelButton)
_G.LFGListApplicationDialog:StripTextures()
_G.LFGListApplicationDialog:CreateBackdrop('Transparent')
S:HandleButton(_G.LFGListApplicationDialog.SignUpButton)
S:HandleButton(_G.LFGListApplicationDialog.CancelButton)
S:HandleEditBox(_G.LFGListApplicationDialogDescription)
_G.LFGListInviteDialog:StripTextures()
_G.LFGListInviteDialog:CreateBackdrop('Transparent')
S:HandleButton(_G.LFGListInviteDialog.AcknowledgeButton)
S:HandleButton(_G.LFGListInviteDialog.AcceptButton)
S:HandleButton(_G.LFGListInviteDialog.DeclineButton)
_G.LFGListInviteDialog.RoleIcon:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
hooksecurefunc('LFGListInviteDialog_Show', SetRoleIcon)
S:HandleEditBox(LFGListFrame.SearchPanel.SearchBox)
--[[local columns = {
Name = true,
Tank = true,
Healer = true,
Damager = true
}
for x in pairs(columns) do
LFGListFrame.SearchPanel[x..'ColumnHeader'].Left:Hide()
LFGListFrame.SearchPanel[x..'ColumnHeader'].Middle:Hide()
LFGListFrame.SearchPanel[x..'ColumnHeader'].Right:Hide()
end]]
S:HandleButton(LFGListFrame.SearchPanel.BackButton)
S:HandleButton(LFGListFrame.SearchPanel.SignUpButton)
S:HandleButton(_G.LFGListSearchPanelScrollFrame.StartGroupButton)
LFGListFrame.SearchPanel.BackButton:ClearAllPoints()
LFGListFrame.SearchPanel.BackButton:Point('BOTTOMLEFT', -1, 3)
LFGListFrame.SearchPanel.SignUpButton:ClearAllPoints()
LFGListFrame.SearchPanel.SignUpButton:Point('BOTTOMRIGHT', -6, 3)
LFGListFrame.SearchPanel.ResultsInset:StripTextures()
S:HandleScrollBar(_G.LFGListSearchPanelScrollFrameScrollBar)
S:HandleButton(LFGListFrame.SearchPanel.FilterButton)
LFGListFrame.SearchPanel.FilterButton:Point('LEFT', LFGListFrame.SearchPanel.SearchBox, 'RIGHT', 5, 0)
S:HandleButton(LFGListFrame.SearchPanel.RefreshButton)
LFGListFrame.SearchPanel.RefreshButton:Size(24)
LFGListFrame.SearchPanel.RefreshButton.Icon:Point('CENTER')
hooksecurefunc('LFGListApplicationViewer_UpdateApplicant', function(button)
if not button.DeclineButton.template then
S:HandleButton(button.DeclineButton, nil, true)
end
if not button.InviteButton.template then
S:HandleButton(button.InviteButton)
end
end)
hooksecurefunc('LFGListSearchEntry_Update', function(button)
if not button.CancelButton.template then
S:HandleButton(button.CancelButton, nil, true)
end
end)
hooksecurefunc('LFGListSearchPanel_UpdateAutoComplete', function(self)
for i = 1, LFGListFrame.SearchPanel.AutoCompleteFrame:GetNumChildren() do
local child = select(i, LFGListFrame.SearchPanel.AutoCompleteFrame:GetChildren())
if child and not child.isSkinned and child:IsObjectType('Button') then
S:HandleButton(child)
child.isSkinned = true
end
end
local text = self.SearchBox:GetText()
local matchingActivities = C_LFGList_GetAvailableActivities(self.categoryID, nil, self.filters, text)
local numResults = min(#matchingActivities, _G.MAX_LFG_LIST_SEARCH_AUTOCOMPLETE_ENTRIES)
for i = 2, numResults do
local button = self.AutoCompleteFrame.Results[i]
if button and not button.moved then
button:Point('TOPLEFT', self.AutoCompleteFrame.Results[i-1], 'BOTTOMLEFT', 0, -2)
button:Point('TOPRIGHT', self.AutoCompleteFrame.Results[i-1], 'BOTTOMRIGHT', 0, -2)
button.moved = true
end
end
self.AutoCompleteFrame:Height(numResults * (self.AutoCompleteFrame.Results[1]:GetHeight() + 3.5) + 8)
end)
LFGListFrame.SearchPanel.AutoCompleteFrame:StripTextures()
LFGListFrame.SearchPanel.AutoCompleteFrame:CreateBackdrop('Transparent')
LFGListFrame.SearchPanel.AutoCompleteFrame.backdrop:Point('TOPLEFT', LFGListFrame.SearchPanel.AutoCompleteFrame, 'TOPLEFT', 0, 3)
LFGListFrame.SearchPanel.AutoCompleteFrame.backdrop:Point('BOTTOMRIGHT', LFGListFrame.SearchPanel.AutoCompleteFrame, 'BOTTOMRIGHT', 6, 3)
LFGListFrame.SearchPanel.AutoCompleteFrame:Point('TOPLEFT', LFGListFrame.SearchPanel.SearchBox, 'BOTTOMLEFT', -2, -8)
LFGListFrame.SearchPanel.AutoCompleteFrame:Point('TOPRIGHT', LFGListFrame.SearchPanel.SearchBox, 'BOTTOMRIGHT', -4, -8)
--ApplicationViewer (Custom Groups)
LFGListFrame.ApplicationViewer.EntryName:FontTemplate()
LFGListFrame.ApplicationViewer.InfoBackground:SetTexCoord(unpack(E.TexCoords))
S:HandleCheckBox(LFGListFrame.ApplicationViewer.AutoAcceptButton)
LFGListFrame.ApplicationViewer.Inset:StripTextures()
LFGListFrame.ApplicationViewer.Inset:CreateBackdrop('Transparent')
S:HandleButton(LFGListFrame.ApplicationViewer.NameColumnHeader, true)
S:HandleButton(LFGListFrame.ApplicationViewer.RoleColumnHeader, true)
S:HandleButton(LFGListFrame.ApplicationViewer.ItemLevelColumnHeader, true)
LFGListFrame.ApplicationViewer.NameColumnHeader:ClearAllPoints()
LFGListFrame.ApplicationViewer.NameColumnHeader:Point('BOTTOMLEFT', LFGListFrame.ApplicationViewer.Inset, 'TOPLEFT', 0, 1)
LFGListFrame.ApplicationViewer.NameColumnHeader.Label:FontTemplate()
LFGListFrame.ApplicationViewer.RoleColumnHeader:ClearAllPoints()
LFGListFrame.ApplicationViewer.RoleColumnHeader:Point('LEFT', LFGListFrame.ApplicationViewer.NameColumnHeader, 'RIGHT', 1, 0)
LFGListFrame.ApplicationViewer.RoleColumnHeader.Label:FontTemplate()
LFGListFrame.ApplicationViewer.ItemLevelColumnHeader:ClearAllPoints()
LFGListFrame.ApplicationViewer.ItemLevelColumnHeader:Point('LEFT', LFGListFrame.ApplicationViewer.RoleColumnHeader, 'RIGHT', 1, 0)
LFGListFrame.ApplicationViewer.ItemLevelColumnHeader.Label:FontTemplate()
LFGListFrame.ApplicationViewer.PrivateGroup:FontTemplate()
S:HandleButton(LFGListFrame.ApplicationViewer.RefreshButton)
LFGListFrame.ApplicationViewer.RefreshButton:Size(24, 24)
LFGListFrame.ApplicationViewer.RefreshButton:ClearAllPoints()
LFGListFrame.ApplicationViewer.RefreshButton:Point('BOTTOMRIGHT', LFGListFrame.ApplicationViewer.Inset, 'TOPRIGHT', 16, 4)
S:HandleButton(LFGListFrame.ApplicationViewer.RemoveEntryButton, true)
S:HandleButton(LFGListFrame.ApplicationViewer.EditButton, true)
LFGListFrame.ApplicationViewer.RemoveEntryButton:ClearAllPoints()
LFGListFrame.ApplicationViewer.RemoveEntryButton:Point('BOTTOMLEFT', -1, 3)
LFGListFrame.ApplicationViewer.EditButton:ClearAllPoints()
LFGListFrame.ApplicationViewer.EditButton:Point('BOTTOMRIGHT', -6, 3)
local LFGListApplicationViewerScrollFrameScrollBar = _G.LFGListApplicationViewerScrollFrameScrollBar
S:HandleScrollBar(LFGListApplicationViewerScrollFrameScrollBar)
LFGListApplicationViewerScrollFrameScrollBar:ClearAllPoints()
LFGListApplicationViewerScrollFrameScrollBar:Point('TOPLEFT', LFGListFrame.ApplicationViewer.Inset, 'TOPRIGHT', 0, -14)
LFGListApplicationViewerScrollFrameScrollBar:Point('BOTTOMLEFT', LFGListFrame.ApplicationViewer.Inset, 'BOTTOMRIGHT', 0, 14)
hooksecurefunc('LFGListCategorySelection_AddButton', function(self, btnIndex, categoryID, filters)
local button = self.CategoryButtons[btnIndex]
if button then
if not button.isSkinned then
button:CreateBackdrop()
button.backdrop:SetAllPoints()
button.Icon:SetDrawLayer('BACKGROUND', 2)
button.Icon:SetTexCoord(unpack(E.TexCoords))
button.Icon:SetInside()
button.Cover:Hide()
button.HighlightTexture:SetColorTexture(1, 1, 1, 0.1)
button.HighlightTexture:SetInside()
--Fix issue with labels not following changes to GameFontNormal as they should
button.Label:SetFontObject(_G.GameFontNormal)
button.isSkinned = true
end
button.SelectedTexture:Hide()
local selected = self.selectedCategory == categoryID and self.selectedFilters == filters
if selected then
button.backdrop:SetBackdropBorderColor(1, 1, 0)
else
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end
end)
end
function S:Blizzard_ChallengesUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.lfg) then return end
local ChallengesFrame = _G.ChallengesFrame
ChallengesFrame:DisableDrawLayer('BACKGROUND')
_G.ChallengesFrameInset:StripTextures()
-- Mythic+ KeyStoneFrame
local KeyStoneFrame = _G.ChallengesKeystoneFrame
KeyStoneFrame:CreateBackdrop('Transparent')
S:HandleCloseButton(KeyStoneFrame.CloseButton)
S:HandleButton(KeyStoneFrame.StartButton)
hooksecurefunc('ChallengesFrame_Update', function(self)
for _, frame in ipairs(self.DungeonIcons) do
if not frame.backdrop then
frame:GetRegions():SetAlpha(0)
frame:CreateBackdrop('Transparent')
frame.backdrop:SetAllPoints()
S:HandleIcon(frame.Icon, true)
frame.Icon:SetInside()
end
end
end)
hooksecurefunc(ChallengesFrame.WeeklyInfo, 'SetUp', function(self)
local affixes = C_MythicPlus_GetCurrentAffixes()
if affixes then
HandleAffixIcons(self.Child)
end
end)
hooksecurefunc(KeyStoneFrame, 'Reset', function(self)
self:GetRegions():SetAlpha(0)
self.InstructionBackground:SetAlpha(0)
end)
hooksecurefunc(KeyStoneFrame, 'OnKeystoneSlotted', HandleAffixIcons)
-- New Season Frame
local NoticeFrame = _G.ChallengesFrame.SeasonChangeNoticeFrame
S:HandleButton(NoticeFrame.Leave)
NoticeFrame:StripTextures()
NoticeFrame:CreateBackdrop()
NoticeFrame:SetFrameLevel(5)
NoticeFrame.NewSeason:SetTextColor(1, .8, 0)
NoticeFrame.NewSeason:SetShadowOffset(1, -1)
NoticeFrame.SeasonDescription:SetTextColor(1, 1, 1)
NoticeFrame.SeasonDescription:SetShadowOffset(1, -1)
NoticeFrame.SeasonDescription2:SetTextColor(1, 1, 1)
NoticeFrame.SeasonDescription2:SetShadowOffset(1, -1)
NoticeFrame.SeasonDescription3:SetTextColor(1, .8, 0)
NoticeFrame.SeasonDescription3:SetShadowOffset(1, -1)
local affix = NoticeFrame.Affix
affix.AffixBorder:Hide()
affix.Portrait:SetTexCoord(unpack(E.TexCoords))
hooksecurefunc(affix, 'SetUp', function(self, affixID)
local _, _, texture = C_ChallengeMode_GetAffixInfo(affixID)
if texture then
affix.Portrait:SetTexture(texture)
end
end)
end
S:AddCallback('LookingForGroupFrames')
S:AddCallbackForAddon('Blizzard_ChallengesUI')

View File

@@ -0,0 +1,68 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local hooksecurefunc = hooksecurefunc
function S:LookingForGuildFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.lfguild) then return end
local LookingForGuildFrame = _G.LookingForGuildFrame
S:HandlePortraitFrame(LookingForGuildFrame)
local checkbox = {
'LookingForGuildPvPButton',
'LookingForGuildWeekendsButton',
'LookingForGuildWeekdaysButton',
'LookingForGuildRPButton',
'LookingForGuildRaidButton',
'LookingForGuildQuestButton',
'LookingForGuildDungeonButton',
}
-- skin checkboxes
for _, v in pairs(checkbox) do
S:HandleCheckBox(_G[v])
end
-- have to skin these checkboxes seperate for some reason o_O
S:HandleCheckBox(_G.LookingForGuildTankButton.checkButton)
S:HandleCheckBox(_G.LookingForGuildHealerButton.checkButton)
S:HandleCheckBox(_G.LookingForGuildDamagerButton.checkButton)
S:HandleScrollBar(_G.LookingForGuildBrowseFrameContainerScrollBar)
S:HandleButton(_G.LookingForGuildBrowseButton)
S:HandleButton(_G.LookingForGuildRequestButton)
_G.LookingForGuildCommentInputFrame:CreateBackdrop()
_G.LookingForGuildCommentInputFrame:StripTextures(false)
-- skin container buttons on browse and request page
for i = 1, 5 do
_G['LookingForGuildBrowseFrameContainerButton'..i]:SetBackdrop()
_G['LookingForGuildAppsFrameContainerButton'..i]:SetBackdrop()
end
-- skin tabs
for i= 1, 3 do
S:HandleTab(_G['LookingForGuildFrameTab'..i])
end
_G.GuildFinderRequestMembershipFrame:StripTextures(true)
_G.GuildFinderRequestMembershipFrame:SetTemplate('Transparent')
S:HandleButton(_G.GuildFinderRequestMembershipFrameAcceptButton)
S:HandleButton(_G.GuildFinderRequestMembershipFrameCancelButton)
_G.GuildFinderRequestMembershipFrameInputFrame:StripTextures()
_G.GuildFinderRequestMembershipFrameInputFrame:SetTemplate()
end
function S:Blizzard_LookingForGuildUI()
if _G.LookingForGuildFrame then -- frame exists
S:LookingForGuildFrame()
else -- not yet, wait until it is exists
hooksecurefunc('LookingForGuildFrame_CreateUIElements', S.LookingForGuildFrame)
end
end
S:AddCallbackForAddon('Blizzard_LookingForGuildUI')

View File

@@ -0,0 +1,98 @@
<Ui xmlns='http://www.blizzard.com/wow/ui/'>
<Script file='Achievement.lua'/>
<Script file='Addonmanager.lua'/>
<Script file='AdventureMap.lua'/>
<Script file='Alerts.lua'/>
<Script file='AlliedRaces.lua'/>
<Script file='Archaeology.lua'/>
<Script file='Artifact.lua'/>
<Script file='AuctionHouse.lua'/>
<Script file='Azerite.lua'/>
<Script file='AzeriteEssence.lua'/>
<Script file='AzeriteRespec.lua'/>
<Script file='Bags.lua'/>
<Script file='Battlenet.lua'/>
<Script file='BGMap.lua'/>
<Script file='Binding.lua'/>
<Script file='BlackMarket.lua'/>
<Script file='BlizzardOptions.lua'/>
<Script file='Calendar.lua'/>
<Script file='Channels.lua'/>
<Script file='Character.lua'/>
<Script file='Collectables.lua'/>
<Script file='CombatLog.lua' />
<Script file='Communities.lua'/>
<Script file='Contribution.lua'/>
<Script file='DeathRecap.lua'/>
<Script file='Debug.lua'/>
<Script file='DressingRoom.lua'/>
<Script file='EncounterJournal.lua'/>
<Script file='FlightMap.lua'/>
<Script file='Friends.lua'/>
<Script file='Garrison.lua'/>
<Script file='GarrisonTemplate.lua'/>
<Script file='GMChat.lua'/>
<Script file='Gossip.lua'/>
<Script file='Guild.lua'/>
<Script file='GuildBank.lua'/>
<Script file='GuildControl.lua'/>
<Script file='GuildRegistrar.lua'/>
<Script file='Help.lua'/>
<Script file='Inspect.lua'/>
<Script file='IslandPartyPose.lua'/>
<Script file='IslandQueue.lua'/>
<Script file='ItemInteraction.lua'/>
<Script file='ItemUpgrade.lua'/>
<Script file='LFG.lua'/>
<Script file='LFGuild.lua'/>
<Script file='Loot.lua'/>
<Script file='LossControl.lua'/>
<Script file='Macro.lua'/>
<Script file='Mail.lua'/>
<Script file='Merchant.lua'/>
<Script file='MirrorTimers.lua'/>
<Script file='Misc.lua'/>
<Script file='NonRaid.lua'/>
<Script file='ObjectiveTracker.lua'/>
<Script file='Obliterum.lua'/>
<Script file='Orderhall.lua'/>
<Script file='PetBattle.lua'/>
<Script file='Petition.lua'/>
<Script file='PVP.lua'/>
<Script file='PVPMatch.lua'/>
<Script file='Quest.lua'/>
<Script file='QuestChoice.lua'/>
<Script file='Raid.lua'/>
<Script file='ScrappingMachine.lua'/>
<Script file='Socket.lua'/>
<Script file='SpellBook.lua'/>
<Script file='Stable.lua'/>
<Script file='Tabard.lua'/>
<Script file='Talent.lua'/>
<Script file='TalkingHead.lua'/>
<Script file='Taxi.lua'/>
<Script file='TimeManager.lua'/>
<Script file='Tooltip.lua'/>
<Script file='Trade.lua'/>
<Script file='TradeSkill.lua'/>
<Script file='Trainer.lua'/>
<Script file='TutorialFrame.lua'/>
<Script file='VoidStorage.lua'/>
<Script file='Warboard.lua'/>
<Script file='WarfrontPartyPose.lua'/>
<Script file='WorldMap.lua'/>
<!--9.0-->
<Script file='AnimaDiversion.lua'/>
<Script file='Barber.lua'/>
<Script file='CovenantPreview.lua'/>
<Script file='CovenantSanctum.lua'/>
<Script file='ChromieTime.lua'/>
<Script file='Guide.lua'/>
<Script file='PlayerChoice.lua'/>
<Script file='Runeforge.lua'/>
<Script file='Soulbinds.lua'/>
<Script file='SubscriptionInterstitial.lua'/>
<Script file='TorghastLevelPicker.lua'/>
<Script file='WeeklyRewards.lua'/>
</Ui>

View File

@@ -0,0 +1,259 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local LBG = E.Libs.ButtonGlow
local _G = _G
local unpack, select = unpack, select
local hooksecurefunc = hooksecurefunc
local CreateFrame = CreateFrame
local GetLootSlotInfo = GetLootSlotInfo
local UnitIsDead = UnitIsDead
local UnitIsFriend = UnitIsFriend
local UnitName = UnitName
local IsFishingLoot = IsFishingLoot
local C_LootHistory_GetNumItems = C_LootHistory.GetNumItems
local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS
local LOOT, ITEMS = LOOT, ITEMS
local function UpdateLoots()
local numItems = C_LootHistory_GetNumItems()
for i=1, numItems do
local frame = _G.LootHistoryFrame.itemFrames[i]
if frame and not frame.isSkinned then
local Icon = frame.Icon:GetTexture()
frame:StripTextures()
frame.Icon:SetTexture(Icon)
frame.Icon:SetTexCoord(unpack(E.TexCoords))
-- create a backdrop around the icon
frame:CreateBackdrop()
frame.backdrop:SetOutside(frame.Icon)
frame.Icon:SetParent(frame.backdrop)
frame.isSkinned = true
end
end
end
function S:LootFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.loot) then return end
-- Loot history frame
local LootHistoryFrame = _G.LootHistoryFrame
LootHistoryFrame:StripTextures()
S:HandleCloseButton(LootHistoryFrame.CloseButton)
LootHistoryFrame:StripTextures()
LootHistoryFrame:CreateBackdrop('Transparent')
LootHistoryFrame.ResizeButton:StripTextures()
LootHistoryFrame.ResizeButton.text = LootHistoryFrame.ResizeButton:CreateFontString(nil, 'OVERLAY')
LootHistoryFrame.ResizeButton.text:FontTemplate(nil, 16, 'OUTLINE')
LootHistoryFrame.ResizeButton.text:SetJustifyH('CENTER')
LootHistoryFrame.ResizeButton.text:Point('CENTER', LootHistoryFrame.ResizeButton)
LootHistoryFrame.ResizeButton.text:SetText('v v v v')
LootHistoryFrame.ResizeButton:CreateBackdrop()
LootHistoryFrame.ResizeButton:Width(LootHistoryFrame:GetWidth())
LootHistoryFrame.ResizeButton:Height(19)
LootHistoryFrame.ResizeButton:ClearAllPoints()
LootHistoryFrame.ResizeButton:Point('TOP', LootHistoryFrame, 'BOTTOM', 0, -2)
_G.LootHistoryFrameScrollFrame:StripTextures()
S:HandleScrollBar(_G.LootHistoryFrameScrollFrameScrollBar)
hooksecurefunc('LootHistoryFrame_FullUpdate', UpdateLoots)
-- Master Loot
local MasterLooterFrame = _G.MasterLooterFrame
MasterLooterFrame:StripTextures()
MasterLooterFrame:CreateBackdrop()
hooksecurefunc('MasterLooterFrame_Show', function()
local b = MasterLooterFrame.Item
if b then
local i = b.Icon
local icon = i:GetTexture()
local c = ITEM_QUALITY_COLORS[_G.LootFrame.selectedQuality]
b:StripTextures()
i:SetTexture(icon)
i:SetTexCoord(unpack(E.TexCoords))
b:CreateBackdrop()
b.backdrop:SetOutside(i)
b.backdrop:SetBackdropBorderColor(c.r, c.g, c.b)
end
for i=1, MasterLooterFrame:GetNumChildren() do
local child = select(i, MasterLooterFrame:GetChildren())
if child and not child.isSkinned and not child:GetName() then
if child:IsObjectType('Button') then
if child:GetPushedTexture() then
S:HandleCloseButton(child)
else
child:SetTemplate()
child:StyleButton()
end
child.isSkinned = true
end
end
end
end)
-- Bonus Roll Frame
local BonusRollFrame = _G.BonusRollFrame
BonusRollFrame:StripTextures()
BonusRollFrame:CreateBackdrop('Transparent')
BonusRollFrame.SpecRing:SetTexture()
BonusRollFrame.CurrentCountFrame.Text:FontTemplate()
BonusRollFrame.PromptFrame.Icon:SetTexCoord(unpack(E.TexCoords))
BonusRollFrame.PromptFrame.IconBackdrop = CreateFrame('Frame', nil, BonusRollFrame.PromptFrame, 'BackdropTemplate')
BonusRollFrame.PromptFrame.IconBackdrop:SetFrameLevel(BonusRollFrame.PromptFrame.IconBackdrop:GetFrameLevel() - 1)
BonusRollFrame.PromptFrame.IconBackdrop:SetOutside(BonusRollFrame.PromptFrame.Icon)
BonusRollFrame.PromptFrame.IconBackdrop:CreateBackdrop()
BonusRollFrame.PromptFrame.Timer:SetStatusBarTexture(E.media.normTex)
BonusRollFrame.PromptFrame.Timer:SetStatusBarColor(unpack(E.media.rgbvaluecolor))
BonusRollFrame.BlackBackgroundHoist.Background:Hide()
BonusRollFrame.BlackBackgroundHoist.b = CreateFrame('Frame', nil, BonusRollFrame, 'BackdropTemplate')
BonusRollFrame.BlackBackgroundHoist.b:SetTemplate()
BonusRollFrame.BlackBackgroundHoist.b:SetOutside(BonusRollFrame.PromptFrame.Timer)
BonusRollFrame.SpecIcon.b = CreateFrame('Frame', nil, BonusRollFrame, 'BackdropTemplate')
BonusRollFrame.SpecIcon.b:SetTemplate()
BonusRollFrame.SpecIcon.b:Point('BOTTOMRIGHT', BonusRollFrame, -2, 2)
BonusRollFrame.SpecIcon.b:Size(BonusRollFrame.SpecIcon:GetSize())
BonusRollFrame.SpecIcon.b:SetFrameLevel(6)
BonusRollFrame.SpecIcon:SetParent(BonusRollFrame.SpecIcon.b)
BonusRollFrame.SpecIcon:SetTexCoord(unpack(E.TexCoords))
BonusRollFrame.SpecIcon:SetInside()
hooksecurefunc(BonusRollFrame.SpecIcon, 'Hide', function(specIcon)
if specIcon.b and specIcon.b:IsShown() then
BonusRollFrame.CurrentCountFrame:ClearAllPoints()
BonusRollFrame.CurrentCountFrame:Point('BOTTOMRIGHT', BonusRollFrame, -2, 1)
specIcon.b:Hide()
end
end)
hooksecurefunc(BonusRollFrame.SpecIcon, 'Show', function(specIcon)
if specIcon.b and not specIcon.b:IsShown() and specIcon:GetTexture() ~= nil then
BonusRollFrame.CurrentCountFrame:ClearAllPoints()
BonusRollFrame.CurrentCountFrame:Point('RIGHT', BonusRollFrame.SpecIcon.b, 'LEFT', -2, -2)
specIcon.b:Show()
end
end)
hooksecurefunc('BonusRollFrame_StartBonusRoll', function()
--keep the status bar a frame above but its increased 1 extra beacuse mera has a grid layer
local BonusRollFrameLevel = BonusRollFrame:GetFrameLevel();
BonusRollFrame.PromptFrame.Timer:SetFrameLevel(BonusRollFrameLevel+2);
if BonusRollFrame.BlackBackgroundHoist.b then
BonusRollFrame.BlackBackgroundHoist.b:SetFrameLevel(BonusRollFrameLevel+1);
end
--set currency icons position at bottom right (or left of the spec icon, on the bottom right)
BonusRollFrame.CurrentCountFrame:ClearAllPoints()
if BonusRollFrame.SpecIcon.b then
BonusRollFrame.SpecIcon.b:SetShown(BonusRollFrame.SpecIcon:IsShown() and BonusRollFrame.SpecIcon:GetTexture() ~= nil);
if BonusRollFrame.SpecIcon.b:IsShown() then
BonusRollFrame.CurrentCountFrame:Point('RIGHT', BonusRollFrame.SpecIcon.b, 'LEFT', -2, -2)
else
BonusRollFrame.CurrentCountFrame:Point('BOTTOMRIGHT', BonusRollFrame, -2, 1)
end
else
BonusRollFrame.CurrentCountFrame:Point('BOTTOMRIGHT', BonusRollFrame, -2, 1)
end
--skin currency icons
local ccf, pfifc = BonusRollFrame.CurrentCountFrame.Text, BonusRollFrame.PromptFrame.InfoFrame.Cost
local text1, text2 = ccf and ccf:GetText(), pfifc and pfifc:GetText()
if text1 and text1:find('|t') then ccf:SetText(text1:gsub('|T(.-):.-|t', '|T%1:16:16:0:0:64:64:5:59:5:59|t')) end
if text2 and text2:find('|t') then pfifc:SetText(text2:gsub('|T(.-):.-|t', '|T%1:16:16:0:0:64:64:5:59:5:59|t')) end
end)
local LootFrame = _G.LootFrame
S:HandlePortraitFrame(LootFrame)
LootFrame:Height(LootFrame:GetHeight() - 30)
_G.LootFramePortraitOverlay:SetParent(E.HiddenFrame)
for i=1, LootFrame:GetNumRegions() do
local region = select(i, LootFrame:GetRegions());
if region:IsObjectType('FontString') then
if region:GetText() == ITEMS then
LootFrame.Title = region
end
end
end
LootFrame.Title:ClearAllPoints()
LootFrame.Title:Point('TOPLEFT', LootFrame, 'TOPLEFT', 4, -4)
LootFrame.Title:SetJustifyH('LEFT')
for i=1, _G.LOOTFRAME_NUMBUTTONS do
local button = _G['LootButton'..i]
_G['LootButton'..i..'NameFrame']:Hide()
_G['LootButton'..i..'IconQuestTexture']:SetParent(E.HiddenFrame)
S:HandleItemButton(button, true)
S:HandleIconBorder(button.IconBorder)
local point, attachTo, point2, x, y = button:GetPoint()
button:ClearAllPoints()
button:Point(point, attachTo, point2, x, y+30)
end
hooksecurefunc('LootFrame_UpdateButton', function(index)
local numLootItems = LootFrame.numLootItems;
--Logic to determine how many items to show per page
local numLootToShow = _G.LOOTFRAME_NUMBUTTONS;
if LootFrame.AutoLootTable then
numLootItems = #LootFrame.AutoLootTable;
end
if numLootItems > _G.LOOTFRAME_NUMBUTTONS then
numLootToShow = numLootToShow - 1; -- make space for the page buttons
end
local button = _G['LootButton'..index];
local slot = (numLootToShow * (LootFrame.page - 1)) + index;
if button and button:IsShown() then
local texture, _, isQuestItem, questId, isActive;
if LootFrame.AutoLootTable then
local entry = LootFrame.AutoLootTable[slot];
if entry.hide then
button:Hide();
return;
else
texture = entry.texture;
isQuestItem = entry.isQuestItem;
questId = entry.questId;
isActive = entry.isActive;
end
else
texture, _, _, _, _, isQuestItem, questId, isActive = GetLootSlotInfo(slot);
end
if texture then
if questId and not isActive then
LBG.ShowOverlayGlow(button)
elseif questId or isQuestItem then
LBG.ShowOverlayGlow(button)
else
LBG.HideOverlayGlow(button)
end
end
end
end)
LootFrame:HookScript('OnShow', function(s)
if IsFishingLoot() then
s.Title:SetText(L["Fishy Loot"])
elseif not UnitIsFriend('player', 'target') and UnitIsDead('target') then
s.Title:SetText(UnitName('target'))
else
s.Title:SetText(LOOT)
end
end)
S:HandleNextPrevButton(_G.LootFrameDownButton)
S:HandleNextPrevButton(_G.LootFrameUpButton)
end
S:AddCallback('LootFrame')

View File

@@ -0,0 +1,49 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
function S:LossOfControlFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.losscontrol) then return end
--/run LossOfControlFrame.fadeTime = 2000; LossOfControlFrame_SetUpDisplay(LossOfControlFrame, true, 'CONFUSE', 2094, 'Disoriented', [[Interface\Icons\Spell_Shadow_MindSteal]], 72101.9765625, 7.9950003623962, 8, 0, 5, 2)
local LossOfControlFrame = _G.LossOfControlFrame
local IconBackdrop = CreateFrame('Frame', nil, LossOfControlFrame, 'BackdropTemplate')
IconBackdrop:SetTemplate()
IconBackdrop:SetOutside(LossOfControlFrame.Icon)
IconBackdrop:SetFrameLevel(LossOfControlFrame:GetFrameLevel() - 1)
LossOfControlFrame.Icon:SetTexCoord(.1, .9, .1, .9)
LossOfControlFrame:StripTextures()
LossOfControlFrame.AbilityName:ClearAllPoints()
LossOfControlFrame:Size(LossOfControlFrame.Icon:GetWidth() + 50)
hooksecurefunc('LossOfControlFrame_SetUpDisplay', function(s)
s.Icon:ClearAllPoints()
s.Icon:Point('CENTER', s, 'CENTER', 0, 0)
s.AbilityName:ClearAllPoints()
s.AbilityName:Point('BOTTOM', s, 0, -28)
s.AbilityName.scrollTime = nil;
s.AbilityName:FontTemplate(nil, 20, 'OUTLINE')
s.TimeLeft.NumberText:ClearAllPoints()
s.TimeLeft.NumberText:Point('BOTTOM', s, 4, -58)
s.TimeLeft.NumberText.scrollTime = nil;
s.TimeLeft.NumberText:FontTemplate(nil, 20, 'OUTLINE')
s.TimeLeft.SecondsText:ClearAllPoints()
s.TimeLeft.SecondsText:Point('BOTTOM', s, 0, -80)
s.TimeLeft.SecondsText.scrollTime = nil;
s.TimeLeft.SecondsText:FontTemplate(nil, 20, 'OUTLINE')
-- always stop shake animation on start
if s.Anim:IsPlaying() then
s.Anim:Stop()
end
end)
end
S:AddCallback('LossOfControlFrame')

View File

@@ -0,0 +1,112 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local format = format
local HideUIPanel = HideUIPanel
local ShowUIPanel = ShowUIPanel
function S:Blizzard_MacroUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.macro) then return end
local MacroFrame = _G.MacroFrame
S:HandlePortraitFrame(MacroFrame)
MacroFrame:Width(360)
_G.MacroFrameTextBackground:StripTextures()
_G.MacroFrameTextBackground:SetTemplate('Transparent')
_G.MacroButtonScrollFrame:StripTextures()
_G.MacroButtonScrollFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.MacroButtonScrollFrameScrollBar)
S:HandleScrollBar(_G.MacroFrameScrollFrameScrollBar)
local buttons = {
_G.MacroSaveButton,
_G.MacroCancelButton,
_G.MacroDeleteButton,
_G.MacroNewButton,
_G.MacroExitButton,
_G.MacroEditButton,
_G.MacroFrameTab1,
_G.MacroFrameTab2,
}
for i = 1, #buttons do
buttons[i]:StripTextures()
S:HandleButton(buttons[i])
end
_G.MacroNewButton:ClearAllPoints()
_G.MacroNewButton:Point('RIGHT', _G.MacroExitButton, 'LEFT', -2 , 0)
for i = 1, 2 do
local tab = _G[format('MacroFrameTab%s', i)]
tab:Height(22)
end
_G.MacroFrameTab1:Point('TOPLEFT', MacroFrame, 'TOPLEFT', 85, -39)
_G.MacroFrameTab2:Point('LEFT', _G.MacroFrameTab1, 'RIGHT', 4, 0)
--Reposition edit button
_G.MacroEditButton:ClearAllPoints()
_G.MacroEditButton:Point('BOTTOMLEFT', _G.MacroFrameSelectedMacroButton, 'BOTTOMRIGHT', 10, 0)
-- Regular scroll bar
S:HandleScrollBar(_G.MacroButtonScrollFrame)
-- Big icon
_G.MacroFrameSelectedMacroButton:StripTextures()
_G.MacroFrameSelectedMacroButton:StyleButton(true)
_G.MacroFrameSelectedMacroButton:GetNormalTexture():SetTexture()
_G.MacroFrameSelectedMacroButton:CreateBackdrop()
_G.MacroFrameSelectedMacroButtonIcon:SetTexCoord(unpack(E.TexCoords))
_G.MacroFrameSelectedMacroButtonIcon:Point('TOPLEFT', 1, -1)
_G.MacroFrameSelectedMacroButtonIcon:Point('BOTTOMRIGHT', -1, 1)
-- Skin all buttons
for i = 1, _G.MAX_ACCOUNT_MACROS do
local b = _G['MacroButton'..i]
local t = _G['MacroButton'..i..'Icon']
if b then
b:StripTextures()
b:StyleButton(true)
b:CreateBackdrop('Transparent')
end
if t then
t:SetTexCoord(unpack(E.TexCoords))
t:Point('TOPLEFT', 1, -1)
t:Point('BOTTOMRIGHT', -1, 1)
end
end
--Icon selection frame
ShowUIPanel(MacroFrame); --Toggle frame to create necessary variables needed for popup frame
HideUIPanel(MacroFrame);
local MacroPopupFrame = _G.MacroPopupFrame
MacroPopupFrame:Show() --Toggle the frame in order to create the necessary button elements
MacroPopupFrame:Hide()
-- Popout Frame
S:HandleButton(MacroPopupFrame.BorderBox.OkayButton)
local cancel_btn = MacroPopupFrame.BorderBox.CancelButton
S:HandleButton(cancel_btn)
cancel_btn:ClearAllPoints()
cancel_btn:Point('RIGHT', MacroPopupFrame.BorderBox, 'BOTTOMRIGHT', -5, 15)
S:HandleScrollBar(_G.MacroPopupScrollFrameScrollBar)
S:HandleEditBox(_G.MacroPopupEditBox)
_G.MacroPopupNameLeft:SetTexture()
_G.MacroPopupNameMiddle:SetTexture()
_G.MacroPopupNameRight:SetTexture()
S:HandleIconSelectionFrame(MacroPopupFrame, _G.NUM_MACRO_ICONS_SHOWN, 'MacroPopupButton', 'MacroPopup')
MacroPopupFrame:HookScript('OnShow', function(s)
s:ClearAllPoints()
s:Point('TOPLEFT', MacroFrame, 'TOPRIGHT', 2, 0)
end)
end
S:AddCallbackForAddon('Blizzard_MacroUI')

View File

@@ -0,0 +1,158 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local hooksecurefunc = hooksecurefunc
local function MailFrameSkin()
for i = 1, _G.ATTACHMENTS_MAX_SEND do
local btn = _G['SendMailAttachment'..i]
if not btn.skinned then
btn:StripTextures()
btn:CreateBackdrop(nil, true)
btn.backdrop:SetAllPoints()
btn:StyleButton()
S:HandleIconBorder(btn.IconBorder)
btn.skinned = true
end
local t = btn:GetNormalTexture()
if t then
t:SetTexCoord(unpack(E.TexCoords))
t:SetInside()
end
end
end
function S:MailFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.mail) then return end
local MailFrame = _G.MailFrame
S:HandlePortraitFrame(MailFrame)
for i = 1, _G.INBOXITEMS_TO_DISPLAY do
local bg = _G['MailItem'..i]
bg:StripTextures()
local btn = _G['MailItem'..i..'Button']
btn:StripTextures()
btn:CreateBackdrop(nil, true)
btn:StyleButton()
local t = _G['MailItem'..i..'ButtonIcon']
t:SetTexCoord(unpack(E.TexCoords))
t:SetInside()
S:HandleIconBorder(_G['MailItem'..i..'ButtonIconBorder'])
end
_G.InboxFrame:CreateBackdrop('Transparent')
_G.InboxFrame.backdrop:Point('TOPLEFT', _G.MailItem1, 'TOPLEFT')
_G.InboxFrame.backdrop:Point('BOTTOMRIGHT', _G.MailItem7, 'BOTTOMRIGHT')
S:HandleNextPrevButton(_G.InboxPrevPageButton, nil, nil, true)
S:HandleNextPrevButton(_G.InboxNextPageButton, nil, nil, true)
_G.InboxPrevPageButton:StripTexts()
_G.InboxNextPageButton:StripTexts()
_G.MailFrameTab1:StripTextures()
_G.MailFrameTab2:StripTextures()
S:HandleTab(_G.MailFrameTab1)
S:HandleTab(_G.MailFrameTab2)
-- send mail
_G.SendMailScrollFrame:StripTextures(true)
_G.SendMailScrollFrame:CreateBackdrop()
S:HandleScrollBar(_G.SendMailScrollFrameScrollBar)
S:HandleEditBox(_G.SendMailNameEditBox)
S:HandleEditBox(_G.SendMailSubjectEditBox)
S:HandleEditBox(_G.SendMailMoneyGold)
S:HandleEditBox(_G.SendMailMoneySilver)
S:HandleEditBox(_G.SendMailMoneyCopper)
_G.SendMailMoneyBg:Kill()
_G.SendMailMoneyInset:StripTextures()
_G.SendMailNameEditBox:ClearAllPoints()
_G.SendMailNameEditBox:Point('TOPLEFT', _G.SendMailFrame, 'TOPLEFT', 90, -30)
_G.SendMailNameEditBox:Width(109)
_G.SendMailNameEditBox:Height(18)
_G.SendMailSubjectEditBox:Point('TOPLEFT', _G.SendMailNameEditBox, 'BOTTOMLEFT', 0, -10)
_G.SendMailSubjectEditBox:Width(214)
_G.SendMailSubjectEditBox:Height(18)
_G.SendMailFrame:StripTextures()
hooksecurefunc('SendMailFrame_Update', MailFrameSkin)
S:HandleButton(_G.SendMailMailButton)
S:HandleButton(_G.SendMailCancelButton)
S:HandleRadioButton(_G.SendMailSendMoneyButton)
S:HandleRadioButton(_G.SendMailCODButton)
-- open mail (cod)
_G.OpenMailFrame:StripTextures(true)
_G.OpenMailFrame:CreateBackdrop('Transparent')
_G.OpenMailFrameInset:Kill()
S:HandleCloseButton(_G.OpenMailFrameCloseButton)
S:HandleButton(_G.OpenMailReportSpamButton)
S:HandleButton(_G.OpenMailReplyButton)
S:HandleButton(_G.OpenMailDeleteButton)
S:HandleButton(_G.OpenMailCancelButton)
S:HandleButton(_G.OpenAllMail)
_G.InboxFrame:StripTextures()
_G.MailFrameInset:Kill()
_G.OpenMailScrollFrame:StripTextures(true)
_G.OpenMailScrollFrame:CreateBackdrop()
S:HandleScrollBar(_G.OpenMailScrollFrameScrollBar)
_G.InboxPrevPageButton:Point('BOTTOMLEFT', 30, 100)
_G.InboxNextPageButton:Point('BOTTOMRIGHT', -80, 100)
_G.InvoiceTextFontNormal:FontTemplate(nil, 13)
_G.MailTextFontNormal:FontTemplate(nil, 13)
_G.InvoiceTextFontNormal:SetTextColor(1, 1, 1)
_G.MailTextFontNormal:SetTextColor(1, 1, 1)
_G.OpenMailArithmeticLine:Kill()
_G.OpenMailLetterButton:StripTextures()
_G.OpenMailLetterButton:CreateBackdrop(nil, true)
_G.OpenMailLetterButton:StyleButton()
_G.OpenMailLetterButtonIconTexture:SetTexCoord(unpack(E.TexCoords))
_G.OpenMailLetterButtonIconTexture:SetInside()
_G.OpenMailMoneyButton:StripTextures()
_G.OpenMailMoneyButton:CreateBackdrop(nil, true)
_G.OpenMailMoneyButton:StyleButton()
_G.OpenMailMoneyButtonIconTexture:SetTexCoord(unpack(E.TexCoords))
_G.OpenMailMoneyButtonIconTexture:SetInside()
for i = 1, _G.ATTACHMENTS_MAX_SEND do
local btn = _G['OpenMailAttachmentButton'..i]
btn:StripTextures()
btn:CreateBackdrop(nil, true)
btn:StyleButton()
S:HandleIconBorder(btn.IconBorder)
local t = _G['OpenMailAttachmentButton'..i..'IconTexture']
if t then
t:SetTexCoord(unpack(E.TexCoords))
t:SetInside()
end
end
_G.OpenMailReplyButton:Point('RIGHT', _G.OpenMailDeleteButton, 'LEFT', -2, 0)
_G.OpenMailDeleteButton:Point('RIGHT', _G.OpenMailCancelButton, 'LEFT', -2, 0)
_G.SendMailMailButton:Point('RIGHT', _G.SendMailCancelButton, 'LEFT', -2, 0)
end
S:AddCallback('MailFrame')

View File

@@ -0,0 +1,97 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
function S:MerchantFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.merchant) then return end
local MerchantFrame = _G.MerchantFrame
S:HandlePortraitFrame(MerchantFrame)
MerchantFrame.backdrop:Point('TOPLEFT', 6, 2)
MerchantFrame.backdrop:Point('BOTTOMRIGHT', 2, -1)
MerchantFrame:Width(360)
_G.MerchantBuyBackItem:StripTextures(true)
_G.MerchantBuyBackItem:CreateBackdrop('Transparent')
_G.MerchantExtraCurrencyInset:StripTextures()
_G.MerchantExtraCurrencyBg:StripTextures()
_G.MerchantMoneyBg:StripTextures()
_G.MerchantMoneyInset:StripTextures()
_G.MerchantBuyBackItem.backdrop:Point('TOPLEFT', -6, 6)
_G.MerchantBuyBackItem.backdrop:Point('BOTTOMRIGHT', 6, -6)
S:HandleDropDownBox(_G.MerchantFrameLootFilter)
-- Center the columns on the frame
_G.MerchantItem1:Point('TOPLEFT', _G.MerchantFrame, 'TOPLEFT', 24, -69)
-- skin tabs
for i = 1, 2 do
S:HandleTab(_G['MerchantFrameTab'..i])
end
-- Skin icons / merchant slots
for i = 1, _G.BUYBACK_ITEMS_PER_PAGE do
local button = _G['MerchantItem'..i..'ItemButton']
local icon = button.icon
local iconBorder = button.IconBorder
local item = _G['MerchantItem'..i]
item:StripTextures(true)
item:CreateBackdrop()
button:StripTextures()
button:StyleButton(false)
button:CreateBackdrop(nil, true)
button:Point('TOPLEFT', item, 'TOPLEFT', 4, -4)
icon:SetTexCoord(unpack(E.TexCoords))
icon:ClearAllPoints()
icon:Point('TOPLEFT', 1, -1)
icon:Point('BOTTOMRIGHT', -1, 1)
S:HandleIconBorder(iconBorder)
_G['MerchantItem'..i..'MoneyFrame']:ClearAllPoints()
_G['MerchantItem'..i..'MoneyFrame']:Point('BOTTOMLEFT', button, 'BOTTOMRIGHT', 3, 0)
end
-- Skin buyback item frame + icon
_G.MerchantBuyBackItemItemButton:StripTextures()
_G.MerchantBuyBackItemItemButton:StyleButton(false)
_G.MerchantBuyBackItemItemButton:CreateBackdrop(nil, true)
_G.MerchantBuyBackItemItemButtonIconTexture:SetTexCoord(unpack(E.TexCoords))
_G.MerchantBuyBackItemItemButtonIconTexture:ClearAllPoints()
_G.MerchantBuyBackItemItemButtonIconTexture:Point('TOPLEFT', 1, -1)
_G.MerchantBuyBackItemItemButtonIconTexture:Point('BOTTOMRIGHT', -1, 1)
S:HandleIconBorder(_G.MerchantBuyBackItemItemButton.IconBorder)
S:HandleButton(_G.MerchantRepairItemButton)
_G.MerchantRepairItemButton:StyleButton(false)
_G.MerchantRepairItemButton:GetRegions():SetTexCoord(0.04, 0.24, 0.06, 0.5)
_G.MerchantRepairItemButton:GetRegions():SetInside()
S:HandleButton(_G.MerchantGuildBankRepairButton)
_G.MerchantGuildBankRepairButton:StyleButton()
_G.MerchantGuildBankRepairButtonIcon:SetTexCoord(0.61, 0.82, 0.1, 0.52)
_G.MerchantGuildBankRepairButtonIcon:SetInside()
S:HandleButton(_G.MerchantRepairAllButton)
_G.MerchantRepairAllIcon:StyleButton(false)
_G.MerchantRepairAllIcon:SetTexCoord(0.34, 0.1, 0.34, 0.535, 0.535, 0.1, 0.535, 0.535)
_G.MerchantRepairAllIcon:SetInside()
S:HandleNextPrevButton(_G.MerchantNextPageButton, nil, nil, true, true)
S:HandleNextPrevButton(_G.MerchantPrevPageButton, nil, nil, true, true)
_G.MerchantNextPageButton:ClearAllPoints() -- Monitor this
_G.MerchantNextPageButton:Point('LEFT', _G.MerchantPageText, 'RIGHT', 100, 4)
end
S:AddCallback('MerchantFrame')

View File

@@ -0,0 +1,55 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local function MirrorTimer_OnUpdate(frame, elapsed)
if frame.paused then return end
if frame.timeSinceUpdate >= 0.3 then
local minutes = frame.value/60
local seconds = frame.value%60
local text = frame.label:GetText()
if frame.value > 0 then
frame.TimerText:SetFormattedText('%s (%d:%02d)', text, minutes, seconds)
else
frame.TimerText:SetFormattedText('%s (0:00)', text)
end
frame.timeSinceUpdate = 0
else
frame.timeSinceUpdate = frame.timeSinceUpdate + elapsed
end
end
function S:MirrorTimers()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.mirrorTimers) then return end
--Mirror Timers (Underwater Breath etc.), credit to Azilroka
for i = 1, _G.MIRRORTIMER_NUMTIMERS do
local mirrorTimer = _G['MirrorTimer'..i]
local statusBar = _G['MirrorTimer'..i..'StatusBar']
local text = _G['MirrorTimer'..i..'Text']
mirrorTimer:StripTextures()
mirrorTimer:Size(222, 18)
mirrorTimer.label = text
statusBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(statusBar)
statusBar:CreateBackdrop()
statusBar:Size(222, 18)
text:Hide()
local TimerText = mirrorTimer:CreateFontString(nil, 'OVERLAY')
TimerText:FontTemplate(nil, nil, 'OUTLINE')
TimerText:Point('CENTER', statusBar, 'CENTER', 0, 0)
mirrorTimer.TimerText = TimerText
mirrorTimer.timeSinceUpdate = 0.3 --Make sure timer value updates right away on first show
mirrorTimer:HookScript('OnUpdate', MirrorTimer_OnUpdate)
E:CreateMover(mirrorTimer, 'MirrorTimer'..i..'Mover', L["MirrorTimer"]..i, nil, nil, nil, 'ALL,SOLO')
end
end
S:AddCallback('MirrorTimers')

View File

@@ -0,0 +1,392 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local ipairs = ipairs
local unpack = unpack
local hooksecurefunc = hooksecurefunc
local IsAddOnLoaded = IsAddOnLoaded
local CreateFrame = CreateFrame
local LFG_ICONS = [[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]]
local function SkinNavBarButtons(self)
if (self:GetParent():GetName() == 'EncounterJournal' and not E.private.skins.blizzard.encounterjournal) or (self:GetParent():GetName() == 'WorldMapFrame' and not E.private.skins.blizzard.worldmap) or (self:GetParent():GetName() == 'HelpFrameKnowledgebase' and not E.private.skins.blizzard.help) then
return
end
local navButton = self.navList[#self.navList]
if navButton and not navButton.isSkinned then
S:HandleButton(navButton, true)
navButton:GetFontString():SetTextColor(1, 1, 1)
if navButton.MenuArrowButton then
navButton.MenuArrowButton:StripTextures()
if navButton.MenuArrowButton.Art then
navButton.MenuArrowButton.Art:SetTexture(E.Media.Textures.ArrowUp)
navButton.MenuArrowButton.Art:SetTexCoord(0, 1, 0, 1)
navButton.MenuArrowButton.Art:SetRotation(3.14)
end
end
navButton.xoffset = 1
navButton.isSkinned = true
end
end
function S:BlizzardMiscFrames()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.misc) then return end
_G.QueueStatusFrame:StripTextures()
-- Blizzard frame we want to reskin
local skins = {
'AutoCompleteBox',
'ReadyCheckFrame',
'QueueStatusFrame',
'LFDReadyCheckPopup',
}
for i = 1, #skins do
local frame = _G[skins[i]]
frame:StripTextures()
frame:CreateBackdrop('Transparent')
end
_G.AutoCompleteBox.backdrop:SetFrameLevel(_G.AutoCompleteBox:GetFrameLevel())
S:HandleButton(_G.StaticPopup1ExtraButton)
hooksecurefunc('QueueStatusEntry_SetFullDisplay', function(entry, _, _, _, isTank, isHealer, isDPS)
if not entry then return end
local nextRoleIcon = 1
if isDPS then
local icon = entry['RoleIcon'..nextRoleIcon]
if icon then
icon:SetTexture(LFG_ICONS)
icon:SetTexCoord(_G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
nextRoleIcon = nextRoleIcon + 1
end
end
if isHealer then
local icon = entry['RoleIcon'..nextRoleIcon]
if icon then
icon:SetTexture(LFG_ICONS)
icon:SetTexCoord(_G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
nextRoleIcon = nextRoleIcon + 1
end
end
if isTank then
local icon = entry['RoleIcon'..nextRoleIcon]
if icon then
icon:SetTexture(LFG_ICONS)
icon:SetTexCoord(_G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
end
end
end)
hooksecurefunc('QueueStatusFrame_Update', function()
for frame in _G.QueueStatusFrame.statusEntriesPool:EnumerateActive() do
frame.HealersFound.Texture:SetTexture(LFG_ICONS)
frame.TanksFound.Texture:SetTexture(LFG_ICONS)
frame.DamagersFound.Texture:SetTexture(LFG_ICONS)
frame.HealersFound.Texture:SetTexCoord(_G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
frame.TanksFound.Texture:SetTexCoord(_G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
frame.DamagersFound.Texture:SetTexCoord(_G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
end
end)
if not IsAddOnLoaded('ConsolePortUI_Menu') then
-- reskin all esc/menu buttons
for _, Button in pairs({_G.GameMenuFrame:GetChildren()}) do
if Button.IsObjectType and Button:IsObjectType('Button') then
S:HandleButton(Button)
end
end
_G.GameMenuFrame:StripTextures()
_G.GameMenuFrame:CreateBackdrop('Transparent')
_G.GameMenuFrame.Header:StripTextures()
_G.GameMenuFrame.Header:ClearAllPoints()
_G.GameMenuFrame.Header:Point('TOP', _G.GameMenuFrame, 0, 7)
end
if IsAddOnLoaded('OptionHouse') then
S:HandleButton(_G.GameMenuButtonOptionHouse)
end
-- since we cant hook `CinematicFrame_OnShow` or `CinematicFrame_OnEvent` directly
-- we can just hook onto this function so that we can get the correct `self`
-- this is called through `CinematicFrame_OnShow` so the result would still happen where we want
hooksecurefunc('CinematicFrame_OnDisplaySizeChanged', function(s)
if s and s.closeDialog and not s.closeDialog.template then
s.closeDialog:StripTextures()
s.closeDialog:CreateBackdrop('Transparent')
s.closeDialog.backdrop:SetFrameLevel(s.closeDialog:GetFrameLevel())
s:SetScale(_G.UIParent:GetScale())
local dialogName = s.closeDialog.GetName and s.closeDialog:GetName()
local closeButton = s.closeDialog.ConfirmButton or (dialogName and _G[dialogName..'ConfirmButton'])
local resumeButton = s.closeDialog.ResumeButton or (dialogName and _G[dialogName..'ResumeButton'])
if closeButton then S:HandleButton(closeButton) end
if resumeButton then S:HandleButton(resumeButton) end
end
end)
-- same as above except `MovieFrame_OnEvent` and `MovieFrame_OnShow`
-- cant be hooked directly so we can just use this
-- this is called through `MovieFrame_OnEvent` on the event `PLAY_MOVIE`
hooksecurefunc('MovieFrame_PlayMovie', function(s)
if s and s.CloseDialog and not s.CloseDialog.template then
s:SetScale(_G.UIParent:GetScale())
s.CloseDialog:StripTextures()
s.CloseDialog:CreateBackdrop('Transparent')
s.CloseDialog.backdrop:SetFrameLevel(s.CloseDialog:GetFrameLevel())
S:HandleButton(s.CloseDialog.ConfirmButton)
S:HandleButton(s.CloseDialog.ResumeButton)
end
end)
do
local ChatMenus = {
_G.ChatMenu,
_G.EmoteMenu,
_G.LanguageMenu,
_G.VoiceMacroMenu,
}
local menuBackdrop = function(s)
s:SetTemplate('Transparent')
end
local chatMenuBackdrop = function(s)
s:SetTemplate('Transparent')
s:ClearAllPoints()
s:Point('BOTTOMLEFT', _G.ChatFrame1, 'TOPLEFT', 0, 30)
end
for index, menu in ipairs(ChatMenus) do
menu:StripTextures()
if index == 1 then -- ChatMenu
menu:HookScript('OnShow', chatMenuBackdrop)
else
menu:HookScript('OnShow', menuBackdrop)
end
end
end
--LFD Role Picker frame
local roleButtons = {
_G.LFDRoleCheckPopupRoleButtonTank,
_G.LFDRoleCheckPopupRoleButtonDPS,
_G.LFDRoleCheckPopupRoleButtonHealer,
}
_G.LFDRoleCheckPopup:StripTextures()
_G.LFDRoleCheckPopup:CreateBackdrop('Transparent')
S:HandleButton(_G.LFDRoleCheckPopupAcceptButton)
S:HandleButton(_G.LFDRoleCheckPopupDeclineButton)
for _, roleButton in pairs(roleButtons) do
S:HandleCheckBox(roleButton.checkButton or roleButton.CheckButton, true)
roleButton:DisableDrawLayer('OVERLAY')
end
-- reskin popup buttons
for i = 1, 4 do
local StaticPopup = _G['StaticPopup'..i]
StaticPopup:HookScript('OnShow', function() -- UpdateRecapButton is created OnShow
if StaticPopup.UpdateRecapButton and (not StaticPopup.UpdateRecapButtonHooked) then
StaticPopup.UpdateRecapButtonHooked = true -- we should only hook this once
hooksecurefunc(_G['StaticPopup'..i], 'UpdateRecapButton', S.UpdateRecapButton)
end
end)
StaticPopup:StripTextures()
StaticPopup:CreateBackdrop('Transparent')
for j = 1, 4 do
local button = StaticPopup['button'..j]
S:HandleButton(button)
button.Flash:Hide()
button:CreateShadow(5)
button.shadow:SetAlpha(0)
button.shadow:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
button:SetFrameLevel(button:GetFrameLevel() + 1)
local anim1, anim2 = button.PulseAnim:GetAnimations()
anim1:SetTarget(button.shadow)
anim2:SetTarget(button.shadow)
end
_G['StaticPopup'..i..'EditBox']:SetFrameLevel(_G['StaticPopup'..i..'EditBox']:GetFrameLevel()+1)
S:HandleEditBox(_G['StaticPopup'..i..'EditBox'])
S:HandleEditBox(_G['StaticPopup'..i..'MoneyInputFrameGold'])
S:HandleEditBox(_G['StaticPopup'..i..'MoneyInputFrameSilver'])
S:HandleEditBox(_G['StaticPopup'..i..'MoneyInputFrameCopper'])
_G['StaticPopup'..i..'EditBox'].backdrop:Point('TOPLEFT', -2, -4)
_G['StaticPopup'..i..'EditBox'].backdrop:Point('BOTTOMRIGHT', 2, 4)
_G['StaticPopup'..i..'ItemFrameNameFrame']:Kill()
_G['StaticPopup'..i..'ItemFrame']:CreateBackdrop()
_G['StaticPopup'..i..'ItemFrame']:StyleButton()
S:HandleIconBorder(_G['StaticPopup'..i..'ItemFrame'].IconBorder)
_G['StaticPopup'..i..'ItemFrameIconTexture']:SetTexCoord(unpack(E.TexCoords))
_G['StaticPopup'..i..'ItemFrameIconTexture']:SetInside()
local normTex = _G['StaticPopup'..i..'ItemFrame']:GetNormalTexture()
if normTex then
normTex:SetTexture()
hooksecurefunc(normTex, 'SetTexture', function(s, tex)
if tex ~= nil then s:SetTexture() end
end)
end
end
-- skin return to graveyard button
do
_G.GhostFrameMiddle:SetAlpha(0)
_G.GhostFrameRight:SetAlpha(0)
_G.GhostFrameLeft:SetAlpha(0)
_G.GhostFrame:StripTextures()
_G.GhostFrame:ClearAllPoints()
_G.GhostFrame:Point('TOP', E.UIParent, 'TOP', 0, -150)
_G.GhostFrameContentsFrame:CreateBackdrop('Transparent')
_G.GhostFrameContentsFrameText:Point('TOPLEFT', 53, 0)
_G.GhostFrameContentsFrameIcon:SetTexCoord(unpack(E.TexCoords))
_G.GhostFrameContentsFrameIcon:Point('RIGHT', _G.GhostFrameContentsFrameText, 'LEFT', -12, 0)
local b = CreateFrame('Frame', nil, _G.GhostFrameContentsFrameIcon:GetParent(), 'BackdropTemplate')
local p = E.PixelMode and 1 or 2
b:Point('TOPLEFT', _G.GhostFrameContentsFrameIcon, -p, p)
b:Point('BOTTOMRIGHT', _G.GhostFrameContentsFrameIcon, p, -p)
_G.GhostFrameContentsFrameIcon:Size(37,38)
_G.GhostFrameContentsFrameIcon:SetParent(b)
b:CreateBackdrop()
end
_G.OpacityFrame:StripTextures()
_G.OpacityFrame:CreateBackdrop('Transparent')
--DropDownMenu
hooksecurefunc('UIDropDownMenu_CreateFrames', function(level, index)
local listFrame = _G['DropDownList'..level];
local listFrameName = listFrame:GetName();
local expandArrow = _G[listFrameName..'Button'..index..'ExpandArrow'];
if expandArrow then
local normTex = expandArrow:GetNormalTexture()
expandArrow:SetNormalTexture(E.Media.Textures.ArrowUp)
normTex:SetVertexColor(unpack(E.media.rgbvaluecolor))
normTex:SetRotation(S.ArrowRotation.right)
expandArrow:Size(12, 12)
end
local Backdrop = _G[listFrameName..'Backdrop']
if not Backdrop.template then Backdrop:StripTextures() end
Backdrop:CreateBackdrop('Transparent')
local menuBackdrop = _G[listFrameName..'MenuBackdrop']
if not menuBackdrop.template then menuBackdrop:StripTextures() end
menuBackdrop:CreateBackdrop('Transparent')
end)
hooksecurefunc('UIDropDownMenu_SetIconImage', function(icon, texture)
if texture:find('Divider') then
local r, g, b = unpack(E.media.rgbvaluecolor)
icon:SetColorTexture(r, g, b, 0.45)
icon:Height(1)
end
end)
hooksecurefunc('ToggleDropDownMenu', function(level)
if not level then
level = 1;
end
local r, g, b = unpack(E.media.rgbvaluecolor)
for i = 1, _G.UIDROPDOWNMENU_MAXBUTTONS do
local button = _G['DropDownList'..level..'Button'..i]
local check = _G['DropDownList'..level..'Button'..i..'Check']
local uncheck = _G['DropDownList'..level..'Button'..i..'UnCheck']
local highlight = _G['DropDownList'..level..'Button'..i..'Highlight']
highlight:SetTexture(E.Media.Textures.Highlight)
highlight:SetBlendMode('BLEND')
highlight:SetDrawLayer('BACKGROUND')
highlight:SetVertexColor(r, g, b)
if not button.backdrop then
button:CreateBackdrop()
end
button.backdrop:Hide()
if not button.notCheckable then
uncheck:SetTexture()
local _, co = check:GetTexCoord()
if co == 0 then
check:SetTexture([[Interface\Buttons\UI-CheckBox-Check]])
check:SetVertexColor(r, g, b, 1)
check:Size(20, 20)
check:SetDesaturated(true)
button.backdrop:SetInside(check, 4, 4)
else
check:SetTexture(E.media.normTex)
check:SetVertexColor(r, g, b, 1)
check:Size(10, 10)
check:SetDesaturated(false)
button.backdrop:SetOutside(check)
end
button.backdrop:Show()
check:SetTexCoord(0, 1, 0, 1)
else
check:Size(16, 16)
end
end
end)
local SideDressUpFrame = _G.SideDressUpFrame
S:HandleCloseButton(_G.SideDressUpFrameCloseButton)
S:HandleButton(_G.SideDressUpFrame.ResetButton)
_G.SideDressUpFrame.ResetButton:SetFrameLevel(_G.SideDressUpFrame.ResetButton:GetFrameLevel()+1)
SideDressUpFrame:StripTextures()
SideDressUpFrame.BGTopLeft:Hide()
SideDressUpFrame.BGBottomLeft:Hide()
SideDressUpFrame:CreateBackdrop('Transparent')
-- StackSplit
local StackSplitFrame = _G.StackSplitFrame
StackSplitFrame:StripTextures()
StackSplitFrame:CreateBackdrop('Transparent')
StackSplitFrame.bg1 = CreateFrame('Frame', nil, StackSplitFrame, 'BackdropTemplate')
StackSplitFrame.bg1:SetTemplate('Transparent')
StackSplitFrame.bg1:Point('TOPLEFT', 10, -15)
StackSplitFrame.bg1:Point('BOTTOMRIGHT', -10, 55)
StackSplitFrame.bg1:SetFrameLevel(StackSplitFrame.bg1:GetFrameLevel() - 1)
S:HandleButton(StackSplitFrame.OkayButton)
S:HandleButton(StackSplitFrame.CancelButton)
local buttons = {StackSplitFrame.LeftButton, StackSplitFrame.RightButton}
for _, btn in pairs(buttons) do
btn:Size(14, 18)
btn:ClearAllPoints()
if btn == StackSplitFrame.LeftButton then
btn:Point('LEFT', StackSplitFrame.bg1, 'LEFT', 4, 0)
else
btn:Point('RIGHT', StackSplitFrame.bg1, 'RIGHT', -4, 0)
end
S:HandleNextPrevButton(btn, nil, nil, true)
end
--NavBar Buttons (Used in WorldMapFrame, EncounterJournal and HelpFrame)
hooksecurefunc('NavBar_AddButton', SkinNavBarButtons)
end
S:AddCallback('BlizzardMiscFrames')

View File

@@ -0,0 +1,50 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
function S:RaidInfoFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.nonraid) then return end
local StripAllTextures = {
_G.RaidInfoFrame,
_G.RaidInfoInstanceLabel,
_G.RaidInfoIDLabel,
}
local KillTextures = {
_G.RaidInfoScrollFrameScrollBarBG,
_G.RaidInfoScrollFrameScrollBarTop,
_G.RaidInfoScrollFrameScrollBarBottom,
_G.RaidInfoScrollFrameScrollBarMiddle,
}
local buttons = {
_G.RaidFrameConvertToRaidButton,
_G.RaidFrameRaidInfoButton,
_G.RaidInfoExtendButton,
_G.RaidInfoCancelButton,
}
for _, object in pairs(StripAllTextures) do
object:StripTextures()
end
for _, texture in pairs(KillTextures) do
texture:Kill()
end
for i = 1, #buttons do
S:HandleButton(buttons[i])
end
_G.RaidInfoScrollFrame:StripTextures()
local RaidInfoFrame = _G.RaidInfoFrame
RaidInfoFrame:CreateBackdrop('Transparent')
RaidInfoFrame.backdrop:Point('TOPLEFT', RaidInfoFrame, 'TOPLEFT')
RaidInfoFrame.backdrop:Point('BOTTOMRIGHT', RaidInfoFrame, 'BOTTOMRIGHT')
RaidInfoFrame.Header:StripTextures()
S:HandleCloseButton(_G.RaidInfoCloseButton,RaidInfoFrame)
S:HandleScrollBar(_G.RaidInfoScrollFrameScrollBar)
S:HandleCheckBox(_G.RaidFrameAllAssistCheckButton)
end
S:AddCallback('RaidInfoFrame')

View File

@@ -0,0 +1,262 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, unpack = pairs, unpack
local hooksecurefunc = hooksecurefunc
local InCombatLockdown = InCombatLockdown
local headers = {
_G.ObjectiveTrackerBlocksFrame.QuestHeader,
_G.ObjectiveTrackerBlocksFrame.AchievementHeader,
_G.ObjectiveTrackerBlocksFrame.ScenarioHeader,
_G.ObjectiveTrackerBlocksFrame.CampaignQuestHeader,
_G.BONUS_OBJECTIVE_TRACKER_MODULE.Header,
_G.WORLD_QUEST_TRACKER_MODULE.Header,
_G.ObjectiveTrackerFrame.BlocksFrame.UIWidgetsHeader
}
local function SkinOjectiveTrackerHeaders()
local frame = _G.ObjectiveTrackerFrame.MODULES
if frame then
for i = 1, #frame do
local modules = frame[i]
if modules then
modules.Header.Background:SetAtlas(nil)
local text = modules.Header.Text
text:FontTemplate()
text:SetParent(modules.Header)
end
end
end
end
local function ColorProgressBars(self, value)
if not (self.Bar and self.isSkinned and value) then return end
S:StatusBarColorGradient(self.Bar, value, 100)
end
local function HotkeyShow(self)
local item = self:GetParent()
if item.rangeOverlay then item.rangeOverlay:Show() end
end
local function HotkeyHide(self)
local item = self:GetParent()
if item.rangeOverlay then item.rangeOverlay:Hide() end
end
local function HotkeyColor(self, r, g, b)
local item = self:GetParent()
if item.rangeOverlay then
if r == 0.6 and g == 0.6 and b == 0.6 then
item.rangeOverlay:SetVertexColor(0, 0, 0, 0)
else
item.rangeOverlay:SetVertexColor(.8, .1, .1, .5)
end
end
end
local function SkinItemButton(item)
item:CreateBackdrop('Transparent')
item.backdrop:SetAllPoints()
item:StyleButton()
item:SetNormalTexture(nil)
item.icon:SetTexCoord(unpack(E.TexCoords))
item.icon:SetInside()
item.Cooldown:SetInside()
item.Count:ClearAllPoints()
item.Count:Point('TOPLEFT', 1, -1)
item.Count:FontTemplate(nil, 14, 'OUTLINE')
item.Count:SetShadowOffset(5, -5)
local rangeOverlay = item:CreateTexture(nil, 'OVERLAY')
rangeOverlay:SetTexture(E.Media.Textures.White8x8)
rangeOverlay:SetInside()
item.rangeOverlay = rangeOverlay
hooksecurefunc(item.HotKey, 'Show', HotkeyShow)
hooksecurefunc(item.HotKey, 'Hide', HotkeyHide)
hooksecurefunc(item.HotKey, 'SetVertexColor', HotkeyColor)
HotkeyColor(item.HotKey, item.HotKey:GetTextColor())
item.HotKey:SetAlpha(0)
E:RegisterCooldown(item.Cooldown)
end
local function HandleItemButton(block)
if InCombatLockdown() then return end -- will break quest item button
local item = block and block.itemButton
if not item then return end
if not item.skinned then
SkinItemButton(item)
item.skinned = true
end
if item.backdrop then
item.backdrop:SetFrameLevel(item:GetFrameLevel() - 1)
end
end
-- 9.0 Needs Update
local function SkinProgressBars(_, _, line)
local progressBar = line and line.ProgressBar
local bar = progressBar and progressBar.Bar
if not bar then return end
local icon = bar.Icon
local label = bar.Label
if not progressBar.isSkinned then
if bar.BarFrame then bar.BarFrame:Hide() end
if bar.BarFrame2 then bar.BarFrame2:Hide() end
if bar.BarFrame3 then bar.BarFrame3:Hide() end
if bar.BarGlow then bar.BarGlow:Hide() end
if bar.Sheen then bar.Sheen:Hide() end
if bar.IconBG then bar.IconBG:SetAlpha(0) end
if bar.BorderLeft then bar.BorderLeft:SetAlpha(0) end
if bar.BorderRight then bar.BorderRight:SetAlpha(0) end
if bar.BorderMid then bar.BorderMid:SetAlpha(0) end
bar:Height(18)
bar:StripTextures()
bar:CreateBackdrop('Transparent')
bar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(bar)
if label then
label:ClearAllPoints()
label:Point('CENTER', bar, 0, 1)
label:FontTemplate(nil, 14, 'OUTLINE')
end
if icon then
icon:ClearAllPoints()
icon:Point('LEFT', bar, 'RIGHT', E.PixelMode and 3 or 7, 0)
icon:SetMask('')
icon:SetTexCoord(unpack(E.TexCoords))
if not progressBar.backdrop then
progressBar:CreateBackdrop()
progressBar.backdrop:SetOutside(icon)
progressBar.backdrop:SetShown(icon:IsShown())
end
end
_G.BonusObjectiveTrackerProgressBar_PlayFlareAnim = E.noop
progressBar.isSkinned = true
ColorProgressBars(progressBar, bar:GetValue())
elseif icon and progressBar.backdrop then
progressBar.backdrop:SetShown(icon:IsShown())
end
end
local function SkinTimerBars(_, _, line)
local timerBar = line and line.TimerBar
local bar = timerBar and timerBar.Bar
if not timerBar.isSkinned then
bar:Height(18)
bar:StripTextures()
bar:CreateBackdrop('Transparent')
bar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(bar)
timerBar.isSkinned = true
end
end
local function PositionFindGroupButton(block, button)
if InCombatLockdown() then return end -- will break quest item button
if button and button.GetPoint then
local a, b, c, d, e = button:GetPoint()
if block.groupFinderButton and b == block.groupFinderButton and block.itemButton and button == block.itemButton then
-- this fires when there is a group button and a item button to the left of it
-- we push the item button away from the group button (to the left)
button:Point(a, b, c, d-(E.PixelMode and -1 or 1), e);
elseif b == block and block.groupFinderButton and button == block.groupFinderButton then
-- this fires when there is a group finder button
-- we push the group finder button down slightly
button:Point(a, b, c, d, e-(E.PixelMode and 2 or -1));
end
end
end
local function SkinFindGroupButton(block)
if block.hasGroupFinderButton and block.groupFinderButton then
if block.groupFinderButton and not block.groupFinderButton.skinned then
S:HandleButton(block.groupFinderButton)
block.groupFinderButton:Size(20)
block.groupFinderButton.backdrop:SetFrameLevel(3)
block.groupFinderButton.skinned = true
end
end
end
local function TrackerStateChanged()
local minimizeButton = _G.ObjectiveTrackerFrame.HeaderMenu.MinimizeButton
if _G.ObjectiveTrackerFrame.collapsed then
minimizeButton.tex:SetTexture(E.Media.Textures.PlusButton)
else
minimizeButton.tex:SetTexture(E.Media.Textures.MinusButton)
end
end
local function UpdateMinimizeButton(button, collapsed)
if collapsed then
button.tex:SetTexture(E.Media.Textures.PlusButton)
else
button.tex:SetTexture(E.Media.Textures.MinusButton)
end
end
function S:ObjectiveTrackerFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.objectiveTracker) then return end
local minimize = _G.ObjectiveTrackerFrame.HeaderMenu.MinimizeButton
minimize:StripTextures(nil, true)
minimize:Size(16, 16)
minimize:SetHighlightTexture([[Interface\Buttons\UI-PlusButton-Hilight]], 'ADD')
minimize.tex = minimize:CreateTexture(nil, 'OVERLAY')
minimize.tex:SetTexture(E.Media.Textures.MinusButton)
minimize.tex:SetInside()
hooksecurefunc('ObjectiveTracker_Expand',TrackerStateChanged)
hooksecurefunc('ObjectiveTracker_Collapse',TrackerStateChanged)
hooksecurefunc('QuestObjectiveSetupBlockButton_Item', HandleItemButton)
hooksecurefunc('BonusObjectiveTrackerProgressBar_SetValue',ColorProgressBars) --[Color]: Bonus Objective Progress Bar
hooksecurefunc('ObjectiveTrackerProgressBar_SetValue',ColorProgressBars) --[Color]: Quest Progress Bar
hooksecurefunc('ScenarioTrackerProgressBar_SetValue',ColorProgressBars) --[Color]: Scenario Progress Bar
hooksecurefunc('QuestObjectiveSetupBlockButton_AddRightButton',PositionFindGroupButton) --[Move]: The eye & quest item to the left of the eye
hooksecurefunc('ObjectiveTracker_Update',SkinOjectiveTrackerHeaders) --[Skin]: Module Headers
hooksecurefunc('QuestObjectiveSetupBlockButton_FindGroup',SkinFindGroupButton) --[Skin]: The eye
hooksecurefunc(_G.BONUS_OBJECTIVE_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: Bonus Objective Progress Bar
hooksecurefunc(_G.WORLD_QUEST_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: World Quest Progress Bar
hooksecurefunc(_G.DEFAULT_OBJECTIVE_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: Quest Progress Bar
hooksecurefunc(_G.SCENARIO_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: Scenario Progress Bar
hooksecurefunc(_G.CAMPAIGN_QUEST_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: Campaign Progress Bar
hooksecurefunc(_G.QUEST_TRACKER_MODULE,'AddProgressBar',SkinProgressBars) --[Skin]: Quest Progress Bar
hooksecurefunc(_G.QUEST_TRACKER_MODULE,'AddTimerBar',SkinTimerBars) --[Skin]: Quest Timer Bar
hooksecurefunc(_G.SCENARIO_TRACKER_MODULE,'AddTimerBar',SkinTimerBars) --[Skin]: Scenario Timer Bar
hooksecurefunc(_G.ACHIEVEMENT_TRACKER_MODULE,'AddTimerBar',SkinTimerBars) --[Skin]: Achievement Timer Bar
for _, header in pairs(headers) do
local button = header.MinimizeButton
if button then
button:GetNormalTexture():SetAlpha(0)
button:GetPushedTexture():SetAlpha(0)
button.tex = button:CreateTexture(nil, 'OVERLAY')
button.tex:SetTexture(E.Media.Textures.MinusButton)
button.tex:SetInside()
hooksecurefunc(button, 'SetCollapsed', UpdateMinimizeButton)
end
end
end
S:AddCallback('ObjectiveTrackerFrame')

View File

@@ -0,0 +1,17 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
function S:Blizzard_ObliterumUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.obliterum) then return end
local ObliterumForgeFrame = _G.ObliterumForgeFrame
S:HandlePortraitFrame(ObliterumForgeFrame)
ObliterumForgeFrame.ItemSlot:CreateBackdrop()
ObliterumForgeFrame.ItemSlot.Icon:SetTexCoord(unpack(E.TexCoords))
S:HandleButton(ObliterumForgeFrame.ObliterateButton)
end
S:AddCallbackForAddon('Blizzard_ObliterumUI')

View File

@@ -0,0 +1,59 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local unpack = unpack
local hooksecurefunc = hooksecurefunc
function S:Blizzard_OrderHallUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.orderhall) then return end
local classColor = E:ClassColor(E.myclass, true)
-- CommandBar
local OrderHallCommandBar = _G.OrderHallCommandBar
OrderHallCommandBar:StripTextures()
OrderHallCommandBar:CreateBackdrop('Transparent')
OrderHallCommandBar.ClassIcon:SetTexture([[Interface\TargetingFrame\UI-Classes-Circles]])
OrderHallCommandBar.ClassIcon:Size(46, 20)
OrderHallCommandBar.CurrencyIcon:SetAtlas('legionmission-icon-currency', false)
OrderHallCommandBar.AreaName:SetVertexColor(classColor.r, classColor.g, classColor.b)
OrderHallCommandBar.WorldMapButton:Hide()
local OrderHallTalentFrame = _G.OrderHallTalentFrame
S:HandlePortraitFrame(OrderHallTalentFrame)
S:HandleButton(OrderHallTalentFrame.BackButton)
S:HandleIcon(OrderHallTalentFrame.Currency.Icon)
OrderHallTalentFrame.OverlayElements:SetAlpha(0)
hooksecurefunc(OrderHallTalentFrame, 'RefreshAllData', function(frame)
-- We need to hide the objects again after an update is happen.
if frame.CloseButton.Border then frame.CloseButton.Border:SetAlpha(0) end
if frame.CurrencyBG then frame.CurrencyBG:SetAlpha(0) end
frame:StripTextures()
for i = 1, frame:GetNumChildren() do
local bu = select(i, frame:GetChildren())
if bu and bu.talent then
bu.Border:SetAlpha(0)
bu.Icon:SetTexCoord(unpack(E.TexCoords))
bu.Highlight:SetColorTexture(1, 1, 1, .25)
if not bu.backdrop then
bu:CreateBackdrop()
bu.backdrop:SetOutside(bu.Icon)
end
if bu.talent.selected then
bu.backdrop:SetBackdropBorderColor(1, 1, 0)
else
bu.backdrop:SetBackdropBorderColor(0, 0, 0)
end
end
end
end)
end
S:AddCallbackForAddon('Blizzard_OrderHallUI')

View File

@@ -0,0 +1,269 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, pairs, select, unpack = ipairs, pairs, select, unpack
local CreateFrame = CreateFrame
local CurrencyContainerUtil_GetCurrencyContainerInfo = CurrencyContainerUtil.GetCurrencyContainerInfo
local C_CurrencyInfo_GetCurrencyInfo = C_CurrencyInfo.GetCurrencyInfo
local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor
local hooksecurefunc = hooksecurefunc
local LE_ITEM_QUALITY_ARTIFACT = Enum.ItemQuality.Artifact
local function HandleRoleChecks(button, ...)
button:StripTextures()
button:DisableDrawLayer('ARTWORK')
button:DisableDrawLayer('OVERLAY')
button.bg = button:CreateTexture(nil, 'BACKGROUND', nil, -7)
button.bg:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
button.bg:SetTexCoord(...)
button.bg:Point('CENTER')
button.bg:Size(40, 40)
button.bg:SetAlpha(0.6)
S:HandleCheckBox(button.checkButton)
end
function S:Blizzard_PVPUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.pvp) then return end
_G.PVPUIFrame:StripTextures()
for i = 1, 2 do
S:HandleTab(_G['PVPUIFrameTab'..i])
end
for i = 1, 3 do
local bu = _G['PVPQueueFrameCategoryButton'..i]
bu.Ring:Kill()
bu.Background:Kill()
S:HandleButton(bu)
bu.Icon:Size(45)
bu.Icon:ClearAllPoints()
bu.Icon:Point('LEFT', 10, 0)
S:HandleIcon(bu.Icon, true)
end
local PVPQueueFrame = _G.PVPQueueFrame
PVPQueueFrame.HonorInset:StripTextures()
PVPQueueFrame.CategoryButton1.Icon:SetTexture([[Interface\Icons\achievement_bg_winwsg]])
PVPQueueFrame.CategoryButton2.Icon:SetTexture([[Interface\Icons\achievement_bg_killxenemies_generalsroom]])
PVPQueueFrame.CategoryButton3.Icon:SetTexture([[Interface\Icons\Achievement_General_StayClassy]])
local SeasonReward = PVPQueueFrame.HonorInset.RatedPanel.SeasonRewardFrame
SeasonReward.CircleMask:Hide()
SeasonReward.Ring:Hide()
SeasonReward.Icon:SetTexCoord(unpack(E.TexCoords))
local RewardFrameBorder = CreateFrame('Frame', nil, SeasonReward, 'BackdropTemplate')
RewardFrameBorder:SetTemplate()
RewardFrameBorder:SetOutside(SeasonReward.Icon)
SeasonReward.Icon:SetParent(RewardFrameBorder)
SeasonReward.Icon:SetDrawLayer('OVERLAY')
-- Honor Frame
local HonorFrame = _G.HonorFrame
HonorFrame:StripTextures()
S:HandleScrollBar(_G.HonorFrameSpecificFrameScrollBar)
S:HandleDropDownBox(_G.HonorFrameTypeDropDown, 230)
S:HandleButton(_G.HonorFrameQueueButton)
local BonusFrame = HonorFrame.BonusFrame
BonusFrame:StripTextures()
BonusFrame.ShadowOverlay:Hide()
BonusFrame.WorldBattlesTexture:Hide()
for _, bonusButton in pairs({'RandomBGButton', 'Arena1Button', 'RandomEpicBGButton', 'BrawlButton', 'SpecialEventButton'}) do
local bu = BonusFrame[bonusButton]
local reward = bu.Reward
S:HandleButton(bu)
bu.SelectedTexture:SetInside()
bu.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
reward.Border:Hide()
reward.CircleMask:Hide()
S:HandleIcon(reward.Icon, true)
reward.EnlistmentBonus:StripTextures()
reward.EnlistmentBonus:CreateBackdrop()
reward.EnlistmentBonus:Size(20, 20)
reward.EnlistmentBonus:Point('TOPRIGHT', 2, 2)
local EnlistmentBonusIcon = reward.EnlistmentBonus:CreateTexture()
EnlistmentBonusIcon:Point('TOPLEFT', reward.EnlistmentBonus, 'TOPLEFT', 2, -2)
EnlistmentBonusIcon:Point('BOTTOMRIGHT', reward.EnlistmentBonus, 'BOTTOMRIGHT', -2, 2)
EnlistmentBonusIcon:SetTexture([[Interface\Icons\achievement_guildperk_honorablemention_rank2]])
EnlistmentBonusIcon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
end
-- Honor Frame Specific Buttons
for _, bu in pairs(HonorFrame.SpecificFrame.buttons) do
bu.Bg:Hide()
bu.Border:Hide()
bu:SetNormalTexture('')
bu:SetHighlightTexture('')
bu:StripTextures()
bu:CreateBackdrop()
bu.backdrop:Point('TOPLEFT', 2, 0)
bu.backdrop:Point('BOTTOMRIGHT', -1, 2)
bu:StyleButton(nil, true)
bu.SelectedTexture:SetInside(bu.backdrop)
bu.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
bu.Icon:SetTexCoord(unpack(E.TexCoords))
bu.Icon:Point('TOPLEFT', 5, -3)
end
hooksecurefunc('LFG_PermanentlyDisableRoleButton', function(s)
if s.bg then s.bg:SetDesaturated(true) end
end)
-- New tiny Role icons in Bfa
HandleRoleChecks(HonorFrame.TankIcon, _G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
HandleRoleChecks(HonorFrame.HealerIcon, _G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
HandleRoleChecks(HonorFrame.DPSIcon, _G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
-- Conquest Frame
local ConquestFrame = _G.ConquestFrame
ConquestFrame:StripTextures()
ConquestFrame.ShadowOverlay:Hide()
S:HandleButton(_G.ConquestJoinButton)
HandleRoleChecks(ConquestFrame.TankIcon, _G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
HandleRoleChecks(ConquestFrame.HealerIcon, _G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
HandleRoleChecks(ConquestFrame.DPSIcon, _G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
for _, bu in pairs({ConquestFrame.Arena2v2, ConquestFrame.Arena3v3, ConquestFrame.RatedBG}) do
local reward = bu.Reward
S:HandleButton(bu)
bu.SelectedTexture:SetInside()
bu.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
reward.Border:Hide()
reward.CircleMask:Hide()
S:HandleIcon(reward.Icon, true)
end
ConquestFrame.Arena3v3:Point('TOP', ConquestFrame.Arena2v2, 'BOTTOM', 0, -2)
-- Item Borders for HonorFrame & ConquestFrame
hooksecurefunc('PVPUIFrame_ConfigureRewardFrame', function(rewardFrame, _, _, itemRewards, currencyRewards)
local rewardTexture, rewardQuaility, _ = nil, 1
if currencyRewards then
for _, reward in ipairs(currencyRewards) do
local info = C_CurrencyInfo_GetCurrencyInfo(reward.id)
if info and info.quality == LE_ITEM_QUALITY_ARTIFACT then
_, rewardTexture, _, rewardQuaility = CurrencyContainerUtil_GetCurrencyContainerInfo(reward.id, reward.quantity, info.name, info.iconFileID, info.quality)
end
end
end
if not rewardTexture and itemRewards then
local reward = itemRewards[1]
if reward then
_, _, rewardQuaility, _, _, _, _, _, _, rewardTexture = GetItemInfo(reward.id)
end
end
if rewardTexture then
rewardFrame.Icon:SetTexture(rewardTexture)
rewardFrame.Icon.backdrop:SetBackdropBorderColor(GetItemQualityColor(rewardQuaility))
end
end)
if E.private.skins.blizzard.tooltip then
_G.ConquestTooltip:SetTemplate('Transparent')
end
-- PvP StatusBars
for _, Frame in pairs({ HonorFrame, ConquestFrame }) do
Frame.ConquestBar.Border:Hide()
Frame.ConquestBar.Background:Hide()
Frame.ConquestBar.Reward.Ring:Hide()
Frame.ConquestBar.Reward.CircleMask:Hide()
if not Frame.ConquestBar.backdrop then
Frame.ConquestBar:CreateBackdrop()
Frame.ConquestBar.backdrop:SetOutside()
end
Frame.ConquestBar.Reward:Point('LEFT', Frame.ConquestBar, 'RIGHT', -8, 0)
Frame.ConquestBar:SetStatusBarTexture(E.media.normTex)
Frame.ConquestBar:SetStatusBarColor(unpack(E.myfaction == 'Alliance' and {0.05, 0.15, 0.36} or {0.63, 0.09, 0.09}))
S:HandleIcon(Frame.ConquestBar.Reward.Icon)
end
-- New Season Frame
local NewSeasonPopup = _G.PVPQueueFrame.NewSeasonPopup
S:HandleButton(NewSeasonPopup.Leave)
NewSeasonPopup:StripTextures()
NewSeasonPopup:CreateBackdrop('Overlay')
NewSeasonPopup:SetFrameLevel(5)
if NewSeasonPopup.NewSeason then
NewSeasonPopup.NewSeason:SetTextColor(1, .8, 0)
NewSeasonPopup.NewSeason:SetShadowOffset(1, -1)
end
if NewSeasonPopup.SeasonRewardText then
NewSeasonPopup.SeasonRewardText:SetTextColor(1, .8, 0)
NewSeasonPopup.SeasonRewardText:SetShadowOffset(1, -1)
end
if NewSeasonPopup.SeasonDescription then
NewSeasonPopup.SeasonDescription:SetTextColor(1, 1, 1)
NewSeasonPopup.SeasonDescription:SetShadowOffset(1, -1)
end
if NewSeasonPopup.SeasonDescription2 then
NewSeasonPopup.SeasonDescription2:SetTextColor(1, 1, 1)
NewSeasonPopup.SeasonDescription2:SetShadowOffset(1, -1)
end
local RewardFrame = NewSeasonPopup.SeasonRewardFrame
RewardFrame.CircleMask:Hide()
RewardFrame.Ring:Hide()
RewardFrame.Icon:SetTexCoord(unpack(E.TexCoords))
end
function S:PVPReadyDialog()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.pvp) then return end
--PVP QUEUE FRAME
_G.PVPReadyDialog:StripTextures()
_G.PVPReadyDialog:CreateBackdrop('Transparent')
S:HandleButton(_G.PVPReadyDialogEnterBattleButton)
S:HandleButton(_G.PVPReadyDialogLeaveQueueButton)
S:HandleCloseButton(_G.PVPReadyDialogCloseButton)
_G.PVPReadyDialogRoleIcon.texture:SetTexture([[Interface\LFGFrame\UI-LFG-ICONS-ROLEBACKGROUNDS]])
_G.PVPReadyDialogRoleIcon.texture:SetAlpha(0.5)
hooksecurefunc('PVPReadyDialog_Display', function(s, _, _, _, queueType, _, role)
if role == 'DAMAGER' then
_G.PVPReadyDialogRoleIcon.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonDPS.background:GetTexCoord())
elseif role == 'TANK' then
_G.PVPReadyDialogRoleIcon.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonTank.background:GetTexCoord())
elseif role == 'HEALER' then
_G.PVPReadyDialogRoleIcon.texture:SetTexCoord(_G.LFDQueueFrameRoleButtonHealer.background:GetTexCoord())
end
if queueType == 'ARENA' then
s:Height(100)
end
s.background:Hide()
end)
end
S:AddCallback('PVPReadyDialog')
S:AddCallbackForAddon('Blizzard_PVPUI')

View File

@@ -0,0 +1,62 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
function S:Blizzard_PVPMatch()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.bgscore) then return end
-- Macro to show the PVPMatchScoreboard: /run PVPMatchScoreboard:Show()
local PVPMatchScoreboard = _G.PVPMatchScoreboard
PVPMatchScoreboard:StripTextures()
PVPMatchScoreboard:DisableDrawLayer('BORDER')
PVPMatchScoreboard:CreateBackdrop('Transparent')
PVPMatchScoreboard.Content:StripTextures()
PVPMatchScoreboard.Content.TabContainer.InsetBorderTop:Hide()
S:HandleScrollBar(PVPMatchScoreboard.Content.ScrollFrame.ScrollBar)
S:HandleCloseButton(PVPMatchScoreboard.CloseButton)
--Also have a look at the tabs
local tabs = {
PVPMatchScoreboard.Content.TabContainer.TabGroup.Tab1,
PVPMatchScoreboard.Content.TabContainer.TabGroup.Tab2,
PVPMatchScoreboard.Content.TabContainer.TabGroup.Tab3,
}
for _, tab in pairs(tabs) do
S:HandleTab(tab)
end
PVPMatchScoreboard.Content.TabContainer.MatchmakingText:FontTemplate()
-- Macro to show the PVPMatchResults: /run PVPMatchResults:Show()
local PVPMatchResults = _G.PVPMatchResults
PVPMatchResults:StripTextures()
PVPMatchResults:DisableDrawLayer('BORDER')
PVPMatchResults:CreateBackdrop('Transparent')
PVPMatchResults.content:StripTextures()
PVPMatchResults.content.tabContainer:StripTextures()
S:HandleScrollBar(PVPMatchResults.content.scrollFrame.scrollBar)
S:HandleCloseButton(PVPMatchResults.CloseButton)
S:HandleButton(PVPMatchResults.buttonContainer.leaveButton)
S:HandleButton(PVPMatchResults.buttonContainer.requeueButton)
local tabz = {
PVPMatchResults.content.tabContainer.tabGroup.tab1,
PVPMatchResults.content.tabContainer.tabGroup.tab2,
PVPMatchResults.content.tabContainer.tabGroup.tab3,
}
for _, tab in pairs(tabz) do
S:HandleTab(tab)
end
PVPMatchResults.content.tabContainer.matchmakingText:FontTemplate()
end
S:AddCallbackForAddon('Blizzard_PVPMatch')

View File

@@ -0,0 +1,416 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local pairs, unpack = pairs, unpack
local _G = _G
local C_PetBattles_GetPetType = C_PetBattles.GetPetType
local C_PetBattles_GetNumAuras = C_PetBattles.GetNumAuras
local C_PetBattles_GetAuraInfo = C_PetBattles.GetAuraInfo
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS
local function SkinPetButton(self, bf)
if not self.backdrop then
self:CreateBackdrop()
end
self:SetNormalTexture('')
self.Icon:SetTexCoord(unpack(E.TexCoords))
self.Icon:SetParent(self.backdrop)
self.Icon:SetDrawLayer('BORDER')
self:StyleButton(nil, nil, true)
self.SelectedHighlight:SetAlpha(0)
self.pushed:SetInside(self.backdrop)
self.hover:SetInside(self.backdrop)
self:SetFrameStrata('LOW')
self.backdrop:SetFrameStrata('LOW')
if self == bf.SwitchPetButton then
local spbc = self:GetCheckedTexture()
spbc:SetColorTexture(1, 1, 1, 0.3)
spbc:SetInside(self.backdrop)
end
end
local function SkinPetTooltip(tt)
tt.Background:SetTexture()
tt.BorderTop:SetTexture()
tt.BorderTopLeft:SetTexture()
tt.BorderTopRight:SetTexture()
tt.BorderLeft:SetTexture()
tt.BorderRight:SetTexture()
tt.BorderBottom:SetTexture()
tt.BorderBottomRight:SetTexture()
tt.BorderBottomLeft:SetTexture()
if tt.Delimiter1 then
tt.Delimiter1:SetTexture()
end
if tt.Delimiter2 then
tt.Delimiter2:SetTexture()
end
tt:CreateBackdrop('Transparent')
end
function S:PetBattleFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.petbattleui) then return end
local f = _G.PetBattleFrame
local bf = f.BottomFrame
local infoBars = {
f.ActiveAlly,
f.ActiveEnemy
}
S:HandleCloseButton(_G.FloatingBattlePetTooltip.CloseButton)
-- TOP FRAMES
f:StripTextures()
for index, infoBar in pairs(infoBars) do
infoBar.Border:SetAlpha(0)
infoBar.Border2:SetAlpha(0)
infoBar.healthBarWidth = 300
infoBar.IconBackdrop = CreateFrame('Frame', nil, infoBar, 'BackdropTemplate')
infoBar.IconBackdrop:SetFrameLevel(infoBar:GetFrameLevel() - 1)
infoBar.IconBackdrop:SetOutside(infoBar.Icon)
infoBar.IconBackdrop:SetTemplate()
infoBar.BorderFlash:Kill()
infoBar.HealthBarBG:Kill()
infoBar.HealthBarFrame:Kill()
infoBar.HealthBarBackdrop = CreateFrame('Frame', nil, infoBar, 'BackdropTemplate')
infoBar.HealthBarBackdrop:SetFrameLevel(infoBar:GetFrameLevel() - 1)
infoBar.HealthBarBackdrop:SetTemplate('Transparent')
infoBar.HealthBarBackdrop:Width(infoBar.healthBarWidth + (E.Border * 2))
infoBar.ActualHealthBar:SetTexture(E.media.normTex)
E:RegisterStatusBar(infoBar.ActualHealthBar)
infoBar.PetTypeFrame = CreateFrame('Frame', nil, infoBar)
infoBar.PetTypeFrame:Size(100, 23)
infoBar.PetTypeFrame.text = infoBar.PetTypeFrame:CreateFontString(nil, 'OVERLAY')
infoBar.PetTypeFrame.text:FontTemplate()
infoBar.PetTypeFrame.text:SetText('')
infoBar.ActualHealthBar:ClearAllPoints()
infoBar.Name:ClearAllPoints()
infoBar.FirstAttack = infoBar:CreateTexture(nil, 'ARTWORK')
infoBar.FirstAttack:Size(30)
infoBar.FirstAttack:SetTexture([[Interface\PetBattles\PetBattle-StatIcons]])
if index == 1 then
infoBar.HealthBarBackdrop:Point('TOPLEFT', infoBar.ActualHealthBar, 'TOPLEFT', -E.Border, E.Border)
infoBar.HealthBarBackdrop:Point('BOTTOMLEFT', infoBar.ActualHealthBar, 'BOTTOMLEFT', -E.Border, -E.Border)
infoBar.ActualHealthBar:SetVertexColor(171/255, 214/255, 116/255)
f.Ally2.iconPoint = infoBar.IconBackdrop
f.Ally3.iconPoint = infoBar.IconBackdrop
infoBar.ActualHealthBar:Point('BOTTOMLEFT', infoBar.Icon, 'BOTTOMRIGHT', 10, 0)
infoBar.Name:Point('BOTTOMLEFT', infoBar.ActualHealthBar, 'TOPLEFT', 0, 10)
infoBar.PetTypeFrame:Point('BOTTOMRIGHT',infoBar.HealthBarBackdrop, 'TOPRIGHT', 0, 4)
infoBar.PetTypeFrame.text:Point('RIGHT')
infoBar.FirstAttack:Point('LEFT', infoBar.HealthBarBackdrop, 'RIGHT', 5, 0)
infoBar.FirstAttack:SetTexCoord(infoBar.SpeedIcon:GetTexCoord())
infoBar.FirstAttack:SetVertexColor(.1,.1,.1,1)
else
infoBar.HealthBarBackdrop:Point('TOPRIGHT', infoBar.ActualHealthBar, 'TOPRIGHT', E.Border, E.Border)
infoBar.HealthBarBackdrop:Point('BOTTOMRIGHT', infoBar.ActualHealthBar, 'BOTTOMRIGHT', E.Border, -E.Border)
infoBar.ActualHealthBar:SetVertexColor(196/255, 30/255, 60/255)
f.Enemy2.iconPoint = infoBar.IconBackdrop
f.Enemy3.iconPoint = infoBar.IconBackdrop
infoBar.ActualHealthBar:Point('BOTTOMRIGHT', infoBar.Icon, 'BOTTOMLEFT', -10, 0)
infoBar.Name:Point('BOTTOMRIGHT', infoBar.ActualHealthBar, 'TOPRIGHT', 0, 10)
infoBar.PetTypeFrame:Point('BOTTOMLEFT',infoBar.HealthBarBackdrop, 'TOPLEFT', 2, 4)
infoBar.PetTypeFrame.text:Point('LEFT')
infoBar.FirstAttack:Point('RIGHT', infoBar.HealthBarBackdrop, 'LEFT', -5, 0)
infoBar.FirstAttack:SetTexCoord(.5, 0, .5, 1)
infoBar.FirstAttack:SetVertexColor(.1,.1,.1,1)
end
infoBar.HealthText:ClearAllPoints()
infoBar.HealthText:Point('CENTER', infoBar.HealthBarBackdrop, 'CENTER')
infoBar.PetType:ClearAllPoints()
infoBar.PetType:SetAllPoints(infoBar.PetTypeFrame)
infoBar.PetType:SetFrameLevel(infoBar.PetTypeFrame:GetFrameLevel() + 2)
infoBar.PetType:SetAlpha(0)
infoBar.LevelUnderlay:SetAlpha(0)
infoBar.Level:SetFontObject(_G.NumberFont_Outline_Huge)
infoBar.Level:ClearAllPoints()
infoBar.Level:Point('BOTTOMLEFT', infoBar.Icon, 'BOTTOMLEFT', 2, 2)
if infoBar.SpeedIcon then
infoBar.SpeedIcon:ClearAllPoints()
infoBar.SpeedIcon:Point('CENTER') -- to set
infoBar.SpeedIcon:SetAlpha(0)
infoBar.SpeedUnderlay:SetAlpha(0)
end
end
-- PETS SPEED INDICATOR UPDATE
hooksecurefunc('PetBattleFrame_UpdateSpeedIndicators', function()
if not f.ActiveAlly.SpeedIcon:IsShown() and not f.ActiveEnemy.SpeedIcon:IsShown() then
f.ActiveAlly.FirstAttack:Hide()
f.ActiveEnemy.FirstAttack:Hide()
return
end
for _, infoBar in pairs(infoBars) do
infoBar.FirstAttack:Show()
if infoBar.SpeedIcon:IsShown() then
infoBar.FirstAttack:SetVertexColor(0,1,0,1)
else
infoBar.FirstAttack:SetVertexColor(.8,0,.3,1)
end
end
end)
-- PETS UNITFRAMES PET TYPE UPDATE
hooksecurefunc('PetBattleUnitFrame_UpdatePetType', function(s)
if s.PetType then
local petType = C_PetBattles_GetPetType(s.petOwner, s.petIndex)
if s.PetTypeFrame and petType then
s.PetTypeFrame.text:SetText(_G['BATTLE_PET_NAME_'..petType])
end
end
end)
-- PETS UNITFRAMES AURA SKINS
hooksecurefunc('PetBattleAuraHolder_Update', function(s)
if not (s.petOwner and s.petIndex) then return end
local nextFrame = 1
for i=1, C_PetBattles_GetNumAuras(s.petOwner, s.petIndex) do
local _, _, turnsRemaining, isBuff = C_PetBattles_GetAuraInfo(s.petOwner, s.petIndex, i)
if (isBuff and s.displayBuffs) or (not isBuff and s.displayDebuffs) then
local frame = s.frames[nextFrame]
-- always hide the border
frame.DebuffBorder:Hide()
if not frame.isSkinned then
frame:CreateBackdrop()
frame.backdrop:SetOutside(frame.Icon)
frame.Icon:SetTexCoord(unpack(E.TexCoords))
frame.Icon:SetParent(frame.backdrop)
end
if isBuff then
frame.backdrop:SetBackdropBorderColor(0, 1, 0)
else
frame.backdrop:SetBackdropBorderColor(1, 0, 0)
end
-- move duration and change font
frame.Duration:FontTemplate(nil, 12, 'OUTLINE')
frame.Duration:ClearAllPoints()
frame.Duration:Point('TOP', frame.Icon, 'BOTTOM', 1, -4)
if turnsRemaining > 0 then
frame.Duration:SetText(turnsRemaining)
end
nextFrame = nextFrame + 1
end
end
end)
-- WEATHER
hooksecurefunc('PetBattleWeatherFrame_Update', function(s)
local weather = C_PetBattles_GetAuraInfo(_G.LE_BATTLE_PET_WEATHER, _G.PET_BATTLE_PAD_INDEX, 1)
if weather then
s.Icon:Hide()
s.BackgroundArt:ClearAllPoints()
s.BackgroundArt:Point('TOP', s, 'TOP', 0, 14)
s.BackgroundArt:Size(200, 100)
s.Name:Hide()
s.DurationShadow:Hide()
s.Label:Hide()
s.Duration:ClearAllPoints()
s.Duration:Point('TOP', s, 'TOP', 0, 10)
s:ClearAllPoints()
s:Point('TOP', E.UIParent, 0, -15)
end
end)
hooksecurefunc('PetBattleUnitFrame_UpdateDisplay', function(s)
s.Icon:SetTexCoord(unpack(E.TexCoords))
end)
f.TopVersusText:ClearAllPoints()
f.TopVersusText:Point('TOP', f, 'TOP', 0, -35)
-- TOOLTIPS SKINNING
if E.private.skins.blizzard.tooltip then
SkinPetTooltip(_G.BattlePetTooltip)
SkinPetTooltip(_G.PetBattlePrimaryAbilityTooltip)
SkinPetTooltip(_G.PetBattlePrimaryUnitTooltip)
SkinPetTooltip(_G.FloatingBattlePetTooltip)
SkinPetTooltip(_G.FloatingPetBattleAbilityTooltip)
-- BATTLEPET RARITY COLOR
hooksecurefunc('BattlePetToolTip_Show', function(_, _, rarity)
if not _G.BattlePetTooltip.backdrop then return end
local quality = rarity and ITEM_QUALITY_COLORS[rarity]
if quality and rarity > 1 then
_G.BattlePetTooltip.backdrop:SetBackdropBorderColor(quality.r, quality.g, quality.b)
else
_G.BattlePetTooltip.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end)
-- TOOLTIP DEFAULT POSITION
hooksecurefunc('PetBattleAbilityTooltip_Show', function()
local t = _G.PetBattlePrimaryAbilityTooltip
local point, x, y = 'TOPRIGHT', -4, -4
--Position it at the bottom right on low resolution setups
--Otherwise the tooltip might overlap enemy team unit info
if E.lowversion then
point, x, y = 'BOTTOMRIGHT', -4, 4
end
t:ClearAllPoints()
t:Point(point, E.UIParent, point, x, y)
end)
end
local extraInfoBars = {
f.Ally2,
f.Ally3,
f.Enemy2,
f.Enemy3
}
for _, infoBar in pairs(extraInfoBars) do
infoBar.BorderAlive:SetAlpha(0)
infoBar.HealthBarBG:SetAlpha(0)
infoBar.HealthDivider:SetAlpha(0)
infoBar:Size(40)
infoBar:CreateBackdrop()
infoBar:ClearAllPoints()
infoBar.healthBarWidth = 40
infoBar.ActualHealthBar:ClearAllPoints()
infoBar.ActualHealthBar:Point('TOPLEFT', infoBar.backdrop, 'BOTTOMLEFT', E.Border, -3)
infoBar.HealthBarBackdrop = CreateFrame('Frame', nil, infoBar, 'BackdropTemplate')
infoBar.HealthBarBackdrop:SetFrameLevel(infoBar:GetFrameLevel() - 1)
infoBar.HealthBarBackdrop:SetTemplate()
infoBar.HealthBarBackdrop:Width(infoBar.healthBarWidth + (E.Border*2))
infoBar.HealthBarBackdrop:Point('TOPLEFT', infoBar.ActualHealthBar, 'TOPLEFT', -E.Border, E.Border)
infoBar.HealthBarBackdrop:Point('BOTTOMLEFT', infoBar.ActualHealthBar, 'BOTTOMLEFT', -E.Border, -E.Spacing)
end
f.Ally2:Point('TOPRIGHT', f.Ally2.iconPoint, 'TOPLEFT', -6, -2)
f.Ally3:Point('TOPRIGHT', f.Ally2, 'TOPLEFT', -8, 0)
f.Enemy2:Point('TOPLEFT', f.Enemy2.iconPoint, 'TOPRIGHT', 6, -2)
f.Enemy3:Point('TOPLEFT', f.Enemy2, 'TOPRIGHT', 8, 0)
---------------------------------
-- PET BATTLE ACTION BAR SETUP --
---------------------------------
local bar = CreateFrame('Frame', 'ElvUIPetBattleActionBar', f, 'BackdropTemplate')
bar:Size (52*6 + 7*10, 52 * 1 + 10*2)
bar:EnableMouse(true)
bar:SetTemplate()
bar:Point('BOTTOM', E.UIParent, 'BOTTOM', 0, 4)
bar:SetFrameLevel(2)
bar:SetFrameStrata('BACKGROUND')
bf:StripTextures()
bf.TurnTimer:StripTextures()
bf.TurnTimer.SkipButton:SetParent(bar)
S:HandleButton(bf.TurnTimer.SkipButton)
bf.TurnTimer.SkipButton:Width(bar:GetWidth())
bf.TurnTimer.SkipButton:ClearAllPoints()
bf.TurnTimer.SkipButton:Point('BOTTOM', bar, 'TOP', 0, E.PixelMode and -1 or 1)
hooksecurefunc(bf.TurnTimer.SkipButton, 'SetPoint', function(btn, _, _, _, _, _, forced)
if forced ~= true then
btn:ClearAllPoints()
btn:Point('BOTTOM', bar, 'TOP', 0, E.PixelMode and -1 or 1, true)
end
end)
bf.TurnTimer:Size(bf.TurnTimer.SkipButton:GetWidth(), bf.TurnTimer.SkipButton:GetHeight())
bf.TurnTimer:ClearAllPoints()
bf.TurnTimer:Point('TOP', E.UIParent, 'TOP', 0, -140)
bf.TurnTimer.TimerText:Point('CENTER')
bf.FlowFrame:StripTextures()
bf.MicroButtonFrame:Kill()
bf.Delimiter:StripTextures()
bf.xpBar:SetParent(bar)
bf.xpBar:Width(bar:GetWidth() - (E.Border * 2))
bf.xpBar:CreateBackdrop()
bf.xpBar:ClearAllPoints()
bf.xpBar:Point('BOTTOM', bf.TurnTimer.SkipButton, 'TOP', 0, E.PixelMode and 0 or 3)
bf.xpBar:SetScript('OnShow', function(s) s:StripTextures() s:SetStatusBarTexture(E.media.normTex) end)
E:RegisterStatusBar(bf.xpBar)
-- PETS SELECTION SKIN
for i = 1, 3 do
local pet = bf.PetSelectionFrame['Pet'..i]
pet.HealthBarBG:SetAlpha(0)
pet.HealthDivider:SetAlpha(0)
pet.ActualHealthBar:SetAlpha(0)
pet.SelectedTexture:SetAlpha(0)
pet.MouseoverHighlight:SetAlpha(0)
pet.Framing:SetAlpha(0)
pet.Icon:SetAlpha(0)
pet.Name:SetAlpha(0)
pet.DeadOverlay:SetAlpha(0)
pet.Level:SetAlpha(0)
pet.HealthText:SetAlpha(0)
end
-- MOVE DEFAULT POSITION OF PETS SELECTION
hooksecurefunc('PetBattlePetSelectionFrame_Show', function()
bf.PetSelectionFrame:ClearAllPoints()
bf.PetSelectionFrame:Point('BOTTOM', bf.xpBar, 'TOP', 0, 8)
end)
hooksecurefunc('PetBattleFrame_UpdateActionBarLayout', function()
for i=1, _G.NUM_BATTLE_PET_ABILITIES do
local b = bf.abilityButtons[i]
SkinPetButton(b, bf)
b:SetParent(bar)
b:ClearAllPoints()
if i == 1 then
b:Point('BOTTOMLEFT', 10, 10)
else
local previous = bf.abilityButtons[i-1]
b:Point('LEFT', previous, 'RIGHT', 10, 0)
end
end
bf.SwitchPetButton:ClearAllPoints()
bf.SwitchPetButton:Point('LEFT', bf.abilityButtons[3], 'RIGHT', 10, 0)
SkinPetButton(bf.SwitchPetButton, bf)
bf.CatchButton:SetParent(bar)
bf.CatchButton:ClearAllPoints()
bf.CatchButton:Point('LEFT', bf.SwitchPetButton, 'RIGHT', 10, 0)
SkinPetButton(bf.CatchButton, bf)
bf.ForfeitButton:SetParent(bar)
bf.ForfeitButton:ClearAllPoints()
bf.ForfeitButton:Point('LEFT', bf.CatchButton, 'RIGHT', 10, 0)
SkinPetButton(bf.ForfeitButton, bf)
end)
local PetBattleQueueReadyFrame = _G.PetBattleQueueReadyFrame
PetBattleQueueReadyFrame:StripTextures()
PetBattleQueueReadyFrame:CreateBackdrop('Transparent')
S:HandleButton(PetBattleQueueReadyFrame.AcceptButton)
S:HandleButton(PetBattleQueueReadyFrame.DeclineButton)
PetBattleQueueReadyFrame.Art:SetTexture([[Interface\PetBattles\PetBattlesQueue]])
--StaticPopupSpecial_Show(PetBattleQueueReadyFrame);
end
S:AddCallback('PetBattleFrame')

View File

@@ -0,0 +1,36 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:PetitionFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.petition) then return end
local PetitionFrame = _G.PetitionFrame
PetitionFrame:StripTextures(true)
PetitionFrame:CreateBackdrop('Transparent')
_G.PetitionFrameInset:Kill()
S:HandleButton(_G.PetitionFrameSignButton)
S:HandleButton(_G.PetitionFrameRequestButton)
S:HandleButton(_G.PetitionFrameRenameButton)
S:HandleButton(_G.PetitionFrameCancelButton)
S:HandleCloseButton(_G.PetitionFrameCloseButton)
_G.PetitionFrameCharterTitle:SetTextColor(1, 1, 0)
_G.PetitionFrameCharterName:SetTextColor(1, 1, 1)
_G.PetitionFrameMasterTitle:SetTextColor(1, 1, 0)
_G.PetitionFrameMasterName:SetTextColor(1, 1, 1)
_G.PetitionFrameMemberTitle:SetTextColor(1, 1, 0)
for i = 1, 9 do
_G['PetitionFrameMemberName'..i]:SetTextColor(1, 1, 1)
end
_G.PetitionFrameInstructions:SetTextColor(1, 1, 1)
_G.PetitionFrameRenameButton:Point('LEFT', _G.PetitionFrameRequestButton, 'RIGHT', 3, 0)
_G.PetitionFrameRenameButton:Point('RIGHT', _G.PetitionFrameCancelButton, 'LEFT', -3, 0)
end
S:AddCallback('PetitionFrame')

View File

@@ -0,0 +1,135 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local hooksecurefunc = hooksecurefunc
local IsInJailersTower = IsInJailersTower
local function StyleText(text)
if text.IsSkinned then return end
text:SetTextColor(1, 1, 1)
text.SetTextColor = E.noop
text.IsSkinned = true
end
local function HandleFirstOptionButton(button)
if not button then return end
button:StripTextures(true)
S:HandleButton(button)
end
local function HandleSecondOptionButton(button)
if not button then return end
S:HandleButton(button, nil, nil, nil, nil, nil, nil, true)
end
local function HandleJailerOptionButton(button)
if not button or button.IsSkinned then return end
button:StripTextures(true)
button:CreateBackdrop()
button.backdrop:SetAllPoints()
button:HookScript('OnEnter', S.SetModifiedBackdrop)
button:HookScript('OnLeave', S.SetOriginalBackdrop)
button.IsSkinned = true
end
function S:Blizzard_PlayerChoiceUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.playerChoice) then return end
local frame = _G.PlayerChoiceFrame
hooksecurefunc(frame, 'Update', function()
if not frame.IsSkinned then
frame.BlackBackground:SetAlpha(0)
frame.Background:SetAlpha(0)
frame.NineSlice:SetAlpha(0)
frame.BorderFrame.Header:SetAlpha(0)
frame:CreateBackdrop('Transparent')
frame.Title:DisableDrawLayer('BACKGROUND')
frame.Title.Text:SetTextColor(1, .8, 0)
S:HandleCloseButton(frame.CloseButton)
frame.CloseButton.Border:SetAlpha(0)
frame.IsSkinned = true
end
frame.backdrop:SetShown(not IsInJailersTower())
for i = 1, frame:GetNumOptions() do
local option = frame.Options[i]
if E.private.skins.parchmentRemoverEnable then
option.Header.Text:SetTextColor(1, .8, 0)
option.OptionText:SetTextColor(1, 1, 1)
option.Background:SetAlpha(0)
option.Header.Ribbon:SetAlpha(0)
end
-- for some reason the buttons are different. W T F
if IsInJailersTower() then
if option.OptionButtonsContainer.button1 then
HandleJailerOptionButton(option.OptionButtonsContainer.button1)
end
if option.OptionButtonsContainer.button2 then
HandleJailerOptionButton(option.OptionButtonsContainer.button2)
end
else
if option.OptionButtonsContainer.button1 then
HandleFirstOptionButton(option.OptionButtonsContainer.button1)
end
if option.OptionButtonsContainer.button2 then
HandleSecondOptionButton(option.OptionButtonsContainer.button2)
end
end
for i = 1, option.WidgetContainer:GetNumChildren() do
local child = select(i, option.WidgetContainer:GetChildren())
if child then
if child.Text then
if E.private.skins.parchmentRemoverEnable then
child.Text:SetTextColor(1, 1, 1)
end
end
if child.Spell then
if not child.Spell.isSkinned then
child.Spell.Border:SetTexture('')
child.Spell.IconMask:Hide()
S:HandleIcon(child.Spell.Icon)
child.Spell.isSkinned = true
end
if E.private.skins.parchmentRemoverEnable then
child.Spell.Text:SetTextColor(1, 1, 1)
end
end
for j = 1, child:GetNumChildren() do
local child2 = select(j, child:GetChildren())
if child2 then
if child2.Text then StyleText(child2.Text) end
if child2.LeadingText then StyleText(child2.LeadingText) end
if child2.Icon and not child2.Icon.isSkinned then
S:HandleIcon(child2.Icon)
child2.Icon.isSkinned = true
end
end
end
end
end
end
end)
end
S:AddCallbackForAddon('Blizzard_PlayerChoiceUI')

View File

@@ -0,0 +1,500 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local gsub, pairs, ipairs, select, unpack, strmatch, strfind = gsub, pairs, ipairs, select, unpack, strmatch, strfind
local C_QuestLog_GetNextWaypointText = C_QuestLog.GetNextWaypointText
local C_QuestLog_GetSelectedQuest = C_QuestLog.GetSelectedQuest
local GetMoney = GetMoney
local CreateFrame = CreateFrame
local GetQuestID = GetQuestID
local GetQuestBackgroundMaterial = GetQuestBackgroundMaterial
local GetQuestLogRequiredMoney = GetQuestLogRequiredMoney
local GetQuestLogLeaderBoard = GetQuestLogLeaderBoard
local GetNumQuestLeaderBoards = GetNumQuestLeaderBoards
local GetNumQuestLogRewardSpells = GetNumQuestLogRewardSpells
local GetNumRewardSpells = GetNumRewardSpells
local hooksecurefunc = hooksecurefunc
local sealFrameTextColor = {
['480404'] = 'c20606',
['042c54'] = '1c86ee',
}
function S:QuestInfoSealFrameText(text)
if text and text ~= '' then
local colorStr, rawText = strmatch(text, '|c[fF][fF](%x%x%x%x%x%x)(.-)|r')
if colorStr and rawText then
colorStr = sealFrameTextColor[colorStr] or '99ccff'
self:SetFormattedText('|cff%s%s|r', colorStr, rawText)
end
end
end
local function HandleReward(frame)
if not frame then return end
if frame.Icon then
frame.Icon:SetDrawLayer('ARTWORK')
S:HandleIcon(frame.Icon, true)
end
if frame.IconBorder then
frame.IconBorder:Kill()
end
if frame.Count then
frame.Count:SetDrawLayer('OVERLAY')
frame.Count:ClearAllPoints()
frame.Count:Point('BOTTOMRIGHT', frame.Icon, 'BOTTOMRIGHT', 0, 0)
end
if frame.NameFrame then
frame.NameFrame:SetAlpha(0)
frame.NameFrame:Hide()
end
if frame.IconOverlay then
frame.IconOverlay:SetAlpha(0)
end
if frame.Name then
frame.Name:FontTemplate()
end
if frame.CircleBackground then
frame.CircleBackground:SetAlpha(0)
frame.CircleBackgroundGlow:SetAlpha(0)
end
for i = 1, frame:GetNumRegions() do
local Region = select(i, frame:GetRegions())
if Region and Region:IsObjectType('Texture') and Region:GetTexture() == [[Interface\Spellbook\Spellbook-Parts]] then
Region:SetTexture('')
end
end
end
local function NewSealStyle()
local theme = _G.QuestInfoSealFrame.theme
return theme and theme.background
end
function S:QuestInfo_StyleScrollFrame(scrollFrame, widthOverride, heightOverride, inset)
if not scrollFrame.backdrop then
scrollFrame:CreateBackdrop()
end
if not scrollFrame.spellTex then
scrollFrame.spellTex = scrollFrame:CreateTexture(nil, 'BACKGROUND', 1)
end
if NewSealStyle() or GetQuestBackgroundMaterial() then
scrollFrame.spellTex:Hide()
scrollFrame.backdrop:Hide()
else
scrollFrame.backdrop:Show()
scrollFrame.spellTex:Show()
scrollFrame.spellTex:SetTexture([[Interface\QuestFrame\QuestBG]])
scrollFrame.spellTex:Point('TOPLEFT', inset and 1 or 0, inset and -1 or 0)
scrollFrame.spellTex:Size(widthOverride or 506, heightOverride or 615)
scrollFrame.spellTex:SetTexCoord(0, 1, 0.02, 1)
end
end
S.QuestInfo_StyleScrollFrames = {
[_G.QuestDetailScrollChildFrame] = { frame = _G.QuestDetailScrollFrame, width = 506, height = 615, inset = true },
[_G.QuestRewardScrollChildFrame] = { frame = _G.QuestRewardScrollFrame, width = 506, height = 615, inset = true },
[_G.QuestLogPopupDetailFrame.ScrollFrame.ScrollChild] = {
frame = _G.QuestLogPopupDetailFrameScrollFrame,
width = 509, height = 630, inset = false,
custom = function(self)
self:Height(self:GetHeight() - 2)
if not E.private.skins.parchmentRemoverEnable then
self.spellTex:Height(self:GetHeight() + 217)
end
end
}
}
-- Quest objective text color
local function Quest_GetQuestID()
if _G.QuestInfoFrame.questLog then
return C_QuestLog_GetSelectedQuest()
else
return GetQuestID()
end
end
function S:QuestInfo_ShowObjectives()
local objectives = _G.QuestInfoObjectivesFrame.Objectives
local index = 0
local questID = Quest_GetQuestID()
local waypointText = C_QuestLog_GetNextWaypointText(questID)
if waypointText then
index = index + 1
objectives[index]:SetTextColor(.4, 1, 1)
end
for i = 1, GetNumQuestLeaderBoards() do
local _, objectiveType, isCompleted = GetQuestLogLeaderBoard(i)
if objectiveType ~= 'spell' and objectiveType ~= 'log' and index < _G.MAX_OBJECTIVES then
index = index + 1
local objective = objectives[index]
if objective then
if isCompleted then
objective:SetTextColor(.2, 1, .2)
else
objective:SetTextColor(1, 1, 1)
end
end
end
end
end
function S:QuestInfoItem_OnClick() -- self is not S
_G.QuestInfoItemHighlight:ClearAllPoints()
_G.QuestInfoItemHighlight:SetOutside(self.Icon)
for _, Button in ipairs(_G.QuestInfoRewardsFrame.RewardButtons) do
Button.Name:SetTextColor(1, 1, 1)
end
self.Name:SetTextColor(1, .8, .1)
end
function S:QuestLogQuests_Update() -- self is not S
for i = 1, _G.QuestMapFrame.QuestsFrame.Contents:GetNumChildren() do
local child = select(i, _G.QuestMapFrame.QuestsFrame.Contents:GetChildren())
if child and child.ButtonText and not child.questID then
child:Size(16, 16)
for x = 1, child:GetNumRegions() do
local tex = select(x, child:GetRegions())
if tex and tex.GetAtlas then
local atlas = tex:GetAtlas()
if atlas == 'Campaign_HeaderIcon_Closed' or atlas == 'Campaign_HeaderIcon_ClosedPressed' then
tex:SetTexture(E.Media.Textures.PlusButton)
elseif atlas == 'Campaign_HeaderIcon_Open' or atlas == 'Campaign_HeaderIcon_OpenPressed' then
tex:SetTexture(E.Media.Textures.MinusButton)
end
end
end
end
end
end
function S:QuestInfo_Display(parentFrame) -- self is template, not S
local rewardsFrame = _G.QuestInfoFrame.rewardsFrame
local isQuestLog = _G.QuestInfoFrame.questLog ~= nil
for i, questItem in ipairs(rewardsFrame.RewardButtons) do
local point, relativeTo, relativePoint, _, y = questItem:GetPoint()
if point and relativeTo and relativePoint then
if i == 1 then
questItem:Point(point, relativeTo, relativePoint, 0, y)
elseif relativePoint == 'BOTTOMLEFT' then
questItem:Point(point, relativeTo, relativePoint, 0, -4)
else
questItem:Point(point, relativeTo, relativePoint, 4, 0)
end
end
HandleReward(questItem)
S:HandleIconBorder(questItem.IconBorder, questItem.Icon.backdrop)
questItem.NameFrame:Hide()
questItem.Name:SetTextColor(1, 1, 1)
end
local numSpellRewards = isQuestLog and GetNumQuestLogRewardSpells() or GetNumRewardSpells()
if numSpellRewards > 0 then
if E.private.skins.parchmentRemoverEnable then
for spellHeader in rewardsFrame.spellHeaderPool:EnumerateActive() do
spellHeader:SetVertexColor(1, 1, 1)
end
for spellIcon in rewardsFrame.spellRewardPool:EnumerateActive() do
HandleReward(spellIcon)
end
end
for followerReward in rewardsFrame.followerRewardPool:EnumerateActive() do
if not followerReward.isSkinned then
followerReward:CreateBackdrop()
followerReward.backdrop:SetAllPoints(followerReward.BG)
followerReward.backdrop:Point('TOPLEFT', 40, -5)
followerReward.backdrop:Point('BOTTOMRIGHT', 2, 5)
followerReward.BG:Hide()
followerReward.PortraitFrame:ClearAllPoints()
followerReward.PortraitFrame:Point('RIGHT', followerReward.backdrop, 'LEFT', -2, 0)
followerReward.PortraitFrame.PortraitRing:Hide()
followerReward.PortraitFrame.PortraitRingQuality:SetTexture()
followerReward.PortraitFrame.LevelBorder:SetAlpha(0)
followerReward.PortraitFrame.Portrait:SetTexCoord(0.2, 0.85, 0.2, 0.85)
local level = followerReward.PortraitFrame.Level
level:ClearAllPoints()
level:Point('BOTTOM', followerReward.PortraitFrame, 0, 3)
local squareBG = CreateFrame('Frame', nil, followerReward.PortraitFrame, 'BackdropTemplate')
squareBG:SetFrameLevel(followerReward.PortraitFrame:GetFrameLevel()-1)
squareBG:Point('TOPLEFT', 2, -2)
squareBG:Point('BOTTOMRIGHT', -2, 2)
squareBG:SetTemplate()
followerReward.PortraitFrame.squareBG = squareBG
followerReward.isSkinned = true
end
local r, g, b = followerReward.PortraitFrame.PortraitRingQuality:GetVertexColor()
followerReward.PortraitFrame.squareBG:SetBackdropBorderColor(r, g, b)
end
end
if E.private.skins.parchmentRemoverEnable then
_G.QuestInfoTitleHeader:SetTextColor(1, .8, .1)
_G.QuestInfoDescriptionHeader:SetTextColor(1, .8, .1)
_G.QuestInfoObjectivesHeader:SetTextColor(1, .8, .1)
_G.QuestInfoRewardsFrame.Header:SetTextColor(1, .8, .1)
_G.QuestInfoDescriptionText:SetTextColor(1, 1, 1)
_G.QuestInfoObjectivesText:SetTextColor(1, 1, 1)
_G.QuestInfoGroupSize:SetTextColor(1, 1, 1)
_G.QuestInfoRewardText:SetTextColor(1, 1, 1)
_G.QuestInfoQuestType:SetTextColor(1, 1, 1)
_G.QuestInfoRewardsFrame.ItemChooseText:SetTextColor(1, 1, 1)
_G.QuestInfoRewardsFrame.ItemReceiveText:SetTextColor(1, 1, 1)
if _G.QuestInfoRewardsFrame.SpellLearnText then
_G.QuestInfoRewardsFrame.SpellLearnText:SetTextColor(1, 1, 1)
end
_G.QuestInfoRewardsFrame.PlayerTitleText:SetTextColor(1, 1, 1)
_G.QuestInfoRewardsFrame.XPFrame.ReceiveText:SetTextColor(1, 1, 1)
S:QuestInfo_ShowObjectives()
else
_G.QuestInfoTitleHeader:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoDescriptionHeader:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoObjectivesHeader:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoRewardsFrame.Header:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoDescriptionText:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoObjectivesText:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoGroupSize:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoRewardText:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoQuestType:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoRewardsFrame.ItemChooseText:SetShadowColor(0, 0, 0, 0)
_G.QuestInfoRewardsFrame.ItemReceiveText:SetShadowColor(0, 0, 0, 0)
local style = S.QuestInfo_StyleScrollFrames[parentFrame]
if style then
S:QuestInfo_StyleScrollFrame(style.frame, style.width, style.height, style.inset)
if style.custom then
style.custom(style.frame)
end
end
end
end
function S:CampaignCollapseButton_UpdateState(isCollapsed) -- self is button, not S
if isCollapsed then
self:SetNormalTexture(E.Media.Textures.PlusButton)
self:SetPushedTexture(E.Media.Textures.PlusButton)
else
self:SetNormalTexture(E.Media.Textures.MinusButton)
self:SetPushedTexture(E.Media.Textures.MinusButton)
end
self:Size(16, 16)
end
function S:QuestFrameProgressItems_Update() -- self is not S
_G.QuestProgressRequiredItemsText:SetTextColor(1, .8, .1)
_G.QuestProgressRequiredMoneyText:SetTextColor(1, 1, 1)
end
function S:QuestFrame_SetTitleTextColor() -- self is fontString
self:SetTextColor(1, .8, .1)
end
function S:QuestFrame_SetTextColor() -- self is fontString
self:SetTextColor(1, 1, 1)
end
function S:QuestInfo_ShowRequiredMoney() -- self is not S
local requiredMoney = GetQuestLogRequiredMoney()
if requiredMoney > 0 then
if requiredMoney > GetMoney() then
_G.QuestInfoRequiredMoneyText:SetTextColor(.63, .09, .09)
else
_G.QuestInfoRequiredMoneyText:SetTextColor(1, .8, .1)
end
end
end
function S:BlizzardQuestFrames()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.quest) then return end
S:HandleScrollBar(_G.QuestProgressScrollFrameScrollBar)
S:HandleScrollBar(_G.QuestRewardScrollFrameScrollBar)
S:HandleScrollBar(_G.QuestDetailScrollFrameScrollBar)
S:HandleScrollBar(_G.QuestGreetingScrollFrameScrollBar)
local QuestInfoSkillPointFrame = _G.QuestInfoSkillPointFrame
QuestInfoSkillPointFrame:StripTextures()
QuestInfoSkillPointFrame:StyleButton()
QuestInfoSkillPointFrame:Width(QuestInfoSkillPointFrame:GetWidth() - 4)
QuestInfoSkillPointFrame:SetFrameLevel(QuestInfoSkillPointFrame:GetFrameLevel() + 2)
local QuestInfoSkillPointFrameIconTexture = _G.QuestInfoSkillPointFrameIconTexture
QuestInfoSkillPointFrameIconTexture:SetTexCoord(unpack(E.TexCoords))
QuestInfoSkillPointFrameIconTexture:SetDrawLayer('OVERLAY')
QuestInfoSkillPointFrameIconTexture:Point('TOPLEFT', 2, -2)
QuestInfoSkillPointFrameIconTexture:Size(QuestInfoSkillPointFrameIconTexture:GetWidth() - 2, QuestInfoSkillPointFrameIconTexture:GetHeight() - 2)
QuestInfoSkillPointFrame:CreateBackdrop()
_G.QuestInfoSkillPointFrameCount:SetDrawLayer('OVERLAY')
local QuestInfoItemHighlight = _G.QuestInfoItemHighlight
QuestInfoItemHighlight:StripTextures()
QuestInfoItemHighlight:CreateBackdrop()
QuestInfoItemHighlight.backdrop:SetAllPoints()
QuestInfoItemHighlight.backdrop:SetBackdropBorderColor(1, 1, 0)
QuestInfoItemHighlight.backdrop:SetBackdropColor(0, 0, 0, 0)
QuestInfoItemHighlight:Size(142, 40)
_G.QuestRewardScrollFrame:CreateBackdrop()
_G.QuestRewardScrollFrame:Height(_G.QuestRewardScrollFrame:GetHeight() - 2)
hooksecurefunc('QuestInfo_Display', S.QuestInfo_Display)
hooksecurefunc('QuestInfoItem_OnClick', S.QuestInfoItem_OnClick)
hooksecurefunc('QuestLogQuests_Update', S.QuestLogQuests_Update) -- Skin the Plus Minus buttons in the QuestLog
hooksecurefunc(_G.CampaignCollapseButtonMixin, 'UpdateState', S.CampaignCollapseButton_UpdateState) -- Plus Minus buttons for the CampaignHeaders in the QuestLog
for _, frame in pairs({'HonorFrame', 'XPFrame', 'SpellFrame', 'SkillPointFrame', 'ArtifactXPFrame', 'TitleFrame', 'WarModeBonusFrame'}) do
HandleReward(_G.MapQuestInfoRewardsFrame[frame])
HandleReward(_G.QuestInfoRewardsFrame[frame])
end
HandleReward(_G.MapQuestInfoRewardsFrame.MoneyFrame)
--Reward: Title
local QuestInfoPlayerTitleFrame = _G.QuestInfoPlayerTitleFrame
QuestInfoPlayerTitleFrame.FrameLeft:SetTexture()
QuestInfoPlayerTitleFrame.FrameCenter:SetTexture()
QuestInfoPlayerTitleFrame.FrameRight:SetTexture()
QuestInfoPlayerTitleFrame.Icon:SetTexCoord(unpack(E.TexCoords))
QuestInfoPlayerTitleFrame:CreateBackdrop()
QuestInfoPlayerTitleFrame.backdrop:SetOutside(QuestInfoPlayerTitleFrame.Icon)
--Quest Frame
local QuestFrame = _G.QuestFrame
S:HandlePortraitFrame(QuestFrame)
_G.QuestFrameDetailPanel:StripTextures(nil, E.private.skins.parchmentRemoverEnable)
_G.QuestDetailScrollFrame:StripTextures(nil, E.private.skins.parchmentRemoverEnable)
_G.QuestProgressScrollFrame:StripTextures(nil, E.private.skins.parchmentRemoverEnable)
_G.QuestGreetingScrollFrame:StripTextures(nil, E.private.skins.parchmentRemoverEnable)
_G.QuestDetailScrollFrame:CreateBackdrop()
_G.QuestProgressScrollFrame:CreateBackdrop()
_G.QuestGreetingScrollFrame:CreateBackdrop()
_G.QuestFrameGreetingPanel:HookScript('OnShow', function(frame)
for button in frame.titleButtonPool:EnumerateActive() do
button.Icon:SetDrawLayer('ARTWORK')
if E.private.skins.parchmentRemoverEnable then
local text = button:GetFontString():GetText()
if text and strfind(text, '|cff000000') then
button:GetFontString():SetText(gsub(text, '|cff000000', '|cffffe519'))
end
end
end
end)
if E.private.skins.parchmentRemoverEnable then
hooksecurefunc('QuestFrameProgressItems_Update', S.QuestFrameProgressItems_Update)
hooksecurefunc('QuestFrame_SetTitleTextColor', S.QuestFrame_SetTitleTextColor)
hooksecurefunc('QuestFrame_SetTextColor', S.QuestFrame_SetTextColor)
hooksecurefunc('QuestInfo_ShowRequiredMoney', S.QuestInfo_ShowRequiredMoney)
hooksecurefunc(_G.QuestInfoSealFrame.Text, 'SetText', S.QuestInfoSealFrameText)
_G.QuestFrameDetailPanel.SealMaterialBG:SetAlpha(0)
_G.QuestFrameRewardPanel.SealMaterialBG:SetAlpha(0)
_G.QuestFrameProgressPanel.SealMaterialBG:SetAlpha(0)
_G.QuestFrameGreetingPanel.SealMaterialBG:SetAlpha(0)
else
S:QuestInfo_StyleScrollFrame(_G.QuestProgressScrollFrame, 506, 615, true)
S:QuestInfo_StyleScrollFrame(_G.QuestGreetingScrollFrame, 506, 615, true)
end
_G.QuestFrameGreetingPanel:StripTextures(true)
S:HandleButton(_G.QuestFrameGreetingGoodbyeButton)
_G.QuestGreetingFrameHorizontalBreak:Kill()
_G.QuestDetailScrollChildFrame:StripTextures(true)
_G.QuestRewardScrollFrame:StripTextures(true)
_G.QuestRewardScrollChildFrame:StripTextures(true)
_G.QuestFrameProgressPanel:StripTextures(true)
_G.QuestFrameRewardPanel:StripTextures(true)
S:HandleButton(_G.QuestFrameAcceptButton)
S:HandleButton(_G.QuestFrameDeclineButton)
S:HandleButton(_G.QuestFrameCompleteButton)
S:HandleButton(_G.QuestFrameGoodbyeButton)
S:HandleButton(_G.QuestFrameCompleteQuestButton)
for i = 1, 6 do
local button = _G['QuestProgressItem'..i]
local icon = _G['QuestProgressItem'..i..'IconTexture']
icon:SetTexCoord(unpack(E.TexCoords))
icon:Point('TOPLEFT', 2, -2)
icon:Size(icon:GetWidth() -3, icon:GetHeight() -3)
button:Width(button:GetWidth() -4)
button:StripTextures()
button:SetFrameLevel(button:GetFrameLevel() +1)
local frame = CreateFrame('Frame', nil, button, 'BackdropTemplate')
frame:SetFrameLevel(button:GetFrameLevel() -1)
frame:SetTemplate('Transparent', nil, true)
frame:SetBackdropBorderColor(unpack(E.media.bordercolor))
frame:SetBackdropColor(0, 0, 0, 0)
frame:SetOutside(icon)
button.backdrop = frame
local hover = button:CreateTexture()
hover:SetColorTexture(1, 1, 1, 0.3)
hover:SetAllPoints(icon)
button:SetHighlightTexture(hover)
button.hover = hover
end
_G.QuestModelScene:StripTextures()
_G.QuestModelScene:CreateBackdrop('Transparent')
_G.QuestModelScene:Point('TOPLEFT', _G.QuestLogDetailFrame, 'TOPRIGHT', 4, -34)
_G.QuestNPCModelTextFrame:StripTextures()
_G.QuestNPCModelTextFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.QuestNPCModelTextScrollFrame.ScrollBar)
local QuestLogPopupDetailFrame = _G.QuestLogPopupDetailFrame
S:HandlePortraitFrame(QuestLogPopupDetailFrame)
S:HandleButton(_G.QuestLogPopupDetailFrameAbandonButton)
S:HandleButton(_G.QuestLogPopupDetailFrameShareButton)
S:HandleButton(_G.QuestLogPopupDetailFrameTrackButton)
_G.QuestLogPopupDetailFrameScrollFrame:StripTextures()
S:HandleScrollBar(_G.QuestLogPopupDetailFrameScrollFrameScrollBar)
QuestLogPopupDetailFrame:CreateBackdrop('Transparent')
QuestLogPopupDetailFrame.ShowMapButton:StripTextures()
S:HandleButton(QuestLogPopupDetailFrame.ShowMapButton)
QuestLogPopupDetailFrame.ShowMapButton.Text:ClearAllPoints()
QuestLogPopupDetailFrame.ShowMapButton.Text:Point('CENTER')
QuestLogPopupDetailFrame.ShowMapButton:Size(QuestLogPopupDetailFrame.ShowMapButton:GetWidth() - 30, QuestLogPopupDetailFrame.ShowMapButton:GetHeight(), - 40)
end
S:AddCallback('BlizzardQuestFrames')

View File

@@ -0,0 +1,37 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_QuestChoice()
if E.private.skins.blizzard.questChoice ~= true then return end
local QuestChoiceFrame = _G.QuestChoiceFrame
for i = 1, 4 do
local option = QuestChoiceFrame['Option'..i]
local rewards = option.Rewards
local item = rewards.Item
local icon = item.Icon
local currencies = rewards.Currencies
item.IconBorder:Kill()
S:HandleIcon(icon)
icon:SetDrawLayer('ARTWORK')
for j = 1, 3 do
local cu = currencies['Currency'..j]
S:HandleIcon(cu.Icon)
end
end
QuestChoiceFrame:CreateBackdrop('Transparent')
S:HandleButton(_G.QuestChoiceFrameOption1.OptionButtonsContainer.OptionButton1)
S:HandleButton(_G.QuestChoiceFrameOption2.OptionButtonsContainer.OptionButton1)
S:HandleButton(_G.QuestChoiceFrameOption3.OptionButtonsContainer.OptionButton1)
S:HandleButton(_G.QuestChoiceFrameOption4.OptionButtonsContainer.OptionButton1)
S:HandleCloseButton(QuestChoiceFrame.CloseButton)
QuestChoiceFrame.CloseButton:SetFrameLevel(10)
end
S:AddCallbackForAddon('Blizzard_QuestChoice')

View File

@@ -0,0 +1,42 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local StripAllTextures = {
'RaidGroup1',
'RaidGroup2',
'RaidGroup3',
'RaidGroup4',
'RaidGroup5',
'RaidGroup6',
'RaidGroup7',
'RaidGroup8',
}
function S:Blizzard_RaidUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.raid) then return end
for _, object in pairs(StripAllTextures) do
local obj = _G[object]
if obj then
obj:StripTextures()
for j=1,5 do
local slot = _G[object..'Slot'..j]
if slot then
slot:StripTextures()
slot:CreateBackdrop('Transparent')
slot.backdrop:SetAllPoints()
end
end
end
end
for i=1, _G.MAX_RAID_GROUPS*5 do
S:HandleButton(_G['RaidGroupButton'..i], true)
end
end
S:AddCallbackForAddon('Blizzard_RaidUI')

View File

@@ -0,0 +1,38 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
function S:Blizzard_RuneforgeUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.runeforge) then return end
local frame = _G.RuneforgeFrame
frame.Title:FontTemplate(nil, 22)
S:HandleCloseButton(frame.CloseButton)
S:HandleButton(frame.CreateFrame.CraftItemButton)
local powerFrame = frame.CraftingFrame.PowerFrame
local pageControl = powerFrame.PageControl
S:HandleNextPrevButton(pageControl.BackwardButton)
S:HandleNextPrevButton(pageControl.ForwardButton)
hooksecurefunc(powerFrame.PowerList, 'RefreshListDisplay', function(list)
if not list.elements then return end
for i = 1, list:GetNumElementFrames() do
local button = list.elements[i]
if button and not button.IsSkinned then
button.Border:SetAlpha(0)
button.CircleMask:Hide()
S:HandleIcon(button.Icon, true)
button.IsSkinned = true
end
end
end)
end
S:AddCallbackForAddon('Blizzard_RuneforgeUI')

View File

@@ -0,0 +1,32 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local unpack = unpack
function S:Blizzard_ScrappingMachineUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.scrapping) then return end
local MachineFrame = _G.ScrappingMachineFrame
S:HandlePortraitFrame(MachineFrame)
S:HandleButton(MachineFrame.ScrapButton)
local ItemSlots = MachineFrame.ItemSlots
ItemSlots:StripTextures()
for button in pairs(ItemSlots.scrapButtons.activeObjects) do
button:StripTextures()
S:HandleIcon(button.Icon, true)
S:HandleIconBorder(button.IconBorder, button.Icon.backdrop)
button.Icon.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
-- Temp mover
MachineFrame:SetMovable(true)
MachineFrame:RegisterForDrag('LeftButton')
MachineFrame:SetScript('OnDragStart', function(s) s:StartMoving() end)
MachineFrame:SetScript('OnDragStop', function(s) s:StopMovingOrSizing() end)
end
S:AddCallbackForAddon('Blizzard_ScrappingMachineUI')

View File

@@ -0,0 +1,49 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, unpack = ipairs, unpack
local GetSocketTypes = GetSocketTypes
local hooksecurefunc = hooksecurefunc
function S:Blizzard_ItemSocketingUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.socket) then return end
local ItemSocketingFrame = _G.ItemSocketingFrame
S:HandlePortraitFrame(ItemSocketingFrame)
_G.ItemSocketingDescription:DisableDrawLayer('BORDER')
_G.ItemSocketingDescription:DisableDrawLayer('BACKGROUND')
_G.ItemSocketingScrollFrame:StripTextures()
_G.ItemSocketingScrollFrame:CreateBackdrop('Transparent')
S:HandleScrollBar(_G.ItemSocketingScrollFrameScrollBar, 2)
for i = 1, _G.MAX_NUM_SOCKETS do
local button = _G[('ItemSocketingSocket%d'):format(i)]
local button_bracket = _G[('ItemSocketingSocket%dBracketFrame'):format(i)]
local button_bg = _G[('ItemSocketingSocket%dBackground'):format(i)]
local button_icon = _G[('ItemSocketingSocket%dIconTexture'):format(i)]
button:StripTextures()
button:StyleButton(false)
button:CreateBackdrop(nil, true)
button_bracket:Kill()
button_bg:Kill()
button_icon:SetTexCoord(unpack(E.TexCoords))
button_icon:SetInside()
end
hooksecurefunc('ItemSocketingFrame_Update', function()
for i, socket in ipairs(_G.ItemSocketingFrame.Sockets) do
local gemColor = GetSocketTypes(i)
local color = E.GemTypeInfo[gemColor]
socket.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
end
end)
_G.ItemSocketingFramePortrait:Kill()
_G.ItemSocketingSocketButton:ClearAllPoints()
_G.ItemSocketingSocketButton:Point('BOTTOMRIGHT', ItemSocketingFrame, 'BOTTOMRIGHT', -5, 5)
S:HandleButton(_G.ItemSocketingSocketButton)
end
S:AddCallbackForAddon('Blizzard_ItemSocketingUI')

View File

@@ -0,0 +1,73 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, select = ipairs, select
local hooksecurefunc = hooksecurefunc
-- Credits: siweia - Aurora Classic
local function SkinConduitList(frame)
local header = frame.CategoryButton.Container
if not header.styled then
header:DisableDrawLayer('BACKGROUND')
header:CreateBackdrop('Transparent')
header.backdrop:Point('TOPLEFT', 2, 0)
header.backdrop:Point('BOTTOMRIGHT', 15, 0)
header.backdrop:SetBackdropColor(1, 0, 0, .35)
header.styled = true
end
for button in frame.pool:EnumerateActive() do
if not button.styled then
for _, element in ipairs(button.Hovers) do
element:SetColorTexture(1, 1, 1, .25)
end
button.PendingBackground:SetColorTexture(1, .8, 0, .25)
button.Spec.IconOverlay:Hide()
S:HandleIcon(button.Spec.Icon)
button.styled = true
end
end
end
-- SHADOWLANDS
function S:Blizzard_Soulbinds()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.soulbinds) then return end
local frame = _G.SoulbindViewer
frame:StripTextures()
frame:CreateBackdrop('Transparent')
S:HandleCloseButton(frame.CloseButton)
S:HandleButton(frame.CommitConduitsButton)
frame.CommitConduitsButton:SetFrameLevel(10)
S:HandleButton(frame.ActivateSoulbindButton)
frame.ActivateSoulbindButton:SetFrameLevel(10)
local scrollBox = frame.ConduitList.ScrollBox
select(2, scrollBox:GetChildren()):Hide() -- Weird shadow on the ScrollBox
for i = 1, 3 do
hooksecurefunc(scrollBox.ScrollTarget.Lists[i], 'UpdateLayout', SkinConduitList)
end
end
S:AddCallbackForAddon('Blizzard_Soulbinds')
-- ToDo: Find a way to skin me :thinking:
function S:Blizzard_LandingSoulbinds()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.soulbinds) then return end
hooksecurefunc(_G.LandingPageSoulbindButtonMixin, 'SetSoulbind', function(button, soulbindData)
if not button.IsSkinned then
button:StyleButton()
button.IsSkinned = true
end
end)
end
--S:AddCallbackForAddon('Blizzard_LandingSoulbinds')

View File

@@ -0,0 +1,188 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select = pairs, select
local CreateFrame = CreateFrame
local GetProfessionInfo = GetProfessionInfo
local hooksecurefunc = hooksecurefunc
function S:SpellBookFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.spellbook) then return end
local SpellBookFrame = _G.SpellBookFrame
S:HandlePortraitFrame(SpellBookFrame)
for _, object in pairs({ 'SpellBookSpellIconsFrame', 'SpellBookSideTabsFrame', 'SpellBookPageNavigationFrame' }) do
_G[object]:StripTextures()
end
if E.global.general.disableTutorialButtons then
_G.SpellBookFrameTutorialButton:Kill()
end
if E.private.skins.parchmentRemoverEnable then
_G.SpellBookPage1:SetAlpha(0)
_G.SpellBookPage2:SetAlpha(0)
_G.SpellBookPageText:SetTextColor(0.6, 0.6, 0.6)
else
local pagebackdrop = CreateFrame('Frame', nil, SpellBookFrame, 'BackdropTemplate')
pagebackdrop:SetTemplate()
pagebackdrop:Point('TOPLEFT', _G.SpellBookPage1, 'TOPLEFT', -2, 2)
pagebackdrop:Point('BOTTOMRIGHT', SpellBookFrame, 'BOTTOMRIGHT', -8, 4)
SpellBookFrame.pagebackdrop = pagebackdrop
for i = 1, 2 do
_G['SpellBookPage'..i]:SetParent(pagebackdrop)
_G['SpellBookPage'..i]:SetDrawLayer('BACKGROUND', 3)
end
end
S:HandleNextPrevButton(_G.SpellBookPrevPageButton, nil, nil, true)
S:HandleNextPrevButton(_G.SpellBookNextPageButton, nil, nil, true)
_G.SpellBookPageText:ClearAllPoints()
_G.SpellBookPageText:Point('RIGHT', _G.SpellBookPrevPageButton, 'LEFT', -5, 0)
for i = 1, _G.SPELLS_PER_PAGE do
local button = _G['SpellButton'..i]
local icon = _G['SpellButton'..i..'IconTexture']
local highlight =_G['SpellButton'..i..'Highlight']
for j = 1, button:GetNumRegions() do
local region = select(j, button:GetRegions())
if region:IsObjectType('Texture') then
if region ~= button.FlyoutArrow and region ~= button.GlyphIcon and region ~= button.GlyphActivate
and region ~= button.AbilityHighlight and region ~= button.SpellHighlightTexture then
region:SetTexture()
end
end
end
S:HandleIcon(icon)
E:RegisterCooldown(_G['SpellButton'..i..'Cooldown'])
button:CreateBackdrop(nil, true)
icon:SetInside(button.backdrop)
if button.shine then
button.shine:ClearAllPoints()
button.shine:Point('TOPLEFT', button, 'TOPLEFT', -3, 3)
button.shine:Point('BOTTOMRIGHT', button, 'BOTTOMRIGHT', 3, -3)
end
highlight:SetAllPoints(icon)
hooksecurefunc(highlight, 'SetTexture', function(s, texture)
if texture == [[Interface\Buttons\ButtonHilight-Square]] then
s:SetColorTexture(1, 1, 1, 0.3)
end
end)
end
hooksecurefunc('SpellButton_UpdateButton', function()
for i = 1, _G.SPELLS_PER_PAGE do
local button = _G['SpellButton'..i]
if button.SpellHighlightTexture then
button.SpellHighlightTexture:SetColorTexture(0.8, 0.8, 0, 0.6)
button.SpellHighlightTexture:SetInside(button.backdrop)
E:Flash(button.SpellHighlightTexture, 1, true)
end
button.backdrop:SetShown(button.SpellName:IsShown())
if E.private.skins.parchmentRemoverEnable then
button:SetHighlightTexture('')
local r = button.SpellName:GetTextColor()
if r < 0.8 then
button.SpellName:SetTextColor(0.6, 0.6, 0.6)
else
button.SpellName:SetTextColor(1, 1, 1)
end
button.SpellSubName:SetTextColor(0.6, 0.6, 0.6)
button.RequiredLevelString:SetTextColor(0.6, 0.6, 0.6)
end
end
end)
_G.SpellBookSkillLineTab1:Point('TOPLEFT', '$parent', 'TOPRIGHT', E.PixelMode and 0 or E.Border + E.Spacing, -36)
for i = 1, 8 do
local Tab = _G['SpellBookSkillLineTab'..i]
Tab:StripTextures()
Tab:CreateBackdrop()
Tab.backdrop:SetAllPoints()
Tab:StyleButton(nil, true)
end
hooksecurefunc('SpellBookFrame_UpdateSkillLineTabs', function()
for i = 1, 8 do
local Tab = _G['SpellBookSkillLineTab'..i]
if Tab:GetNormalTexture() then
S:HandleIcon(Tab:GetNormalTexture())
Tab:GetNormalTexture():SetInside()
end
end
end)
--Profession Tab
for _, Frame in pairs({ _G.SpellBookProfessionFrame:GetChildren() }) do
Frame.missingHeader:SetTextColor(1, 1, 0)
if E.private.skins.parchmentRemoverEnable then
Frame.missingText:SetTextColor(1, 1, 1)
else
Frame.missingText:SetTextColor(0, 0, 0)
end
S:HandleStatusBar(Frame.statusBar, {0, .86, 0})
Frame.statusBar.rankText:Point('CENTER')
local a, b, c, _, e = Frame.statusBar:GetPoint()
Frame.statusBar:Point(a, b, c, 0, e)
if a == 'BOTTOMLEFT' then
Frame.rank:Point('BOTTOMLEFT', Frame.statusBar, 'TOPLEFT', 0, 4)
end
if Frame.icon then
Frame.professionName:Point('TOPLEFT', 100, -4)
Frame:StripTextures()
S:HandleIcon(Frame.icon, true)
Frame.icon:SetAlpha(1)
Frame.icon:SetDesaturated(false)
end
for i = 1, 2 do
S:HandleButton(Frame['button'..i], true)
--Frame['button'..i]:StyleButton()
if Frame['button'..i].iconTexture then
S:HandleIcon(Frame['button'..i].iconTexture)
Frame['button'..i].iconTexture:SetInside()
end
Frame['button'..i].highlightTexture:SetInside()
hooksecurefunc(Frame['button'..i].highlightTexture, 'SetTexture', function(s, texture)
if texture == [[Interface\Buttons\ButtonHilight-Square]] then
s:SetColorTexture(1, 1, 1, 0.3)
end
end)
end
end
--Bottom Tabs
for i = 1, 5 do
S:HandleTab(_G['SpellBookFrameTabButton'..i])
end
_G.SpellBookFrameTabButton1:ClearAllPoints()
_G.SpellBookFrameTabButton1:Point('TOPLEFT', SpellBookFrame, 'BOTTOMLEFT', 0, 2)
-- Some Texture Magic
hooksecurefunc('FormatProfession', function(frame, id)
if not (id and frame and frame.icon) then return end
local texture = select(2, GetProfessionInfo(id))
if texture then frame.icon:SetTexture(texture) end
end)
end
S:AddCallback('SpellBookFrame')

View File

@@ -0,0 +1,74 @@
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local CreateFrame = CreateFrame
local function PetButtons(btn, p)
local button = _G[btn]
local icon = _G[btn..'IconTexture']
local highlight = button:GetHighlightTexture()
button:StripTextures()
if button.Checked then
button.Checked:SetColorTexture(unpack(E.media.rgbvaluecolor))
button.Checked:SetAllPoints(icon)
button.Checked:SetAlpha(0.3)
end
if highlight then
highlight:SetColorTexture(1, 1, 1, 0.3)
highlight:SetAllPoints(icon)
end
if icon then
icon:SetTexCoord(unpack(E.TexCoords))
icon:ClearAllPoints()
icon:Point('TOPLEFT', p, -p)
icon:Point('BOTTOMRIGHT', -p, p)
button:SetFrameLevel(button:GetFrameLevel() + 2)
if not button.backdrop then
button:CreateBackdrop(nil, true)
button.backdrop:SetAllPoints()
end
end
end
function S:PetStableFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.stable) then return end
local PetStableFrame = _G.PetStableFrame
S:HandlePortraitFrame(PetStableFrame)
_G.PetStableLeftInset:StripTextures()
_G.PetStableBottomInset:StripTextures()
_G.PetStableFrameInset:CreateBackdrop('Transparent')
S:HandleButton(_G.PetStablePrevPageButton) -- Required to remove graphical glitch from Prev page button
S:HandleButton(_G.PetStableNextPageButton) -- Required to remove graphical glitch from Next page button
S:HandleRotateButton(_G.PetStableModelRotateRightButton)
S:HandleRotateButton(_G.PetStableModelRotateLeftButton)
local p = E.PixelMode and 1 or 2
local PetStableSelectedPetIcon = _G.PetStableSelectedPetIcon
if PetStableSelectedPetIcon then
PetStableSelectedPetIcon:SetTexCoord(unpack(E.TexCoords))
local b = CreateFrame('Frame', nil, PetStableSelectedPetIcon:GetParent(), 'BackdropTemplate')
b:Point('TOPLEFT', PetStableSelectedPetIcon, -p, p)
b:Point('BOTTOMRIGHT', PetStableSelectedPetIcon, p, -p)
PetStableSelectedPetIcon:Size(37,37)
PetStableSelectedPetIcon:SetParent(b)
b:SetTemplate()
end
for i = 1, _G.NUM_PET_ACTIVE_SLOTS do
PetButtons('PetStableActivePet' .. i, p)
end
for i = 1, _G.NUM_PET_STABLE_SLOTS do
PetButtons('PetStableStabledPet' .. i, p)
end
end
S:AddCallback('PetStableFrame')

View File

@@ -0,0 +1,21 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
-- /run SubscriptionInterstitial_LoadUI(); _G.SubscriptionInterstitialFrame:Show()
function S:Blizzard_SubscriptionInterstitialUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.subscriptionInterstitial) then return end
local SubscriptionInterstitial = _G.SubscriptionInterstitialFrame
SubscriptionInterstitial:StripTextures()
SubscriptionInterstitial:CreateBackdrop('Transparent')
SubscriptionInterstitial.ShadowOverlay:Hide()
S:HandleCloseButton(SubscriptionInterstitial.CloseButton)
S:HandleButton(SubscriptionInterstitial.ClosePanelButton)
end
S:AddCallbackForAddon('Blizzard_SubscriptionInterstitialUI')

View File

@@ -0,0 +1,68 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
local hooksecurefunc = hooksecurefunc
function S:TabardFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tabard) then return end
local TabardFrame = _G.TabardFrame
S:HandlePortraitFrame(TabardFrame)
S:HandleButton(_G.TabardFrameCancelButton)
S:HandleButton(_G.TabardFrameAcceptButton)
S:HandleRotateButton(_G.TabardCharacterModelRotateLeftButton)
S:HandleRotateButton(_G.TabardCharacterModelRotateRightButton)
_G.TabardModel:CreateBackdrop()
_G.TabardFrameCostFrame:StripTextures()
_G.TabardFrameCustomizationFrame:StripTextures()
_G.TabardFrameMoneyInset:Kill()
_G.TabardFrameMoneyBg:StripTextures()
--Add Tabard Emblem back
local emblemFrames = {
_G.TabardFrameEmblemTopRight,
_G.TabardFrameEmblemBottomRight,
_G.TabardFrameEmblemTopLeft,
_G.TabardFrameEmblemBottomLeft,
}
for _, frame in pairs(emblemFrames) do
frame:SetParent(TabardFrame)
frame.Show = nil
frame:Show()
end
for i=1, 5 do
local custom = 'TabardFrameCustomization'..i
_G[custom]:StripTextures()
S:HandleNextPrevButton(_G[custom..'LeftButton'])
S:HandleNextPrevButton(_G[custom..'RightButton'])
if i > 1 then
_G[custom]:ClearAllPoints()
_G[custom]:Point('TOP', _G['TabardFrameCustomization'..i-1], 'BOTTOM', 0, -6)
else
local point, anchor, point2, x, y = _G[custom]:GetPoint()
_G[custom]:Point(point, anchor, point2, x, y+4)
end
end
_G.TabardCharacterModelRotateLeftButton:Point('BOTTOMLEFT', _G.TabardModel, 'BOTTOMLEFT', 4, 4)
_G.TabardCharacterModelRotateRightButton:Point('TOPLEFT', _G.TabardCharacterModelRotateLeftButton, 'TOPRIGHT', 4, 0)
hooksecurefunc(_G.TabardCharacterModelRotateLeftButton, 'SetPoint', function(s, _, _, _, _, _, forced)
if forced ~= true then
s:Point('BOTTOMLEFT', _G.TabardModel, 'BOTTOMLEFT', 4, 4, true)
end
end)
hooksecurefunc(_G.TabardCharacterModelRotateRightButton, 'SetPoint', function(s, _, _, _, _, _, forced)
if forced ~= true then
s:Point('TOPLEFT', _G.TabardCharacterModelRotateLeftButton, 'TOPRIGHT', 4, 0, true)
end
end)
end
S:AddCallback('TabardFrame')

View File

@@ -0,0 +1,355 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, select, unpack = pairs, select, unpack
local hooksecurefunc = hooksecurefunc
local CreateFrame = CreateFrame
local UnitSex = UnitSex
local GetNumSpecializations = GetNumSpecializations
local GetSpecialization = GetSpecialization
local GetSpecializationInfo = GetSpecializationInfo
local GetSpecializationSpells = GetSpecializationSpells
local GetSpellTexture = GetSpellTexture
local C_SpecializationInfo_GetPvpTalentSlotInfo = C_SpecializationInfo.GetPvpTalentSlotInfo
local C_SpecializationInfo_GetSpellsDisplay = C_SpecializationInfo.GetSpellsDisplay
local function clearBackdrop(self)
self:SetBackdropColor(0, 0, 0, 0)
end
function S:Blizzard_TalentUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.talent) then return end
local PlayerTalentFrame = _G.PlayerTalentFrame
S:HandlePortraitFrame(PlayerTalentFrame)
_G.PlayerTalentFrameTalents:StripTextures()
if E.global.general.disableTutorialButtons then
_G.PlayerTalentFrameTalentsTutorialButton:Kill()
_G.PlayerTalentFrameSpecializationTutorialButton:Kill()
end
local buttons = {
_G.PlayerTalentFrameSpecializationLearnButton,
_G.PlayerTalentFrameTalentsLearnButton,
_G.PlayerTalentFramePetSpecializationLearnButton
}
S:HandleButton(_G.PlayerTalentFrameActivateButton)
for _, button in pairs(buttons) do
S:HandleButton(button)
end
for i = 1, 3 do
S:HandleTab(_G['PlayerTalentFrameTab'..i])
end
for _, Frame in pairs({ _G.PlayerTalentFrameSpecialization, _G.PlayerTalentFramePetSpecialization }) do
Frame:StripTextures()
for _, Child in pairs({Frame:GetChildren()}) do
if Child:IsObjectType('Frame') and not Child:GetName() then
Child:StripTextures()
end
end
for i = 1, 4 do
local Button = Frame['specButton'..i]
local _, _, _, icon = GetSpecializationInfo(i, false, Frame.isPet)
_G['PlayerTalentFrameSpecializationSpecButton'..i..'Glow']:Kill()
Button:CreateBackdrop()
Button.backdrop:Point('TOPLEFT', 8, 2)
Button.backdrop:Point('BOTTOMRIGHT', 10, -2)
Button.specIcon:Size(50, 50)
Button.specIcon:Point('LEFT', Button, 'LEFT', 15, 0)
Button.specIcon:SetDrawLayer('ARTWORK', 2)
Button.roleIcon:SetDrawLayer('ARTWORK', 2)
Button.bg:SetAlpha(0)
Button.ring:SetAlpha(0)
Button.learnedTex:SetAlpha(0)
Button.selectedTex:SetAlpha(0)
Button.specIcon:SetTexture(icon)
S:HandleIcon(Button.specIcon, true)
Button.specIcon.backdrop:SetFrameLevel(Button:GetFrameLevel()+1)
Button.specIcon.backdrop:SetBackdropColor(0, 0, 0, 0)
Button.specIcon.backdrop.callbackBackdropColor = clearBackdrop
Button:SetHighlightTexture(nil)
Button.SelectedTexture = Button:CreateTexture(nil, 'ARTWORK')
Button.SelectedTexture:SetColorTexture(0, 1, 0, 0.2)
end
Frame.spellsScroll.child.gradient:Kill()
Frame.spellsScroll.child.scrollwork_topleft:SetAlpha(0)
Frame.spellsScroll.child.scrollwork_topright:SetAlpha(0)
Frame.spellsScroll.child.scrollwork_bottomleft:SetAlpha(0)
Frame.spellsScroll.child.scrollwork_bottomright:SetAlpha(0)
Frame.spellsScroll.child.ring:SetAlpha(0)
Frame.spellsScroll.child.Seperator:SetAlpha(0)
S:HandleIcon(Frame.spellsScroll.child.specIcon, true)
end
do
local onFinished = function(s)
local r, g, b = s:GetChange()
local defaultR, defaultG, defaultB = unpack(E.media.bordercolor)
defaultR = E:Round(defaultR, 2)
defaultG = E:Round(defaultG, 2)
defaultB = E:Round(defaultB, 2)
if r == defaultR and g == defaultG and b == defaultB then
s:SetChange(unpack(E.media.rgbvaluecolor))
else
s:SetChange(defaultR, defaultG, defaultB)
end
end
local onShow = function(s)
local parent = s:GetParent()
if not parent.transition:IsPlaying() then
for _, child in pairs(parent.transition.color.children) do
child:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
parent.transition:Play()
end
end
local onHide = function(s)
local parent = s:GetParent()
if parent.transition:IsPlaying() then
parent.transition:Stop()
for _, child in pairs(parent.transition.color.children) do
child:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
end
end
for i = 1, _G.MAX_TALENT_TIERS do
local row = _G.PlayerTalentFrameTalents['tier'..i]
row:StripTextures()
row.TopLine:Point('TOP', 0, 4)
row.BottomLine:Point('BOTTOM', 0, -4)
row.transition = _G.CreateAnimationGroup(row)
row.transition:SetLooping(true)
row.transition.color = row.transition:CreateAnimation('Color')
row.transition.color:SetDuration(0.7)
row.transition.color:SetColorType('border')
row.transition.color:SetChange(unpack(E.media.rgbvaluecolor))
row.transition.color:SetScript('OnFinished', onFinished)
row.GlowFrame:StripTextures()
row.GlowFrame:HookScript('OnShow', onShow)
row.GlowFrame:HookScript('OnHide', onHide)
for j = 1, _G.NUM_TALENT_COLUMNS do
local bu = row['talent'..j]
bu:StripTextures()
bu:SetFrameLevel(bu:GetFrameLevel() + 5)
bu.knownSelection:SetAlpha(0)
bu.icon:SetDrawLayer('OVERLAY', 1)
S:HandleIcon(bu.icon, true)
bu.bg = CreateFrame('Frame', nil, bu)
bu.bg:CreateBackdrop('Overlay')
bu.bg:SetFrameLevel(bu:GetFrameLevel() - 4)
bu.bg:Point('TOPLEFT', 15, -1)
bu.bg:Point('BOTTOMRIGHT', -10, 1)
row.transition.color:AddChild(bu.bg.backdrop)
bu.GlowFrame:Kill()
bu.bg.SelectedTexture = bu.bg:CreateTexture(nil, 'ARTWORK')
bu.bg.SelectedTexture:Point('TOPLEFT', bu, 'TOPLEFT', 15, -1)
bu.bg.SelectedTexture:Point('BOTTOMRIGHT', bu, 'BOTTOMRIGHT', -10, 1)
bu.bg.SelectedTexture:SetColorTexture(0, 1, 0, 0.2)
bu.ShadowedTexture = bu:CreateTexture(nil, 'OVERLAY', nil, 2)
bu.ShadowedTexture:SetColorTexture(0, 0, 0, 0.6)
end
end
end
hooksecurefunc('TalentFrame_Update', function(s)
for i = 1, _G.MAX_TALENT_TIERS do
for j = 1, _G.NUM_TALENT_COLUMNS do
local bu = s['tier'..i]['talent'..j]
if bu.bg and bu.knownSelection then
if bu.knownSelection:IsShown() then
bu.bg.SelectedTexture:Show()
bu.ShadowedTexture:Hide()
else
bu.ShadowedTexture:SetAllPoints(bu.bg.SelectedTexture)
bu.bg.SelectedTexture:Hide()
bu.ShadowedTexture:Show()
bu.icon:SetDesaturated(false)
end
end
end
end
end)
hooksecurefunc('PlayerTalentFrame_UpdateSpecFrame', function(s, spec)
local playerTalentSpec = GetSpecialization(nil, s.isPet, _G.PlayerSpecTab2:GetChecked() and 2 or 1)
local shownSpec = spec or playerTalentSpec or 1
local numSpecs = GetNumSpecializations(nil, s.isPet)
local sex = s.isPet and UnitSex('pet') or UnitSex('player')
local id, _, _, icon = GetSpecializationInfo(shownSpec, nil, s.isPet, nil, sex)
if not id then return end
local scrollBar = s.spellsScroll.ScrollBar
if scrollBar and not scrollBar.backdrop then
S:HandleScrollBar(scrollBar)
end
local scrollChild = s.spellsScroll.child
scrollChild.specIcon:SetTexture(icon)
scrollChild:SetScale(0.99) -- the scrollbar showed on simpy's when it shouldn't, this fixes it by reducing the scale by .01 lol
local index = 1
local bonuses
local bonusesIncrement = 1
if s.isPet then
bonuses = {GetSpecializationSpells(shownSpec, nil, s.isPet, true)}
bonusesIncrement = 2
else
bonuses = C_SpecializationInfo_GetSpellsDisplay(id)
end
for i = 1, numSpecs do
local bu = s['specButton'..i]
bu.SelectedTexture:SetInside(bu.backdrop)
if bu.selected then
bu.SelectedTexture:Show()
else
bu.SelectedTexture:Hide()
end
end
if bonuses then
for i = 1, #bonuses, bonusesIncrement do
local frame = scrollChild['abilityButton'..index]
if frame then
local _, spellTex = GetSpellTexture(bonuses[i])
if spellTex then
frame.icon:SetTexture(spellTex)
end
if not frame.reskinned then
frame.reskinned = true
frame.ring:Hide()
frame.icon:SetTexCoord(unpack(E.TexCoords))
frame.icon:Size(40, 40)
frame:CreateBackdrop()
frame.backdrop:SetOutside(frame.icon)
end
end
index = index + 1
end
end
-- Hide the default flash anim
s.learnButton.Flash:Hide()
s.learnButton.FlashAnim:Stop()
end)
local PvpTalentFrame = _G.PlayerTalentFrameTalents.PvpTalentFrame
PvpTalentFrame:StripTextures()
for _, button in pairs(PvpTalentFrame.Slots) do
button:CreateBackdrop()
button.backdrop:SetOutside(button.Texture)
button.Arrow:SetAlpha(0)
button.Border:Hide()
hooksecurefunc(button, 'Update', function(s)
local slotInfo = C_SpecializationInfo_GetPvpTalentSlotInfo(s.slotIndex);
if not slotInfo then return end
if slotInfo.enabled then
S:HandleIcon(s.Texture)
if not slotInfo.selectedTalentID then
s.Texture:SetTexture([[Interface\Icons\INV_Misc_QuestionMark]])
s.backdrop:SetBackdropBorderColor(0, 1, 0, 1)
else
s.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
else
s.Texture:SetTexture([[Interface\PetBattles\PetBattle-LockIcon]])
s.Texture:SetTexCoord(0, 1, 0, 1)
s.Texture:SetDesaturated(true)
s.Texture:Show()
s.backdrop:SetBackdropBorderColor(1, 0, 0, 1)
end
end)
end
PvpTalentFrame.TalentList:StripTextures()
PvpTalentFrame.TalentList:CreateBackdrop('Transparent')
PvpTalentFrame.TalentList:Point('BOTTOMLEFT', PlayerTalentFrame, 'BOTTOMRIGHT', 5, 26)
S:SkinTalentListButtons(PvpTalentFrame.TalentList)
local TalentList_CloseButton = select(4, _G.PlayerTalentFrameTalents.PvpTalentFrame.TalentList:GetChildren())
if TalentList_CloseButton and TalentList_CloseButton:HasScript('OnClick') then
S:HandleButton(TalentList_CloseButton, true)
end
PvpTalentFrame.TalentList.ScrollFrame:Point('TOPLEFT', 5, -5)
PvpTalentFrame.TalentList.ScrollFrame:Point('BOTTOMRIGHT', -21, 32)
PvpTalentFrame.OrbModelScene:SetAlpha(0)
PvpTalentFrame:Size(131, 379)
PvpTalentFrame:Point('LEFT', _G.PlayerTalentFrameTalents, 'RIGHT', -135, 0)
PvpTalentFrame.Swords:Point('BOTTOM', 0, 30)
PvpTalentFrame.Label:Point('BOTTOM', 0, 104)
PvpTalentFrame.InvisibleWarmodeButton:SetAllPoints(PvpTalentFrame.Swords)
PvpTalentFrame.Swords:Size(72, 67)
PvpTalentFrame.Orb:Hide()
PvpTalentFrame.Ring:Hide()
for _, Button in pairs(PvpTalentFrame.TalentList.ScrollFrame.buttons) do
Button:DisableDrawLayer('BACKGROUND')
S:HandleIcon(Button.Icon)
Button:StyleButton()
Button:CreateBackdrop()
Button.Selected:SetTexture()
Button.backdrop:SetAllPoints()
Button.selectedTexture = Button:CreateTexture(nil, 'ARTWORK')
Button.selectedTexture:SetInside(Button)
Button.selectedTexture:SetColorTexture(0, 1, 0, 0.2)
Button.selectedTexture:SetShown(Button.Selected:IsShown())
end
hooksecurefunc(PvpTalentFrame.TalentList, 'Update', function()
for _, Button in pairs(PvpTalentFrame.TalentList.ScrollFrame.buttons) do
if not Button.selectedTexture then return end
if Button.Selected:IsShown() then
Button.selectedTexture:SetShown(true)
else
Button.selectedTexture:Hide()
end
end
end)
S:HandleButton(_G.PlayerTalentFrameTalents.PvpTalentButton)
S:HandleScrollBar(_G.PlayerTalentFrameTalents.PvpTalentFrame.TalentList.ScrollFrame.ScrollBar)
end
S:AddCallbackForAddon('Blizzard_TalentUI')

View File

@@ -0,0 +1,153 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
--Just some test code
--[[
local talkingHeadTextureKitRegionFormatStrings = {
TextBackground = '%s-TextBackground',
Portrait = '%s-PortraitFrame',
}
local talkingHeadDefaultAtlases = {
TextBackground = 'TalkingHeads-TextBackground',
Portrait = 'TalkingHeads-Alliance-PortraitFrame',
}
local talkingHeadFontColor = {
['TalkingHeads-Horde'] = {Name = CreateColor(0.28, 0.02, 0.02), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
['TalkingHeads-Alliance'] = {Name = CreateColor(0.02, 0.17, 0.33), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
['TalkingHeads-Neutral'] = {Name = CreateColor(0.33, 0.16, 0.02), Text = CreateColor(0.0, 0.0, 0.0), Shadow = CreateColor(0.0, 0.0, 0.0, 0.0)},
['Normal'] = {Name = CreateColor(1, 0.82, 0.02), Text = CreateColor(1, 1, 1), Shadow = CreateColor(0.0, 0.0, 0.0, 1.0)},
}
--test
function TestTalkingHead()
local frame = TalkingHeadFrame;
local model = frame.MainFrame.Model;
if frame.finishTimer then
frame.finishTimer:Cancel();
frame.finishTimer = nil;
end
if frame.voHandle then
StopSound(frame.voHandle);
frame.voHandle = nil;
end
local currentDisplayInfo = model:GetDisplayInfo();
local displayInfo, cameraID, vo, duration, lineNumber, numLines, name, text, isNewTalkingHead, textureKitID
displayInfo = 76291
cameraID = 1240
vo = 103175
duration = 20.220001220703
lineNumber = 0
numLines = 4
name = 'Some Ugly Woman'
text = 'Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out Testing this sheet out '
isNewTalkingHead = true
textureKitID = 0
local textFormatted = format(text);
if displayInfo and displayInfo ~= 0 then
local textureKit;
if textureKitID ~= 0 then
SetupTextureKits(textureKitID, frame.BackgroundFrame, talkingHeadTextureKitRegionFormatStrings, false, true);
SetupTextureKits(textureKitID, frame.PortraitFrame, talkingHeadTextureKitRegionFormatStrings, false, true);
textureKit = GetUITextureKitInfo(textureKitID);
else
SetupAtlasesOnRegions(frame.BackgroundFrame, talkingHeadDefaultAtlases, true);
SetupAtlasesOnRegions(frame.PortraitFrame, talkingHeadDefaultAtlases, true);
textureKit = 'Normal';
end
local nameColor = talkingHeadFontColor[textureKit].Name;
local textColor = talkingHeadFontColor[textureKit].Text;
local shadowColor = talkingHeadFontColor[textureKit].Shadow;
frame.NameFrame.Name:SetTextColor(nameColor:GetRGB());
frame.NameFrame.Name:SetShadowColor(shadowColor:GetRGBA());
frame.TextFrame.Text:SetTextColor(textColor:GetRGB());
frame.TextFrame.Text:SetShadowColor(shadowColor:GetRGBA());
frame:Show();
if currentDisplayInfo ~= displayInfo then
model.uiCameraID = cameraID;
model:SetDisplayInfo(displayInfo);
else
if model.uiCameraID ~= cameraID then
model.uiCameraID = cameraID;
Model_ApplyUICamera(model, model.uiCameraID);
end
TalkingHeadFrame_SetupAnimations(model);
end
if isNewTalkingHead then
TalkingHeadFrame_Reset(frame, textFormatted, name);
TalkingHeadFrame_FadeinFrames();
else
if name ~= frame.NameFrame.Name:GetText() then
-- Fade out the old name and fade in the new name
frame.NameFrame.Fadeout:Play();
E:Delay(0.25, frame.NameFrame.Name.SetText, frame.NameFrame.Name, name);
E:Delay(0.5, frame.NameFrame.Fadein.Play, frame.NameFrame.Fadein);
frame.MainFrame.TalkingHeadsInAnim:Play();
end
if textFormatted ~= frame.TextFrame.Text:GetText() then
-- Fade out the old text and fade in the new text
frame.TextFrame.Fadeout:Play();
E:Delay(0.25, frame.TextFrame.Text.SetText, frame.TextFrame.Text, textFormatted);
E:Delay(0.5, frame.TextFrame.Fadein.Play, frame.TextFrame.Fadein);
end
end
local success, voHandle = PlaySound(vo, 'Talking Head', true, true);
if success then
frame.voHandle = voHandle;
end
end
end]]
function S:Blizzard_TalkingHeadUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.talkinghead) then return end
local TalkingHeadFrame = _G.TalkingHeadFrame
TalkingHeadFrame.BackgroundFrame.TextBackground:SetAtlas(nil)
TalkingHeadFrame.PortraitFrame.Portrait:SetAtlas(nil)
TalkingHeadFrame.MainFrame.Model.PortraitBg:SetAtlas(nil)
TalkingHeadFrame.PortraitFrame:StripTextures()
if E.db.general.talkingHeadFrameBackdrop then
TalkingHeadFrame:StripTextures()
TalkingHeadFrame.MainFrame:StripTextures()
TalkingHeadFrame:CreateBackdrop('Transparent')
local button = TalkingHeadFrame.MainFrame.CloseButton
S:HandleCloseButton(button)
button:ClearAllPoints()
button:Point('TOPRIGHT', TalkingHeadFrame.BackgroundFrame, 'TOPRIGHT', 0, -2)
else
TalkingHeadFrame.MainFrame.Model:CreateBackdrop('Transparent')
TalkingHeadFrame.MainFrame.Model.backdrop:ClearAllPoints()
TalkingHeadFrame.MainFrame.Model.backdrop:Point('CENTER')
TalkingHeadFrame.MainFrame.Model.backdrop:Size(120, 119)
TalkingHeadFrame.MainFrame.CloseButton:Kill()
end
TalkingHeadFrame.BackgroundFrame.TextBackground.SetAtlas = E.noop
TalkingHeadFrame.PortraitFrame.Portrait.SetAtlas = E.noop
TalkingHeadFrame.MainFrame.Model.PortraitBg.SetAtlas = E.noop
TalkingHeadFrame.NameFrame.Name:SetTextColor(1, 0.82, 0.02)
TalkingHeadFrame.NameFrame.Name.SetTextColor = E.noop
TalkingHeadFrame.NameFrame.Name:SetShadowColor(0, 0, 0, 1)
TalkingHeadFrame.NameFrame.Name:SetShadowOffset(2, -2)
TalkingHeadFrame.TextFrame.Text:SetTextColor(1, 1, 1)
TalkingHeadFrame.TextFrame.Text.SetTextColor = E.noop
TalkingHeadFrame.TextFrame.Text:SetShadowColor(0, 0, 0, 1)
TalkingHeadFrame.TextFrame.Text:SetShadowOffset(2, -2)
end
S:AddCallbackForAddon('Blizzard_TalkingHeadUI')

View File

@@ -0,0 +1,17 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:TaxiFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.taxi) then return end
local TaxiFrame = _G.TaxiFrame
TaxiFrame:StripTextures()
TaxiFrame:CreateBackdrop('Transparent')
_G.TaxiRouteMap:CreateBackdrop()
S:HandleCloseButton(TaxiFrame.CloseButton)
end
S:AddCallback('TaxiFrame')

View File

@@ -0,0 +1,72 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local hooksecurefunc = hooksecurefunc
local function SetPlayTexture()
_G.StopwatchPlayPauseButton:SetNormalTexture(E.Media.Textures.Play)
end
local function SetPauseTexture()
_G.StopwatchPlayPauseButton:SetNormalTexture(E.Media.Textures.Pause)
end
function S:Blizzard_TimeManager()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.timemanager) then return end
local TimeManagerFrame = _G.TimeManagerFrame
S:HandlePortraitFrame(TimeManagerFrame)
S:HandleDropDownBox(_G.TimeManagerAlarmHourDropDown, 80)
S:HandleDropDownBox(_G.TimeManagerAlarmMinuteDropDown, 80)
S:HandleDropDownBox(_G.TimeManagerAlarmAMPMDropDown, 80)
S:HandleEditBox(_G.TimeManagerAlarmMessageEditBox)
S:HandleCheckBox(_G.TimeManagerAlarmEnabledButton)
S:HandleCheckBox(_G.TimeManagerMilitaryTimeCheck)
S:HandleCheckBox(_G.TimeManagerLocalTimeCheck)
local TimeManagerStopwatchCheck = _G.TimeManagerStopwatchCheck
_G.TimeManagerStopwatchFrame:StripTextures()
TimeManagerStopwatchCheck:CreateBackdrop()
TimeManagerStopwatchCheck:GetNormalTexture():SetTexCoord(unpack(E.TexCoords))
TimeManagerStopwatchCheck:GetNormalTexture():SetInside()
local hover = TimeManagerStopwatchCheck:CreateTexture() -- hover
hover:SetColorTexture(1,1,1,0.3)
hover:Point('TOPLEFT',TimeManagerStopwatchCheck,2,-2)
hover:Point('BOTTOMRIGHT',TimeManagerStopwatchCheck,-2,2)
TimeManagerStopwatchCheck:SetHighlightTexture(hover)
local StopwatchFrame = _G.StopwatchFrame
StopwatchFrame:StripTextures()
StopwatchFrame:CreateBackdrop('Transparent')
StopwatchFrame.backdrop:Point('TOPLEFT', 0, -17)
StopwatchFrame.backdrop:Point('BOTTOMRIGHT', 0, 2)
_G.StopwatchTabFrame:StripTextures()
S:HandleCloseButton(_G.StopwatchCloseButton)
--Play/Pause and Reset buttons
local StopwatchPlayPauseButton = _G.StopwatchPlayPauseButton
local StopwatchResetButton = _G.StopwatchResetButton
StopwatchPlayPauseButton:CreateBackdrop(nil, true)
StopwatchPlayPauseButton:Size(12, 12)
StopwatchPlayPauseButton:SetNormalTexture(E.Media.Textures.Play)
StopwatchPlayPauseButton:SetHighlightTexture('')
StopwatchPlayPauseButton.backdrop:SetOutside(StopwatchPlayPauseButton, 2, 2)
StopwatchPlayPauseButton:HookScript('OnEnter', S.SetModifiedBackdrop)
StopwatchPlayPauseButton:HookScript('OnLeave', S.SetOriginalBackdrop)
StopwatchPlayPauseButton:Point('RIGHT', StopwatchResetButton, 'LEFT', -4, 0)
S:HandleButton(StopwatchResetButton)
StopwatchResetButton:Size(16,16)
StopwatchResetButton:SetNormalTexture(E.Media.Textures.Reset)
StopwatchResetButton:Point('BOTTOMRIGHT', StopwatchFrame, 'BOTTOMRIGHT', -4, 6)
hooksecurefunc('Stopwatch_Play', SetPauseTexture)
hooksecurefunc('Stopwatch_Pause', SetPlayTexture)
hooksecurefunc('Stopwatch_Clear', SetPlayTexture)
end
S:AddCallbackForAddon('Blizzard_TimeManager')

View File

@@ -0,0 +1,96 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local TT = E:GetModule('Tooltip')
local _G = _G
local pairs = pairs
local unpack = unpack
local function IslandTooltipStyle(self)
self:SetBackdrop()
self:SetTemplate('Transparent', nil, true)
end
function S:StyleTooltips()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tooltip) then return end
for _, tt in pairs({
_G.ItemRefTooltip,
_G.ItemRefShoppingTooltip1,
_G.ItemRefShoppingTooltip2,
_G.FriendsTooltip,
_G.WarCampaignTooltip,
_G.EmbeddedItemTooltip,
_G.ReputationParagonTooltip,
_G.GameTooltip,
_G.ShoppingTooltip1,
_G.ShoppingTooltip2,
_G.QuickKeybindTooltip,
_G.QuestScrollFrame.StoryTooltip,
_G.QuestScrollFrame.CampaignTooltip,
-- ours
_G.ElvUIConfigTooltip,
_G.ElvUISpellBookTooltip
}) do
TT:SetStyle(tt)
end
end
function S:TooltipFrames()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tooltip) then return end
S:StyleTooltips()
S:HandleCloseButton(_G.ItemRefTooltip.CloseButton)
-- Skin Blizzard Tooltips
local ItemTooltip = _G.GameTooltip.ItemTooltip
ItemTooltip:CreateBackdrop('Default')
ItemTooltip.backdrop:SetOutside(ItemTooltip.Icon)
ItemTooltip.Count:ClearAllPoints()
ItemTooltip.Count:Point('BOTTOMRIGHT', ItemTooltip.Icon, 'BOTTOMRIGHT', 1, 0)
ItemTooltip.Icon:SetTexCoord(unpack(E.TexCoords))
S:HandleIconBorder(ItemTooltip.IconBorder)
-- StoryTooltip
local StoryTooltip = _G.QuestScrollFrame.StoryTooltip
StoryTooltip:SetFrameLevel(4)
-- EmbeddedItemTooltip (also Paragon Reputation)
local embedded = _G.EmbeddedItemTooltip
embedded:SetTemplate('Transparent')
if embedded.ItemTooltip.Icon then
S:HandleIcon(embedded.ItemTooltip.Icon, true)
end
embedded:HookScript('OnShow', function(tt)
tt:SetTemplate('Transparent')
end)
-- Skin GameTooltip Status Bar
_G.GameTooltipStatusBar:SetStatusBarTexture(E.media.normTex)
_G.GameTooltipStatusBar:CreateBackdrop('Transparent')
_G.GameTooltipStatusBar:ClearAllPoints()
_G.GameTooltipStatusBar:Point('TOPLEFT', _G.GameTooltip, 'BOTTOMLEFT', E.Border, -(E.Spacing * 3))
_G.GameTooltipStatusBar:Point('TOPRIGHT', _G.GameTooltip, 'BOTTOMRIGHT', -E.Border, -(E.Spacing * 3))
E:RegisterStatusBar(_G.GameTooltipStatusBar)
-- Tooltip Styling
TT:SecureHook('GameTooltip_ShowStatusBar') -- Skin Status Bars
TT:SecureHook('GameTooltip_ShowProgressBar') -- Skin Progress Bars
TT:SecureHook('GameTooltip_AddQuestRewardsToTooltip') -- Color Progress Bars
TT:SecureHook('SharedTooltip_SetBackdropStyle', 'SetStyle') -- This also deals with other tooltip borders like AzeriteEssence Tooltip
-- Used for Island Skin
TT:RegisterEvent('ADDON_LOADED', function(event, addon)
if addon == 'Blizzard_IslandsQueueUI' then
local tt = _G.IslandsQueueFrameTooltip:GetParent()
tt:GetParent():HookScript('OnShow', IslandTooltipStyle)
tt.IconBorder:Kill()
tt.Icon:SetTexCoord(unpack(E.TexCoords))
TT:UnregisterEvent(event)
end
end)
end
S:AddCallback('TooltipFrames')

View File

@@ -0,0 +1,18 @@
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_TorghastLevelPicker()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.torghastLevelPicker) then return end
local frame = _G.TorghastLevelPickerFrame
frame.Title:FontTemplate(nil, 24)
S:HandleCloseButton(frame.CloseButton)
S:HandleNextPrevButton(frame.Pager.PreviousPage)
S:HandleNextPrevButton(frame.Pager.NextPage)
S:HandleButton(frame.OpenPortalButton)
end
S:AddCallbackForAddon('Blizzard_TorghastLevelPicker')

View File

@@ -0,0 +1,96 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
local CreateFrame = CreateFrame
function S:TradeFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.trade) then return end
local TradeFrame = _G.TradeFrame
S:HandlePortraitFrame(TradeFrame)
TradeFrame.RecipientOverlay.portrait:SetAlpha(0)
TradeFrame.RecipientOverlay.portraitFrame:SetAlpha(0)
S:HandleButton(_G.TradeFrameTradeButton, true)
S:HandleButton(_G.TradeFrameCancelButton, true)
S:HandleEditBox(_G.TradePlayerInputMoneyFrameGold)
S:HandleEditBox(_G.TradePlayerInputMoneyFrameSilver)
S:HandleEditBox(_G.TradePlayerInputMoneyFrameCopper)
_G.TradeRecipientItemsInset:Kill()
_G.TradePlayerItemsInset:Kill()
_G.TradePlayerInputMoneyInset:Kill()
_G.TradePlayerEnchantInset:Kill()
_G.TradeRecipientEnchantInset:Kill()
_G.TradeRecipientMoneyInset:Kill()
_G.TradeRecipientMoneyBg:Kill()
for i = 1, _G.MAX_TRADE_ITEMS do
local player = _G['TradePlayerItem'..i]
local recipient = _G['TradeRecipientItem'..i]
local player_button = _G['TradePlayerItem'..i..'ItemButton']
local recipient_button = _G['TradeRecipientItem'..i..'ItemButton']
local player_button_icon = _G['TradePlayerItem'..i..'ItemButtonIconTexture']
local recipient_button_icon = _G['TradeRecipientItem'..i..'ItemButtonIconTexture']
if player_button and recipient_button then
player:StripTextures()
recipient:StripTextures()
player_button:StripTextures()
recipient_button:StripTextures()
player_button_icon:SetInside(player_button)
player_button_icon:SetTexCoord(unpack(E.TexCoords))
player_button:CreateBackdrop(nil, true)
player_button:StyleButton()
player_button.IconBorder:Kill()
player_button.bg = CreateFrame('Frame', nil, player_button, 'BackdropTemplate')
player_button.bg:SetTemplate()
player_button.bg:Point('TOPLEFT', player_button, 'TOPRIGHT', 4, 0)
player_button.bg:Point('BOTTOMRIGHT', _G['TradePlayerItem'..i..'NameFrame'], 'BOTTOMRIGHT', 0, 14)
player_button.bg:SetFrameLevel(player_button:GetFrameLevel() - 3)
player_button.backdrop:SetFrameLevel(player_button:GetFrameLevel() - 1)
player_button:SetFrameLevel(player_button:GetFrameLevel() - 1)
recipient_button_icon:SetInside(recipient_button)
recipient_button_icon:SetTexCoord(unpack(E.TexCoords))
recipient_button:CreateBackdrop(nil, true)
recipient_button:StyleButton()
recipient_button.IconBorder:Kill()
recipient_button.bg = CreateFrame('Frame', nil, recipient_button, 'BackdropTemplate')
recipient_button.bg:SetTemplate()
recipient_button.bg:Point('TOPLEFT', recipient_button, 'TOPRIGHT', 4, 0)
recipient_button.bg:Point('BOTTOMRIGHT', _G['TradeRecipientItem'..i..'NameFrame'], 'BOTTOMRIGHT', 0, 14)
recipient_button.bg:SetFrameLevel(recipient_button:GetFrameLevel() - 3)
recipient_button:SetFrameLevel(recipient_button:GetFrameLevel() - 1)
S:HandleIconBorder(player_button.IconBorder)
S:HandleIconBorder(recipient_button.IconBorder)
end
end
_G.TradeHighlightPlayerTop:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayerBottom:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayerMiddle:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayer:SetFrameStrata('HIGH')
_G.TradeHighlightPlayerEnchantTop:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayerEnchantBottom:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayerEnchantMiddle:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightPlayerEnchant:SetFrameStrata('HIGH')
_G.TradeHighlightRecipientTop:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipientBottom:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipientMiddle:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipient:SetFrameStrata('HIGH')
_G.TradeHighlightRecipientEnchantTop:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipientEnchantBottom:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipientEnchantMiddle:SetColorTexture(0, 1, 0, 0.2)
_G.TradeHighlightRecipientEnchant:SetFrameStrata('HIGH')
end
S:AddCallback('TradeFrame')

View File

@@ -0,0 +1,199 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local ipairs, unpack = ipairs, unpack
local CreateFrame = CreateFrame
local hooksecurefunc = hooksecurefunc
local function SkinRecipeList(self, _, tradeSkillInfo)
-- +/- Buttons
if tradeSkillInfo.collapsed then
self:SetNormalTexture(E.Media.Textures.PlusButton)
else
self:SetNormalTexture(E.Media.Textures.MinusButton)
end
-- Skillbar
if tradeSkillInfo.hasProgressBar then
self.SubSkillRankBar.BorderMid:Hide()
self.SubSkillRankBar.BorderLeft:Hide()
self.SubSkillRankBar.BorderRight:Hide()
if not self.SubSkillRankBar.backdrop then
self.SubSkillRankBar:CreateBackdrop()
self.SubSkillRankBar.backdrop:SetAllPoints()
self.SubSkillRankBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(self.SubSkillRankBar)
end
end
end
function S:Blizzard_TradeSkillUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tradeskill) then return end
-- MainFrame
local TradeSkillFrame = _G.TradeSkillFrame
S:HandlePortraitFrame(TradeSkillFrame)
TradeSkillFrame:Height(TradeSkillFrame:GetHeight() + 12)
TradeSkillFrame.RankFrame:StripTextures()
TradeSkillFrame.RankFrame:CreateBackdrop()
TradeSkillFrame.RankFrame:SetStatusBarTexture(E.media.normTex)
TradeSkillFrame.RankFrame.RankText:FontTemplate()
E:RegisterStatusBar(TradeSkillFrame.RankFrame)
S:HandleButton(TradeSkillFrame.FilterButton)
TradeSkillFrame.LinkToButton:GetNormalTexture():SetTexCoord(0.25, 0.7, 0.37, 0.75)
TradeSkillFrame.LinkToButton:GetPushedTexture():SetTexCoord(0.25, 0.7, 0.45, 0.8)
TradeSkillFrame.LinkToButton:GetHighlightTexture():Kill()
TradeSkillFrame.LinkToButton:CreateBackdrop()
TradeSkillFrame.LinkToButton:Size(17, 14)
TradeSkillFrame.LinkToButton:Point('BOTTOMRIGHT', TradeSkillFrame.FilterButton, 'TOPRIGHT', -2, 4)
TradeSkillFrame.bg1 = CreateFrame('Frame', nil, TradeSkillFrame, 'BackdropTemplate')
TradeSkillFrame.bg1:SetTemplate('Transparent')
TradeSkillFrame.bg1:Point('TOPLEFT', 4, -81)
TradeSkillFrame.bg1:Point('BOTTOMRIGHT', -340, 4)
TradeSkillFrame.bg1:SetFrameLevel(TradeSkillFrame.bg1:GetFrameLevel() - 1)
TradeSkillFrame.bg2 = CreateFrame('Frame', nil, TradeSkillFrame, 'BackdropTemplate')
TradeSkillFrame.bg2:SetTemplate('Transparent')
TradeSkillFrame.bg2:Point('TOPLEFT', TradeSkillFrame.bg1, 'TOPRIGHT', 1, 0)
TradeSkillFrame.bg2:Point('BOTTOMRIGHT', TradeSkillFrame, 'BOTTOMRIGHT', -4, 4)
TradeSkillFrame.bg2:SetFrameLevel(TradeSkillFrame.bg2:GetFrameLevel() - 1)
S:HandleEditBox(TradeSkillFrame.SearchBox)
-- RecipeList
TradeSkillFrame.RecipeInset:StripTextures()
TradeSkillFrame.RecipeList.LearnedTab:StripTextures()
TradeSkillFrame.RecipeList.UnlearnedTab:StripTextures()
S:HandleScrollBar(TradeSkillFrame.RecipeList.scrollBar)
-- DetailsFrame
TradeSkillFrame.DetailsFrame:StripTextures()
TradeSkillFrame.DetailsInset:StripTextures()
TradeSkillFrame.DetailsFrame.Background:Hide()
S:HandleEditBox(TradeSkillFrame.DetailsFrame.CreateMultipleInputBox)
TradeSkillFrame.DetailsFrame.CreateMultipleInputBox:DisableDrawLayer('BACKGROUND')
S:HandleButton(TradeSkillFrame.DetailsFrame.CreateAllButton)
S:HandleButton(TradeSkillFrame.DetailsFrame.CreateButton)
S:HandleButton(TradeSkillFrame.DetailsFrame.ExitButton)
S:HandleScrollBar(TradeSkillFrame.DetailsFrame.ScrollBar)
S:HandleNextPrevButton(TradeSkillFrame.DetailsFrame.CreateMultipleInputBox.DecrementButton)
S:HandleNextPrevButton(TradeSkillFrame.DetailsFrame.CreateMultipleInputBox.IncrementButton)
TradeSkillFrame.DetailsFrame.CreateMultipleInputBox.IncrementButton:Point('LEFT', TradeSkillFrame.DetailsFrame.CreateMultipleInputBox, 'RIGHT', 4, 0)
hooksecurefunc(TradeSkillFrame.DetailsFrame, 'RefreshDisplay', function()
local ResultIcon = TradeSkillFrame.DetailsFrame.Contents.ResultIcon
ResultIcon:StyleButton()
if ResultIcon:GetNormalTexture() then
ResultIcon:GetNormalTexture():SetTexCoord(unpack(E.TexCoords))
ResultIcon:GetNormalTexture():SetInside()
end
ResultIcon:CreateBackdrop()
ResultIcon.IconBorder:SetTexture()
ResultIcon.ResultBorder:SetTexture()
for i = 1, #TradeSkillFrame.DetailsFrame.Contents.Reagents do
local Button = TradeSkillFrame.DetailsFrame.Contents.Reagents[i]
local Icon = Button.Icon
local Count = Button.Count
Icon:SetTexCoord(unpack(E.TexCoords))
Icon:SetDrawLayer('OVERLAY')
if not Icon.backdrop then
Icon.backdrop = CreateFrame('Frame', nil, Button, 'BackdropTemplate')
Icon.backdrop:SetFrameLevel(Button:GetFrameLevel() - 1)
Icon.backdrop:SetTemplate()
Icon.backdrop:SetOutside(Icon)
end
Icon:SetParent(Icon.backdrop)
Count:SetParent(Icon.backdrop)
Count:SetDrawLayer('OVERLAY')
Button.NameFrame:Kill()
end
-- 9.0 Shadowlands
for i = 1, #TradeSkillFrame.DetailsFrame.Contents.OptionalReagents do
local Button = TradeSkillFrame.DetailsFrame.Contents.OptionalReagents[i]
local Icon = Button.Icon
Icon:SetTexCoord(unpack(E.TexCoords))
Icon:SetDrawLayer('OVERLAY')
if not Icon.backdrop then
Icon.backdrop = CreateFrame('Frame', nil, Button, 'BackdropTemplate')
Icon.backdrop:SetFrameLevel(Button:GetFrameLevel() - 1)
Icon.backdrop:SetTemplate()
Icon.backdrop:SetOutside(Icon)
end
Button.SocketGlow:SetAtlas(nil)
Button.SocketGlow:SetColorTexture(0, 1, 0)
Button.SocketGlow:SetInside(Icon.backdrop)
Button.SelectedTexture:SetAtlas(nil)
Button.SelectedTexture:SetColorTexture(0.9, 0.8, 0.1)
Button.SelectedTexture:SetOutside(Icon.backdrop)
Button.NameFrame:Kill()
end
end)
hooksecurefunc(TradeSkillFrame.RecipeList, 'Refresh', function()
for _, tradeSkillButton in ipairs(TradeSkillFrame.RecipeList.buttons) do
if not tradeSkillButton.headerIsHooked then
hooksecurefunc(tradeSkillButton, 'SetUpHeader', SkinRecipeList)
tradeSkillButton.headerIsHooked = true
end
end
end)
--Guild Crafters
S:HandleCloseButton(TradeSkillFrame.DetailsFrame.GuildFrame.CloseButton)
S:HandleButton(TradeSkillFrame.DetailsFrame.ViewGuildCraftersButton)
TradeSkillFrame.DetailsFrame.GuildFrame:StripTextures()
TradeSkillFrame.DetailsFrame.GuildFrame:CreateBackdrop('Transparent')
TradeSkillFrame.DetailsFrame.GuildFrame.Container:StripTextures()
TradeSkillFrame.DetailsFrame.GuildFrame.Container:CreateBackdrop('Transparent')
--S:HandleScrollBar(TradeSkillFrame.DetailsFrame.GuildFrame.Container.ScrollFrame.scrollBar) --This cannot be skinned due to issues on Blizzards end.
S:HandleScrollBar(TradeSkillFrame.RecipeList.scrollBar)
-- 9.0 Shadowlands
local OptionalReagents = TradeSkillFrame.OptionalReagentList
OptionalReagents:StripTextures()
OptionalReagents:CreateBackdrop('Transparent')
OptionalReagents.ScrollList:StripTextures()
OptionalReagents.ScrollList:CreateBackdrop('Transparent')
S:HandleCheckBox(OptionalReagents.HideUnownedButton)
S:HandleScrollBar(OptionalReagents.ScrollList.ScrollFrame.scrollBar)
S:HandleButton(OptionalReagents.CloseButton)
-- Needs probably updates - or/also a different way
hooksecurefunc(_G.OptionalReagentListLineMixin, 'UpdateDisplay', function(frame)
frame.NameFrame:Kill()
frame:DisableDrawLayer('ARTWORK')
S:HandleIcon(frame.Icon, true)
frame.Icon:Size(32, 32)
frame.Icon:ClearAllPoints()
frame.Icon:Point('TOPLEFT', frame, 'TOPLEFT', 3, -3)
if frame.Icon.backdrop then
frame.Icon.backdrop:SetAllPoints(frame.Icon)
S:HandleIconBorder(frame.IconBorder, frame.Icon.backdrop)
end
if not frame.backdrop then
frame:CreateBackdrop()
frame.backdrop:SetAllPoints()
end
end)
end
S:AddCallbackForAddon('Blizzard_TradeSkillUI')

View File

@@ -0,0 +1,82 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, unpack = pairs, unpack
function S:Blizzard_TrainerUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.trainer) then return end
--Class Trainer Frame
local StripAllTextures = {
_G.ClassTrainerScrollFrameScrollChild,
_G.ClassTrainerFrameSkillStepButton,
_G.ClassTrainerFrameBottomInset,
}
local buttons = {
_G.ClassTrainerTrainButton,
}
local KillTextures = {
_G.ClassTrainerFramePortrait,
_G.ClassTrainerScrollFrameScrollBarBG,
_G.ClassTrainerScrollFrameScrollBarTop,
_G.ClassTrainerScrollFrameScrollBarBottom,
_G.ClassTrainerScrollFrameScrollBarMiddle,
}
for _, object in pairs(StripAllTextures) do
object:StripTextures()
end
for _, texture in pairs(KillTextures) do
texture:Kill()
end
for i = 1, #buttons do
buttons[i]:StripTextures()
S:HandleButton(buttons[i])
end
local ClassTrainerFrame = _G.ClassTrainerFrame
S:HandlePortraitFrame(ClassTrainerFrame)
for i= 1, #ClassTrainerFrame.scrollFrame.buttons do
local button = _G['ClassTrainerScrollFrameButton'..i]
button:StripTextures()
button:StyleButton()
button.icon:SetTexCoord(unpack(E.TexCoords))
button:CreateBackdrop()
button.backdrop:SetOutside(button.icon)
button.icon:SetParent(button.backdrop)
button.selectedTex:SetColorTexture(1, 1, 1, 0.3)
button.selectedTex:SetInside()
end
S:HandleScrollBar(_G.ClassTrainerScrollFrameScrollBar, 5)
S:HandleDropDownBox(_G.ClassTrainerFrameFilterDropDown, 155)
ClassTrainerFrame:Height(ClassTrainerFrame:GetHeight() + 5)
ClassTrainerFrame:CreateBackdrop('Transparent')
ClassTrainerFrame.backdrop:Point('TOPLEFT', ClassTrainerFrame, 'TOPLEFT')
ClassTrainerFrame.backdrop:Point('BOTTOMRIGHT', ClassTrainerFrame, 'BOTTOMRIGHT')
local ClassTrainerFrameSkillStepButton = _G.ClassTrainerFrameSkillStepButton
ClassTrainerFrameSkillStepButton.icon:SetTexCoord(unpack(E.TexCoords))
ClassTrainerFrameSkillStepButton:CreateBackdrop()
ClassTrainerFrameSkillStepButton.backdrop:SetOutside(ClassTrainerFrameSkillStepButton.icon)
ClassTrainerFrameSkillStepButton.icon:SetParent(ClassTrainerFrameSkillStepButton.backdrop)
_G.ClassTrainerFrameSkillStepButtonHighlight:SetColorTexture(1,1,1,0.3)
ClassTrainerFrameSkillStepButton.selectedTex:SetColorTexture(1,1,1,0.3)
local ClassTrainerStatusBar = _G.ClassTrainerStatusBar
ClassTrainerStatusBar:StripTextures()
ClassTrainerStatusBar:SetStatusBarTexture(E.media.normTex)
ClassTrainerStatusBar:CreateBackdrop()
ClassTrainerStatusBar.rankText:ClearAllPoints()
ClassTrainerStatusBar.rankText:Point('CENTER', ClassTrainerStatusBar, 'CENTER')
E:RegisterStatusBar(ClassTrainerStatusBar)
end
S:AddCallbackForAddon('Blizzard_TrainerUI')

View File

@@ -0,0 +1,21 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:TutorialFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.tutorials) then return end
-- Dont use :StripTextures() here
_G.TutorialFrame:CreateBackdrop('Transparent')
_G.TutorialFrameBackground:Hide()
_G.TutorialFrameBackground.Show = E.noop
_G.TutorialFrame:DisableDrawLayer('BORDER')
S:HandleCloseButton(_G.TutorialFrameCloseButton)
S:HandleButton(_G.TutorialFrameOkayButton)
S:HandleNextPrevButton(_G.TutorialFramePrevButton, 'left')
S:HandleNextPrevButton(_G.TutorialFrameNextButton, 'right')
end
S:AddCallback('TutorialFrame')

View File

@@ -0,0 +1,62 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs = pairs
function S:Blizzard_VoidStorageUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.voidstorage) then return end
local StripAllTextures = {
'VoidStorageBorderFrame',
'VoidStorageDepositFrame',
'VoidStorageWithdrawFrame',
'VoidStorageCostFrame',
'VoidStorageStorageFrame',
'VoidStoragePurchaseFrame',
'VoidItemSearchBox',
}
for _, object in pairs(StripAllTextures) do
_G[object]:StripTextures()
end
local VoidStorageFrame = _G.VoidStorageFrame
for i = 1, 2 do
local tab = VoidStorageFrame['Page'..i]
S:HandleButton(tab)
tab:StripTextures()
tab:StyleButton(nil, true)
S:HandleIcon(tab:GetNormalTexture())
tab:GetNormalTexture():SetInside()
end
VoidStorageFrame:StripTextures()
VoidStorageFrame:CreateBackdrop('Transparent')
VoidStorageFrame.Page1:SetNormalTexture([[Interface\Icons\INV_Enchant_EssenceCosmicGreater]])
VoidStorageFrame.Page1:Point('LEFT', '$parent', 'TOPRIGHT', 1, -60)
VoidStorageFrame.Page2:SetNormalTexture([[Interface\Icons\INV_Enchant_EssenceArcaneLarge]])
_G.VoidStoragePurchaseFrame:SetFrameStrata('DIALOG')
_G.VoidStoragePurchaseFrame:CreateBackdrop()
S:HandleCloseButton(_G.VoidStorageBorderFrame.CloseButton)
S:HandleButton(_G.VoidStoragePurchaseButton)
S:HandleButton(_G.VoidStorageTransferButton)
S:HandleEditBox(_G.VoidItemSearchBox)
for StorageType, NumSlots in pairs({ Deposit = 9, Withdraw = 9, Storage = 80 }) do
for i = 1, NumSlots do
local Button = _G['VoidStorage'..StorageType..'Button'..i]
Button:StripTextures()
Button:CreateBackdrop()
Button.backdrop:SetAllPoints()
Button:StyleButton()
S:HandleIcon(Button.icon)
Button.icon:SetInside()
S:HandleIconBorder(Button.IconBorder)
end
end
end
S:AddCallbackForAddon('Blizzard_VoidStorageUI')

View File

@@ -0,0 +1,45 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
function S:Blizzard_WarboardUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.warboard) then return end
local WarboardQuestChoiceFrame = _G.WarboardQuestChoiceFrame
WarboardQuestChoiceFrame:StripTextures()
WarboardQuestChoiceFrame.NineSlice:Hide()
WarboardQuestChoiceFrame:CreateBackdrop('Transparent')
WarboardQuestChoiceFrame.Background:Hide()
WarboardQuestChoiceFrame.Title:DisableDrawLayer('BACKGROUND')
for i = 1, 4 do
local option = WarboardQuestChoiceFrame['Option'..i]
for x = 1, #option.OptionButtonsContainer.Buttons do
S:HandleButton(option.OptionButtonsContainer.Buttons[x])
end
option.ArtworkBorder:SetAlpha(0)
end
local WarboardQuestChoiceDelayed = function(s)
if not s then return end
local frame
for i = 1, 4 do
frame = s['Option'..i]
if frame and frame.WidgetContainer then
S:SkinWidgetContainer(frame.WidgetContainer)
end
end
end
WarboardQuestChoiceFrame:HookScript('OnShow', function(s)
if s.CloseButton.Border then s.CloseButton.Border:SetAlpha(0) end
E:Delay(0.5, WarboardQuestChoiceDelayed, s)
end)
S:HandleCloseButton(WarboardQuestChoiceFrame.CloseButton)
end
S:AddCallbackForAddon('Blizzard_WarboardUI')

View File

@@ -0,0 +1,30 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local unpack = unpack
function S:Blizzard_WarfrontsPartyPoseUI()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.IslandsPartyPose) then return end
local WarfrontsPartyPoseFrame = _G.WarfrontsPartyPoseFrame
WarfrontsPartyPoseFrame:StripTextures()
WarfrontsPartyPoseFrame:CreateBackdrop('Transparent')
local modelScene = WarfrontsPartyPoseFrame.ModelScene
modelScene:StripTextures()
modelScene:CreateBackdrop('Transparent')
S:HandleButton(WarfrontsPartyPoseFrame.LeaveButton)
local rewardFrame = WarfrontsPartyPoseFrame.RewardAnimations.RewardFrame
rewardFrame:CreateBackdrop('Transparent')
rewardFrame.backdrop:Point('TOPLEFT', -5, 5)
rewardFrame.backdrop:Point('BOTTOMRIGHT', rewardFrame.NameFrame, 0, -5)
rewardFrame.NameFrame:SetAlpha(0)
rewardFrame.IconBorder:Kill()
rewardFrame.Icon:SetTexCoord(unpack(E.TexCoords))
end
S:AddCallbackForAddon('Blizzard_WarfrontsPartyPoseUI')

View File

@@ -0,0 +1,96 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local pairs, unpack = pairs, unpack
local hooksecurefunc = hooksecurefunc
-- Credits Siweia | AuroraClassic
local function UpdateSelection(frame)
if not frame.backdrop then return end
if frame.SelectedTexture:IsShown() then
frame.backdrop:SetBackdropBorderColor(1, .8, 0)
else
frame.backdrop:SetBackdropBorderColor(0, 0, 0)
end
end
local IconColor = E.QualityColors[Enum.ItemQuality.Epic or 4] -- epic color only
local function SkinRewardIcon(itemFrame)
if not itemFrame.IsSkinned then
itemFrame:CreateBackdrop('Transparent')
itemFrame:DisableDrawLayer('BORDER')
itemFrame.Icon:SetPoint('LEFT', 6, 0)
S:HandleIcon(itemFrame.Icon, true)
itemFrame.backdrop:SetBackdropBorderColor(IconColor.r, IconColor.g, IconColor.b)
itemFrame.IsSkinned = true
end
end
local function SkinActivityFrame(frame, isObject)
if frame.Border then
if isObject then
frame.Border:SetAlpha(0)
frame.SelectedTexture:SetAlpha(0)
frame.LockIcon:SetVertexColor(unpack(E.media.rgbvaluecolor))
hooksecurefunc(frame, "SetSelectionState", UpdateSelection)
hooksecurefunc(frame.ItemFrame, 'SetDisplayedItem', SkinRewardIcon)
else
frame.Border:SetTexCoord(.926, 1, 0, 1)
frame.Border:Size(25, 137)
frame.Border:Point('LEFT', frame, 'RIGHT', 3, 0)
end
end
if frame.Background then
frame.Background:CreateBackdrop()
end
end
function S:Blizzard_WeeklyRewards()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.weeklyRewards) then return end
-- /run UIParent_OnEvent({}, 'WEEKLY_REWARDS_SHOW')
local frame = _G.WeeklyRewardsFrame
local header = frame.HeaderFrame
if E.private.skins.parchmentRemoverEnable then
frame:StripTextures()
header:StripTextures()
end
frame:CreateBackdrop('Transparent')
header:CreateBackdrop('Transparent')
header:Point('TOP', 1, -42)
S:HandleCloseButton(frame.CloseButton)
S:HandleButton(frame.SelectRewardButton)
SkinActivityFrame(frame.RaidFrame)
SkinActivityFrame(frame.MythicFrame)
SkinActivityFrame(frame.PVPFrame)
for _, activity in pairs(frame.Activities) do
SkinActivityFrame(activity, true)
end
hooksecurefunc(frame, 'SelectReward', function(self)
local confirmSelectionFrame = self.confirmSelectionFrame
if confirmSelectionFrame and not confirmSelectionFrame.IsSkinned then
local itemFrame = confirmSelectionFrame.ItemFrame
S:HandleIcon(itemFrame.Icon, true)
S:HandleIconBorder(itemFrame.IconBorder, itemFrame.IconBorder.backdrop) --Monitor this
local nameframe = _G[confirmSelectionFrame:GetName()..'NameFrame']
if nameframe then
nameframe:Hide()
end
confirmSelectionFrame.IsSkinned = true
end
end)
end
S:AddCallbackForAddon('Blizzard_WeeklyRewards')

View File

@@ -0,0 +1,183 @@
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local hooksecurefunc = hooksecurefunc
local function SkinHeaders(header)
if not header.IsSkinned then
if header.TopFiligree then header.TopFiligree:Hide() end
header:SetAlpha(.8)
header.HighlightTexture:SetAllPoints(header.Background)
header.HighlightTexture:SetAlpha(0)
header.IsSkinned = true
end
end
function S:WorldMapFrame()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.worldmap) then return end
local WorldMapFrame = _G.WorldMapFrame
WorldMapFrame:StripTextures()
WorldMapFrame.BorderFrame:StripTextures()
WorldMapFrame.BorderFrame:SetFrameStrata(WorldMapFrame:GetFrameStrata())
WorldMapFrame.BorderFrame.NineSlice:Hide()
WorldMapFrame.NavBar:StripTextures()
WorldMapFrame.NavBar.overlay:StripTextures()
WorldMapFrame.NavBar:Point('TOPLEFT', 1, -40)
WorldMapFrame.ScrollContainer:CreateBackdrop()
WorldMapFrame:CreateBackdrop('Transparent')
WorldMapFrame.backdrop:Point('TOPLEFT', WorldMapFrame, 'TOPLEFT', -8, 0)
WorldMapFrame.backdrop:Point('BOTTOMRIGHT', WorldMapFrame, 'BOTTOMRIGHT', 0, -9)
S:HandleButton(WorldMapFrame.NavBar.homeButton)
WorldMapFrame.NavBar.homeButton.xoffset = 1
WorldMapFrame.NavBar.homeButton.text:FontTemplate()
-- Quest Frames
local QuestMapFrame = _G.QuestMapFrame
QuestMapFrame.VerticalSeparator:Hide()
QuestMapFrame:SetScript('OnHide', nil) -- This script would taint the Quest Objective Tracker Button, so unsetting it ~Simpy
if E.private.skins.parchmentRemoverEnable then
QuestMapFrame.DetailsFrame:StripTextures(true)
QuestMapFrame.DetailsFrame:CreateBackdrop()
QuestMapFrame.DetailsFrame.backdrop:Point('TOPLEFT', 0, 0)
QuestMapFrame.DetailsFrame.backdrop:Point('BOTTOMRIGHT', QuestMapFrame.DetailsFrame.RewardsFrame, 'TOPRIGHT', 0, 1)
QuestMapFrame.DetailsFrame.RewardsFrame:StripTextures()
QuestMapFrame.DetailsFrame.RewardsFrame:CreateBackdrop()
if QuestMapFrame.Background then
QuestMapFrame.Background:SetAlpha(0)
end
if QuestMapFrame.DetailsFrame.SealMaterialBG then
QuestMapFrame.DetailsFrame.SealMaterialBG:SetAlpha(0)
end
end
local QuestScrollFrame = _G.QuestScrollFrame
QuestScrollFrame.DetailFrame:StripTextures()
QuestScrollFrame.DetailFrame.BottomDetail:Hide()
QuestScrollFrame.Contents.Separator.Divider:Hide()
local QuestScrollFrameScrollBar = _G.QuestScrollFrame.ScrollBar
QuestScrollFrame.DetailFrame:CreateBackdrop()
QuestScrollFrame.DetailFrame.backdrop:SetFrameLevel(1)
QuestScrollFrame.DetailFrame.backdrop:Point('TOPLEFT', QuestScrollFrame.DetailFrame, 'TOPLEFT', 3, 1)
QuestScrollFrame.DetailFrame.backdrop:Point('BOTTOMRIGHT', QuestScrollFrame.DetailFrame, 'BOTTOMRIGHT', -2, -7)
SkinHeaders(QuestScrollFrame.Contents.StoryHeader)
S:HandleScrollBar(QuestScrollFrameScrollBar, 3, 3)
QuestScrollFrameScrollBar:Point('TOPLEFT', QuestScrollFrame.DetailFrame, 'TOPRIGHT', 1, -15)
QuestScrollFrameScrollBar:Point('BOTTOMLEFT', QuestScrollFrame.DetailFrame, 'BOTTOMRIGHT', 6, 10)
S:HandleButton(QuestMapFrame.DetailsFrame.BackButton, true)
QuestMapFrame.DetailsFrame.BackButton:SetFrameLevel(5)
S:HandleButton(QuestMapFrame.DetailsFrame.AbandonButton, true)
QuestMapFrame.DetailsFrame.AbandonButton:SetFrameLevel(5)
S:HandleButton(QuestMapFrame.DetailsFrame.ShareButton, true)
QuestMapFrame.DetailsFrame.ShareButton:SetFrameLevel(5)
S:HandleButton(QuestMapFrame.DetailsFrame.TrackButton, true)
QuestMapFrame.DetailsFrame.TrackButton:SetFrameLevel(5)
QuestMapFrame.DetailsFrame.TrackButton:Width(95)
S:HandleButton(QuestMapFrame.DetailsFrame.CompleteQuestFrame.CompleteButton, true)
local CampaignOverview = QuestMapFrame.CampaignOverview
SkinHeaders(CampaignOverview.Header)
CampaignOverview.ScrollFrame:StripTextures()
S:HandleScrollBar(_G.QuestMapFrameScrollBar)
if E.private.skins.blizzard.tooltip then
QuestMapFrame.QuestsFrame.StoryTooltip:SetTemplate('Transparent')
--QuestScrollFrame.WarCampaignTooltip:SetTemplate('Transparent')
end
S:HandleScrollBar(_G.QuestMapDetailsScrollFrame.ScrollBar)
QuestMapFrame.DetailsFrame.CompleteQuestFrame:StripTextures()
S:HandleNextPrevButton(WorldMapFrame.SidePanelToggle.CloseButton, 'left')
S:HandleNextPrevButton(WorldMapFrame.SidePanelToggle.OpenButton, 'right')
WorldMapFrame.SidePanelToggle.CloseButton.backdrop:SetFrameLevel(WorldMapFrame.SidePanelToggle.CloseButton:GetFrameLevel())
WorldMapFrame.SidePanelToggle.OpenButton.backdrop:SetFrameLevel(WorldMapFrame.SidePanelToggle.OpenButton:GetFrameLevel())
S:HandleCloseButton(WorldMapFrame.BorderFrame.CloseButton)
S:HandleMaxMinFrame(WorldMapFrame.BorderFrame.MaximizeMinimizeFrame)
WorldMapFrame.BorderFrame.MaximizeMinimizeFrame:ClearAllPoints()
WorldMapFrame.BorderFrame.MaximizeMinimizeFrame:Point('RIGHT', WorldMapFrame.BorderFrame.CloseButton, 'LEFT', 12, 0)
if E.global.general.disableTutorialButtons then
WorldMapFrame.BorderFrame.Tutorial:Kill()
end
-- Add a hook to adjust the OverlayFrames
hooksecurefunc(WorldMapFrame, 'AddOverlayFrame', S.WorldMapMixin_AddOverlayFrame)
-- Elements
S:HandleDropDownBox(WorldMapFrame.overlayFrames[1]) -- NavBar handled in ElvUI/modules/skins/misc
WorldMapFrame.overlayFrames[2]:StripTextures()
WorldMapFrame.overlayFrames[2].Icon:SetTexture([[Interface\Minimap\Tracking\None]])
WorldMapFrame.overlayFrames[2]:SetHighlightTexture([[Interface\Minimap\Tracking\None]], 'ADD')
WorldMapFrame.overlayFrames[2]:GetHighlightTexture():SetAllPoints(WorldMapFrame.overlayFrames[2].Icon)
-- 8.2.5 Party Sync | Credits Aurora/Shestak
QuestMapFrame.QuestSessionManagement:StripTextures()
local ExecuteSessionCommand = QuestMapFrame.QuestSessionManagement.ExecuteSessionCommand
ExecuteSessionCommand:CreateBackdrop()
ExecuteSessionCommand:StyleButton()
local icon = ExecuteSessionCommand:CreateTexture(nil, 'ARTWORK')
icon:Point('TOPLEFT', 0, 0)
icon:Point('BOTTOMRIGHT', 0, 0)
ExecuteSessionCommand.normalIcon = icon
local sessionCommandToButtonAtlas = {
[_G.Enum.QuestSessionCommand.Start] = 'QuestSharing-DialogIcon',
[_G.Enum.QuestSessionCommand.Stop] = 'QuestSharing-Stop-DialogIcon'
}
hooksecurefunc(QuestMapFrame.QuestSessionManagement, 'UpdateExecuteCommandAtlases', function(s, command)
s.ExecuteSessionCommand:SetNormalTexture('')
s.ExecuteSessionCommand:SetPushedTexture('')
s.ExecuteSessionCommand:SetDisabledTexture('')
local atlas = sessionCommandToButtonAtlas[command]
if atlas then
s.ExecuteSessionCommand.normalIcon:SetAtlas(atlas)
end
end)
hooksecurefunc(_G.QuestSessionManager, 'NotifyDialogShow', function(_, dialog)
if not dialog.isSkinned then
dialog:StripTextures()
dialog:CreateBackdrop('Transparent')
S:HandleButton(dialog.ButtonContainer.Confirm)
S:HandleButton(dialog.ButtonContainer.Decline)
if dialog.MinimizeButton then
dialog.MinimizeButton:StripTextures()
dialog.MinimizeButton:Size(16, 16)
dialog.MinimizeButton.tex = dialog.MinimizeButton:CreateTexture(nil, 'OVERLAY')
dialog.MinimizeButton.tex:SetTexture(E.Media.Textures.MinusButton)
dialog.MinimizeButton.tex:SetInside()
dialog.MinimizeButton:SetHighlightTexture([[Interface\Buttons\UI-PlusButton-Hilight]], 'ADD')
end
dialog.isSkinned = true
end
end)
hooksecurefunc('QuestLogQuests_Update', function()
for header in QuestScrollFrame.campaignHeaderFramePool:EnumerateActive() do
SkinHeaders(header)
end
end)
end
S:AddCallback('WorldMapFrame')