initial commit
This commit is contained in:
503
Modules/Skins/Blizzard/Character.lua
Normal file
503
Modules/Skins/Blizzard/Character.lua
Normal 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')
|
||||
Reference in New Issue
Block a user