You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
18 KiB

local AS = unpack(AddOnSkins)
-- Cache global variables
--Lua functions
local _G = _G
local ipairs, pairs, select, type, unpack = ipairs, pairs, select, type, unpack
--WoW API / Variables
local GEM_TYPE_INFO = {
Yellow = {textureKit="yellow", r=0.97, g=0.82, b=0.29},
Red = {textureKit="red", r=1, g=0.47, b=0.47},
Blue = {textureKit="blue", r=0.47, g=0.67, b=1},
Hydraulic = {textureKit="hydraulic", r=1, g=1, b=1},
Cogwheel = {textureKit="cogwheel", r=1, g=1, b=1},
Meta = {textureKit="meta", r=1, g=1, b=1},
Prismatic = {textureKit="prismatic", r=1, g=1, b=1},
PunchcardRed = {textureKit="punchcard-red", r=1, g=0.47, b=0.47},
PunchcardYellow = {textureKit="punchcard-yellow", r=0.97, g=0.82, b=0.29},
PunchcardBlue = {textureKit="punchcard-blue", r=0.47, g=0.67, b=1},
}
local hooksecurefunc = hooksecurefunc
local PaperDollBgDesaturate = PaperDollBgDesaturate
local PAPERDOLL_SIDEBARS = PAPERDOLL_SIDEBARS
local UnitSex = UnitSex
-- GLOBALS:
function AS:Blizzard_Character()
_G.CHARACTERFRAME_EXPANDED_WIDTH = 580
AS:SkinFrame(_G.CharacterFrame)
AS:SkinCloseButton(_G.CharacterFrame.CloseButton)
_G.CharacterFrame:HookScript('OnShow', function() PaperDollBgDesaturate(false) end)
AS:SkinBackdropFrame(_G.CharacterModelFrame)
_G.CharacterModelFrame.Backdrop:SetPoint('BOTTOMRIGHT', 2, -2)
AS:CreateShadow(_G.CharacterModelFrame.Backdrop, true)
AS:Kill(_G.CharacterFramePortrait)
_G.PaperDollSidebarTabs:SetPoint('BOTTOMRIGHT', _G.CharacterFrameInsetRight, 'TOPRIGHT', -29, -1)
local function UpdateAzerite(self)
self.AzeriteTexture:SetAtlas("AzeriteIconFrame")
AS:SetOutside(self.AzeriteTexture)
self.AzeriteTexture:SetDrawLayer("ARTWORK", 1)
end
for _, Slot in pairs({_G.PaperDollItemsFrame:GetChildren()}) do
if Slot:IsObjectType("Button") then
AS:SkinTexture(Slot.icon)
AS:SkinFrame(Slot)
AS:StyleButton(Slot)
AS:CreateShadow(Slot, true)
AS:SetInside(Slot.icon)
hooksecurefunc(Slot, "DisplayAsAzeriteItem", UpdateAzerite)
hooksecurefunc(Slot, "DisplayAsAzeriteEmpoweredItem", UpdateAzerite)
if Slot.popoutButton:GetPoint() == 'TOP' then
Slot.popoutButton:SetPoint("TOP", Slot, "BOTTOM", 0, 2)
else
Slot.popoutButton:SetPoint("LEFT", Slot, "RIGHT", -2, 0)
end
Slot.ignoreTexture:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-LeaveItem-Transparent]])
Slot.IconBorder:SetAlpha(0)
hooksecurefunc(Slot.IconBorder, 'SetVertexColor', function(self, r, g, b) Slot:SetBackdropBorderColor(r, g, b) end)
hooksecurefunc(Slot.IconBorder, 'Hide', function(self) Slot:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
end
end
AS:StripTextures(_G.CharacterFrameInsetRight)
AS:StripTextures(_G.CharacterStatsPane)
_G.CharacterStatsPane.ClassBackground:ClearAllPoints()
_G.CharacterStatsPane.ClassBackground:SetTexture([[Interface\AddOns\AddOnSkins\Media\ClassIcons\]]..AS.MyClass)
_G.CharacterStatsPane.ClassBackground:SetPoint('BOTTOM')
_G.CharacterStatsPane.ClassBackground:SetSize(128, 128)
_G.CharacterStatsPane.ClassBackground:SetAlpha(.5)
local function CharacterStatFrameCategoryTemplate(Button)
local bg = Button.Background
bg:SetTexture([[Interface\LFGFrame\UI-LFG-SEPARATOR]])
bg:SetTexCoord(0, 0.6640625, 0, 0.3125)
bg:ClearAllPoints()
bg:SetPoint("CENTER", 0, -5)
bg:SetSize(210, 30)
local r, g, b = unpack(AS.Color)
bg:SetVertexColor(r * .7, g * .7, b * .7)
end
CharacterStatFrameCategoryTemplate(_G.CharacterStatsPane.EnhancementsCategory)
CharacterStatFrameCategoryTemplate(_G.CharacterStatsPane.ItemLevelCategory)
CharacterStatFrameCategoryTemplate(_G.CharacterStatsPane.AttributesCategory)
_G.CharacterStatsPane.ItemLevelFrame.Background:SetTexture([[Interface\AddOns\AddOnSkins\Media\Textures\Highlight]])
_G.CharacterStatsPane.ItemLevelFrame.Background:SetVertexColor(unpack(AS.Color))
for i = 1, _G.CharacterFrame.numTabs do
AS:SkinTab(_G["CharacterFrameTab"..i])
end
for i = 1, #PAPERDOLL_SIDEBARS do
local tab = _G["PaperDollSidebarTab"..i]
tab.Highlight:SetColorTexture(1, 1, 1, 0.3)
tab.Highlight:SetPoint("TOPLEFT", 3, -4)
tab.Highlight:SetPoint("BOTTOMRIGHT", -1, 0)
tab.Hider:SetColorTexture(0, 0, 0, .8)
tab.Hider:SetPoint("TOPLEFT", 3, -4)
tab.Hider:SetPoint("BOTTOMRIGHT", -1, 0)
AS:Kill(tab.TabBg)
AS:CreateBackdrop(tab)
tab.Backdrop:SetPoint("TOPLEFT", 2, -3)
tab.Backdrop:SetPoint("BOTTOMRIGHT", 0, -1)
AS:CreateShadow(tab.Backdrop, true)
end
hooksecurefunc("PaperDollFrame_UpdateStats", function()
for _, Table in ipairs({_G.CharacterStatsPane.statsFramePool:EnumerateActive()}) do
if type(Table) == 'table' then
for statFrame in pairs(Table) do
statFrame.Background:SetTexture([[Interface\AddOns\AddOnSkins\Media\Textures\Highlight]])
statFrame.Background:SetVertexColor(unpack(AS.Color))
AS:SetInside(statFrame.Background)
end
end
end
end)
hooksecurefunc("EquipmentFlyout_CreateButton", function()
for _, Button in pairs(_G.EquipmentFlyoutFrame.buttons) do
if not Button.isStyled then
AS:SkinTexture(Button.icon)
AS:SkinFrame(Button)
AS:StyleButton(Button)
AS:SetInside(Button.icon)
Button.IconBorder:SetAlpha(0)
hooksecurefunc(Button.IconBorder, 'SetVertexColor', function(self, r, g, b) Button:SetBackdropBorderColor(r, g, b) end)
hooksecurefunc(Button.IconBorder, 'Hide', function(self) Button:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
Button.isStyled = true
end
end
end)
hooksecurefunc("EquipmentFlyout_Show", function()
AS:SkinBackdropFrame(_G.EquipmentFlyoutFrame.buttonFrame)
_G.EquipmentFlyoutFrame.buttonFrame.Backdrop:SetPoint('BOTTOMRIGHT', 5, -2)
end)
_G.PaperDollTitlesPane:SetWidth(_G.PaperDollTitlesPane:GetWidth() + 45)
AS:SkinScrollBar(_G.PaperDollTitlesPane.scrollBar)
--Titles
hooksecurefunc('PaperDollTitlesPane_Update', function()
for _, Title in pairs(_G.PaperDollTitlesPane.buttons) do
if not Title.isStyled then
AS:StripTextures(Title)
Title:SetWidth(Title:GetWidth() + 30)
Title.Stripe:SetTexture([[Interface\AddOns\AddOnSkins\Media\Textures\Highlight]])
Title.Stripe.SetColorTexture = AS.Noop
Title.Check:SetTexture([[Interface\Buttons\UI-CheckBox-Check]])
Title.text:SetTextColor(1, 1, 1)
Title:HookScript('OnEnter', function(self) self.text:SetTextColor(unpack(AS.Color)) end)
Title:HookScript('OnLeave', function(self) self.text:SetTextColor(1, 1, 1) end)
Title.isStyled = true
end
--Title.text:SetFont(AS.Font, 12)
end
end)
--Equipement Manager
_G.PaperDollEquipmentManagerPane:SetPoint('TOPLEFT', _G.CharacterFrameInsetRight, 'TOPLEFT', 40, -4)
_G.PaperDollEquipmentManagerPane:SetWidth(_G.PaperDollEquipmentManagerPane:GetWidth() + 9)
AS:SkinButton(_G.PaperDollEquipmentManagerPane.EquipSet, true)
AS:SkinButton(_G.PaperDollEquipmentManagerPane.SaveSet)
AS:SkinScrollBar(_G.PaperDollEquipmentManagerPane.scrollBar)
_G.PaperDollEquipmentManagerPane.EquipSet:SetPoint("TOPLEFT", _G.PaperDollEquipmentManagerPane, "TOPLEFT", 0, -2)
_G.PaperDollEquipmentManagerPane.SaveSet:SetPoint("LEFT", _G.PaperDollEquipmentManagerPane.EquipSet, "RIGHT", 4, 0)
for _, Button in pairs(_G.PaperDollEquipmentManagerPane.buttons) do
AS:SkinBackdropFrame(Button)
Button.Check:SetTexture([[Interface\Buttons\UI-CheckBox-Check]])
AS:SkinTexture(Button.icon, true)
AS:SkinTexture(Button.SpecIcon)
Button:HookScript('OnEnter', function(self) self.Backdrop:SetBackdropBorderColor(unpack(AS.Color)) self.icon.Backdrop:SetBackdropBorderColor(unpack(AS.Color)) end)
Button:HookScript('OnLeave', function(self)
if self.SelectedBar:IsShown() then
self.Backdrop:SetBackdropBorderColor(1, .8, .1)
self.icon.Backdrop:SetBackdropBorderColor(1, .8, .1)
else
self.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor))
self.icon.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor))
end
end)
hooksecurefunc(Button.SelectedBar, "Show", function() Button.Backdrop:SetBackdropBorderColor(1, .8, .1) Button.icon.Backdrop:SetBackdropBorderColor(1, .8, .1) end)
hooksecurefunc(Button.SelectedBar, "Hide", function() Button.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor)) Button.icon.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
end
hooksecurefunc("GearSetButton_SetSpecInfo", function(self, specID)
if ( specID and specID > 0 ) then
self.SpecIcon:SetTexture(select(4, GetSpecializationInfoByID(specID)))
end
end)
-- Reputation
AS:StripTextures(_G.ReputationListScrollFrame)
AS:SkinScrollBar(_G.ReputationListScrollFrame.ScrollBar)
AS:SkinFrame(_G.ReputationDetailFrame)
_G.ReputationDetailFrame:SetPoint("TOPLEFT", _G.ReputationFrame, "TOPRIGHT", 4, -28)
hooksecurefunc("ReputationFrame_Update", function()
local factionOffset = FauxScrollFrame_GetOffset(_G.ReputationListScrollFrame)
local numFactions = GetNumFactions()
for i = 1, _G.NUM_FACTIONS_DISPLAYED do
local FactionName = _G["ReputationBar"..i.."FactionName"]
local Button = _G["ReputationBar"..i.."ExpandOrCollapseButton"]
local factionIndex = factionOffset + i
if ( factionIndex <= numFactions ) then
local name, _, _, _, _, _, atWarWith, canToggleAtWar, isHeader, isCollapsed = GetFactionInfo(factionIndex)
if isHeader then
FactionName:SetTextColor(.9, .8, 0)
else
if atWarWith and canToggleAtWar then
FactionName:SetTextColor(1, .1, .1)
else
FactionName:SetTextColor(1, 1, 1)
end
end
end
end
end)
AS:SkinCloseButton(_G.ReputationDetailCloseButton)
AS:SkinCheckBox(_G.ReputationDetailAtWarCheckBox)
_G.ReputationDetailAtWarCheckBox:SetCheckedTexture("Interface\\Buttons\\UI-CheckBox-SwordCheck")
AS:SkinCheckBox(_G.ReputationDetailInactiveCheckBox)
AS:SkinCheckBox(_G.ReputationDetailMainScreenCheckBox)
for i = 1, 15 do
AS:StripTextures(_G["ReputationBar"..i])
AS:SkinStatusBar(_G["ReputationBar"..i.."ReputationBar"])
end
-- Gear Manager
AS:SkinFrame(_G.GearManagerDialogPopup)
AS:StripTextures(_G.GearManagerDialogPopup.BorderBox)
AS:SkinEditBox(_G.GearManagerDialogPopupEditBox)
AS:SkinButton(_G.GearManagerDialogPopupOkay)
AS:SkinButton(_G.GearManagerDialogPopupCancel)
AS:StripTextures(_G.GearManagerDialogPopupScrollFrame)
AS:SkinScrollBar(_G.GearManagerDialogPopupScrollFrame.ScrollBar)
_G.GearManagerDialogPopup:SetPoint("LEFT", _G.PaperDollFrame, "RIGHT", 4, 0)
_G.GearManagerDialogPopup:SetHeight(_G.GearManagerDialogPopup:GetHeight() + 15)
_G.GearManagerDialogPopupScrollFrame:SetHeight(_G.GearManagerDialogPopupScrollFrame:GetHeight() + 16)
for i = 1, _G.NUM_GEARSET_ICONS_SHOWN do
local Button = _G["GearManagerDialogPopupButton"..i]
AS:SetTemplate(Button)
AS:StyleButton(Button)
Button:SetCheckedTexture(nil)
AS:SkinTexture(Button.icon)
AS:SetInside(Button.icon)
hooksecurefunc(Button, 'SetChecked', function(self, value)
if value == true then
self:SetBackdropBorderColor(unpack(AS.Color))
else
self:SetBackdropBorderColor(unpack(AS.BorderColor))
end
end)
end
--Currency
AS:SkinFrame(_G.TokenFramePopup)
AS:SkinScrollBar(_G.TokenFrameContainerScrollBar)
AS:SkinCloseButton(_G.TokenFramePopupCloseButton)
AS:SkinCheckBox(_G.TokenFramePopupInactiveCheckBox)
AS:SkinCheckBox(_G.TokenFramePopupBackpackCheckBox)
_G.TokenFramePopup:SetPoint("TOPLEFT", _G.TokenFrame, "TOPRIGHT", 4, -28)
hooksecurefunc('TokenFrame_Update', function()
if _G.TokenFrameContainer.buttons then
for _, Button in pairs(_G.TokenFrameContainer.buttons) do
Button.categoryMiddle:SetAlpha(0)
Button.categoryLeft:SetAlpha(0)
Button.categoryRight:SetAlpha(0)
Button.highlight:SetAlpha(0)
Button.stripe:SetTexture([[Interface\AddOns\AddOnSkins\Media\Textures\Highlight]])
Button.stripe:SetAlpha(.1)
AS:SkinTexture(Button.icon)
end
end
end)
end
function AS:Blizzard_DeathRecap(event, addon)
if addon ~= 'Blizzard_DeathRecap' then return end
AS:SkinFrame(_G.DeathRecapFrame)
AS:SkinCloseButton(_G.DeathRecapFrame.CloseXButton)
AS:SkinButton(_G.DeathRecapFrame.CloseButton)
for _, Recap in pairs(_G.DeathRecapFrame.DeathRecapEntry) do
AS:SkinTexture(Recap.SpellInfo.Icon, true)
Recap.SpellInfo.IconBorder:SetAlpha(0)
end
AS:UnregisterSkinEvent(addon, event)
end
function AS:Blizzard_DressUpFrame()
AS:SkinFrame(_G.SideDressUpFrame, nil, nil, true)
AS:SkinButton(_G.SideDressUpFrame.ResetButton)
AS:SkinCloseButton(_G.SideDressUpFrameCloseButton)
hooksecurefunc("SetUpSideDressUpFrame", function(parentFrame, closedWidth, openWidth, point, relativePoint, offsetX, offsetY)
if parentFrame == _G.AuctionFrame then
_G.SideDressUpFrame:SetPoint(point, parentFrame, relativePoint, 2, offsetY)
end
end)
AS:SkinBackdropFrame(_G.DressUpFrame)
AS:SkinCloseButton(_G.DressUpFrame.CloseButton)
AS:SkinButton(_G.DressUpFrame.ResetButton)
_G.DressUpFrame.portrait:SetAlpha(0)
AS:SkinMaxMinFrame(_G.DressUpFrame.MaximizeMinimizeFrame)
AS:SkinButton(_G.DressUpFrameCancelButton)
_G.DressUpFrame.ResetButton:SetPoint("RIGHT", _G.DressUpFrameCancelButton, "LEFT", -2, 0)
AS:SkinDropDownBox(_G.DressUpFrame.OutfitDropDown)
AS:SkinButton(_G.DressUpFrame.OutfitDropDown.SaveButton)
_G.DressUpFrame.OutfitDropDown.SaveButton:SetHeight(20)
_G.DressUpFrame.OutfitDropDown.SaveButton:SetPoint("LEFT", _G.DressUpFrame.OutfitDropDown, 'RIGHT', -10, -5)
end
function AS:Blizzard_Inspect(event, addon)
if addon ~= "Blizzard_InspectUI" then return end
AS:SkinFrame(_G.InspectFrame)
AS:SkinCloseButton(_G.InspectFrame.CloseButton)
_G.InspectFrame.portrait:SetAlpha(0)
for i = 1, _G.InspectFrame.numTabs do
AS:SkinTab(_G["InspectFrameTab"..i])
end
AS:SkinButton(_G.InspectPaperDollFrame.ViewButton)
AS:SkinBackdropFrame(_G.InspectModelFrame)
for _, Slot in pairs({_G.InspectPaperDollItemsFrame:GetChildren()}) do
if Slot:IsObjectType("Button") or Slot:IsObjectType("ItemButton") then
AS:SkinTexture(Slot.icon)
AS:SkinFrame(Slot)
AS:StyleButton(Slot)
AS:CreateShadow(Slot, true)
AS:SetInside(Slot.icon)
Slot.IconBorder:SetAlpha(0)
hooksecurefunc(Slot.IconBorder, 'SetVertexColor', function(self, r, g, b) Slot:SetBackdropBorderColor(r, g, b) end)
hooksecurefunc(Slot.IconBorder, 'Hide', function(self) Slot:SetBackdropBorderColor(unpack(AS.BorderColor)) end)
end
end
AS:StripTextures(_G.InspectPVPFrame)
for _, Button in pairs(_G.InspectPVPFrame.Slots) do
AS:CreateBackdrop(Button.Texture)
Button.Arrow:SetAlpha(0)
Button.Border:Hide()
hooksecurefunc(Button, "Update", function(self)
if (not self.slotIndex) or (not _G.INSPECTED_UNIT) then
return
end
local slotInfo = C_SpecializationInfo.GetInspectSelectedPvpTalent(_G.INSPECTED_UNIT, self.slotIndex)
if (slotInfo) then
AS:SkinTexture(self.Texture)
self.Texture:SetDesaturated(false)
self.Texture.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor))
else
self.Texture:SetTexture([[Interface\PetBattles\PetBattle-LockIcon]])
self.Texture:SetTexCoord(0, 1, 0, 1)
self.Texture:SetDesaturated(true)
self.Texture:Show()
self.Texture.Backdrop:SetBackdropBorderColor(1, 0, 0, 1)
end
end)
end
AS:StripTextures(_G.InspectTalentFrame)
_G.InspectTalentFrame.InspectSpec.ring:SetTexture('')
AS:SkinTexture(_G.InspectTalentFrame.InspectSpec.specIcon, true)
_G.InspectTalentFrame.InspectSpec:HookScript('OnShow', function(self)
local Spec, Sex
if (_G.INSPECTED_UNIT ~= nil) then
Spec = GetInspectSpecialization(_G.INSPECTED_UNIT)
Sex = UnitSex(_G.INSPECTED_UNIT)
end
if(Spec ~= nil and Spec > 0 and Sex ~= nil) then
local Role = GetSpecializationRoleByID(Spec)
if (Role ~= nil) then
self.specIcon:SetTexture(select(4, GetSpecializationInfoByID(Spec, Sex)))
end
end
end)
for i = 1, _G.MAX_TALENT_TIERS do
for j = 1, _G.NUM_TALENT_COLUMNS do
local Button = _G.InspectTalentFrame.InspectTalents['tier'..i]["talent"..j]
AS:StripTextures(Button)
AS:SkinTexture(Button.icon, true)
hooksecurefunc(Button.border, 'SetShown', function(self, value)
if value == true then
Button.icon.Backdrop:SetBackdropBorderColor(unpack(AS.Color))
else
Button.icon.Backdrop:SetBackdropBorderColor(unpack(AS.BorderColor))
end
end)
end
end
_G.InspectGuildFrameBG:SetTexture('')
AS:UnregisterSkinEvent(addon, event)
end
function AS:Blizzard_ItemSocketingUI(event, addon)
if addon ~= 'Blizzard_ItemSocketingUI' then return end
AS:SkinFrame(_G.ItemSocketingFrame)
_G.ItemSocketingFrame.portrait:SetAlpha(0)
AS:SkinFrame(_G.ItemSocketingScrollFrame)
AS:SkinCloseButton(_G.ItemSocketingFrame.CloseButton)
for i = 1, _G.MAX_NUM_SOCKETS do
local button = _G["ItemSocketingSocket"..i]
AS:SkinFrame(button)
AS:StyleButton(button)
AS:SkinTexture(button.icon)
button.icon:ClearAllPoints()
AS:SetInside(button.icon)
_G["ItemSocketingSocket"..i.."BracketFrame"]:SetAlpha(0)
_G["ItemSocketingSocket"..i.."Background"]:SetAlpha(0)
end
hooksecurefunc("ItemSocketingFrame_Update", function()
for i = 1, GetNumSockets() do
local color = GEM_TYPE_INFO[GetSocketTypes(i)]
_G["ItemSocketingSocket"..i]:SetBackdropColor(color.r, color.g, color.b, 0.15)
_G["ItemSocketingSocket"..i]:SetBackdropBorderColor(color.r, color.g, color.b)
end
end)
_G.ItemSocketingSocketButton:ClearAllPoints()
_G.ItemSocketingSocketButton:SetPoint("BOTTOMRIGHT", _G.ItemSocketingFrame, "BOTTOMRIGHT", -5, 5)
AS:SkinButton(_G.ItemSocketingSocketButton)
AS:SkinScrollBar(_G.ItemSocketingScrollFrameScrollBar)
AS:UnregisterSkinEvent(addon, event)
end
AS:RegisterSkin('Blizzard_Character', AS.Blizzard_Character)
AS:RegisterSkin('Blizzard_DeathRecap', AS.Blizzard_DeathRecap, 'ADDON_LOADED')
AS:RegisterSkin('Blizzard_DressUpFrame', AS.Blizzard_DressUpFrame)
AS:RegisterSkin("Blizzard_Inspect", AS.Blizzard_Inspect, 'ADDON_LOADED')
AS:RegisterSkin('Blizzard_ItemSocketingUI', AS.Blizzard_ItemSocketingUI, 'ADDON_LOADED')