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.
372 lines
12 KiB
372 lines
12 KiB
local E, L, V, P, G = unpack(ElvUI)
|
|
local S = E:GetModule('Skins')
|
|
|
|
local _G = _G
|
|
local next = next
|
|
local pairs = pairs
|
|
local unpack = unpack
|
|
|
|
local CreateFrame = CreateFrame
|
|
local hooksecurefunc = hooksecurefunc
|
|
local WhoFrameColumn_SetWidth = WhoFrameColumn_SetWidth
|
|
local FriendsFrame_GetInviteRestriction = FriendsFrame_GetInviteRestriction
|
|
|
|
--Social Frame
|
|
local function SkinSocialHeaderTab(tab)
|
|
if not tab then return end
|
|
|
|
tab:StripTextures()
|
|
tab:CreateBackdrop('Transparent')
|
|
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
|
|
|
|
local atlasToTex = {
|
|
['friendslist-invitebutton-horde-normal'] = [[Interface\FriendsFrame\PlusManz-Horde]],
|
|
['friendslist-invitebutton-alliance-normal'] = [[Interface\FriendsFrame\PlusManz-Alliance]],
|
|
['friendslist-invitebutton-default-normal'] = [[Interface\FriendsFrame\PlusManz-PlusManz]],
|
|
}
|
|
|
|
local function HandleInviteTex(self, atlas)
|
|
local tex = atlasToTex[atlas]
|
|
if tex then
|
|
self.ownerIcon:SetTexture(tex)
|
|
end
|
|
end
|
|
|
|
local function ReskinFriendButton(button)
|
|
if not button.IsSkinned then
|
|
local gameIcon = button.gameIcon
|
|
gameIcon:SetSize(22, 22)
|
|
gameIcon:SetTexCoord(.17, .83, .17, .83)
|
|
button.background:Hide()
|
|
button:SetHighlightTexture(E.media.normTex)
|
|
button:GetHighlightTexture():SetVertexColor(.24, .56, 1, .2)
|
|
gameIcon:CreateBackdrop('Transparent')
|
|
button.bg = gameIcon.backdrop
|
|
|
|
local travelPass = button.travelPassButton
|
|
travelPass:SetSize(22, 22)
|
|
travelPass:Point('TOPRIGHT', -3, -6)
|
|
travelPass:CreateBackdrop()
|
|
travelPass.NormalTexture:SetAlpha(0)
|
|
travelPass.PushedTexture:SetAlpha(0)
|
|
travelPass.DisabledTexture:SetAlpha(0)
|
|
travelPass.HighlightTexture:SetColorTexture(1, 1, 1, .25)
|
|
travelPass.HighlightTexture:SetAllPoints()
|
|
gameIcon:Point('TOPRIGHT', travelPass, 'TOPLEFT', -4, 0)
|
|
|
|
local icon = travelPass:CreateTexture(nil, 'ARTWORK')
|
|
icon:SetTexCoord(.1, .9, .1, .9)
|
|
icon:SetAllPoints()
|
|
button.newIcon = icon
|
|
travelPass.NormalTexture.ownerIcon = icon
|
|
hooksecurefunc(travelPass.NormalTexture, 'SetAtlas', HandleInviteTex)
|
|
|
|
button.IsSkinned = true
|
|
end
|
|
|
|
button.bg:SetShown(button.gameIcon:IsShown())
|
|
end
|
|
|
|
local function HandleTabs()
|
|
local tab = _G.FriendsFrameTab1
|
|
local index, lastTab = 1, tab
|
|
while tab do
|
|
S:HandleTab(tab)
|
|
|
|
tab:ClearAllPoints()
|
|
|
|
if index == 1 then
|
|
tab:Point('BOTTOMLEFT', _G.FriendsFrame, 'BOTTOMLEFT', -3, -32)
|
|
else
|
|
tab:Point('TOPLEFT', lastTab, 'TOPRIGHT', -5, 0)
|
|
lastTab = tab
|
|
end
|
|
|
|
index = index + 1
|
|
tab = _G['FriendsFrameTab'..index]
|
|
end
|
|
end
|
|
|
|
function S:FriendsFrame()
|
|
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.friends) then return end
|
|
|
|
S:HandleTrimScrollBar(_G.FriendsListFrame.ScrollBar)
|
|
S:HandleTrimScrollBar(_G.IgnoreListFrame.ScrollBar)
|
|
S:HandleTrimScrollBar(_G.WhoFrame.ScrollBar)
|
|
S:HandleTrimScrollBar(_G.FriendsFriendsFrame.ScrollBar)
|
|
S:HandleTrimScrollBar(_G.QuickJoinFrame.ScrollBar)
|
|
|
|
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.FriendsFrameIcon:Hide()
|
|
_G.IgnoreListFrame:StripTextures()
|
|
|
|
S:HandleDropDownBox(_G.FriendsFrameStatusDropDown, 70)
|
|
|
|
_G.FriendsFrameStatusDropDown:ClearAllPoints()
|
|
_G.FriendsFrameStatusDropDown:Point('TOPLEFT', FriendsFrame, 'TOPLEFT', 5, -24)
|
|
|
|
local FriendsFrameBattlenetFrame = _G.FriendsFrameBattlenetFrame
|
|
FriendsFrameBattlenetFrame:StripTextures()
|
|
FriendsFrameBattlenetFrame:SetTemplate('Transparent')
|
|
|
|
local bnetColor = _G.FRIENDS_BNET_BACKGROUND_COLOR
|
|
local BattlenetFrame = CreateFrame('Button', nil, FriendsFrameBattlenetFrame)
|
|
BattlenetFrame:Point('TOPLEFT', FriendsFrameBattlenetFrame, 'TOPLEFT')
|
|
BattlenetFrame:Point('BOTTOMRIGHT', FriendsFrameBattlenetFrame, 'BOTTOMRIGHT')
|
|
BattlenetFrame:Size(FriendsFrameBattlenetFrame:GetSize())
|
|
BattlenetFrame:SetTemplate()
|
|
BattlenetFrame:SetBackdropColor(bnetColor.r, bnetColor.g, bnetColor.b, bnetColor.a)
|
|
BattlenetFrame:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
|
|
|
BattlenetFrame:SetScript('OnClick', function() FriendsFrameBattlenetFrame.BroadcastFrame:ToggleFrame() end)
|
|
BattlenetFrame:SetScript('OnEnter', BattleNetFrame_OnEnter)
|
|
BattlenetFrame:SetScript('OnLeave', BattleNetFrame_OnLeave)
|
|
|
|
FriendsFrameBattlenetFrame.BroadcastButton:Kill() -- We use the BattlenetFrame to enter a Status Message
|
|
|
|
FriendsFrameBattlenetFrame.UnavailableInfoFrame.Bg:SetTexture(nil)
|
|
FriendsFrameBattlenetFrame.UnavailableInfoFrame:SetTemplate('Transparent')
|
|
FriendsFrameBattlenetFrame.UnavailableInfoFrame:ClearAllPoints()
|
|
FriendsFrameBattlenetFrame.UnavailableInfoFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 1, -18)
|
|
|
|
FriendsFrameBattlenetFrame.BroadcastFrame:StripTextures()
|
|
FriendsFrameBattlenetFrame.BroadcastFrame:SetTemplate('Transparent')
|
|
FriendsFrameBattlenetFrame.BroadcastFrame:ClearAllPoints()
|
|
FriendsFrameBattlenetFrame.BroadcastFrame:Point('TOPLEFT', FriendsFrame, 'TOPRIGHT', 3, -1)
|
|
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.UpdateButton)
|
|
S:HandleButton(FriendsFrameBattlenetFrame.BroadcastFrame.CancelButton)
|
|
|
|
local editBoxBorders = {
|
|
'BottomBorder',
|
|
'BottomLeftBorder',
|
|
'BottomRightBorder',
|
|
'LeftBorder',
|
|
'MiddleBorder',
|
|
'RightBorder',
|
|
'TopBorder',
|
|
'TopLeftBorder',
|
|
'TopRightBorder'
|
|
}
|
|
|
|
local broadcastEdit = FriendsFrameBattlenetFrame.BroadcastFrame.EditBox
|
|
for _, name in next, editBoxBorders do
|
|
local region = broadcastEdit[name]
|
|
if region then region:Hide() end
|
|
end
|
|
|
|
S:HandleEditBox(broadcastEdit)
|
|
|
|
S:HandleEditBox(_G.AddFriendNameEditBox)
|
|
_G.AddFriendFrame:SetTemplate('Transparent')
|
|
|
|
local INVITE_RESTRICTION_NONE = 9
|
|
hooksecurefunc('FriendsFrame_UpdateFriendButton', function(button)
|
|
if button.gameIcon then
|
|
ReskinFriendButton(button)
|
|
end
|
|
|
|
if button.newIcon and button.buttonType == _G.FRIENDS_BUTTON_TYPE_BNET then
|
|
if FriendsFrame_GetInviteRestriction(button.id) == INVITE_RESTRICTION_NONE then
|
|
button.newIcon:SetVertexColor(1, 1, 1)
|
|
else
|
|
button.newIcon:SetVertexColor(.5, .5, .5)
|
|
end
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc('FriendsFrame_UpdateFriendInviteButton', function(button)
|
|
if not button.IsSkinned then
|
|
S:HandleButton(button.AcceptButton)
|
|
S:HandleButton(button.DeclineButton)
|
|
|
|
button.IsSkinned = true
|
|
end
|
|
end)
|
|
|
|
hooksecurefunc('FriendsFrame_UpdateFriendInviteHeaderButton', function(button)
|
|
if not button.IsSkinned then
|
|
button:DisableDrawLayer('BACKGROUND')
|
|
button:CreateBackdrop('Transparent')
|
|
button.backdrop:SetInside(button, 2, 2)
|
|
local hl = button:GetHighlightTexture()
|
|
hl:SetColorTexture(.24, .56, 1, .2)
|
|
hl:SetInside(button.backdrop)
|
|
|
|
button.IsSkinned = true
|
|
end
|
|
end)
|
|
|
|
--Who Frame
|
|
_G.WhoFrameListInset:StripTextures()
|
|
_G.WhoFrameListInset.NineSlice:Hide()
|
|
_G.WhoFrameEditBoxInset:StripTextures()
|
|
_G.WhoFrameEditBoxInset.NineSlice:Hide()
|
|
|
|
_G.WhoFrameEditBox:CreateBackdrop('Transparent')
|
|
_G.WhoFrameEditBox.backdrop:Point('TOPLEFT', _G.WhoFrameEditBoxInset)
|
|
_G.WhoFrameEditBox.backdrop:Point('BOTTOMRIGHT', _G.WhoFrameEditBoxInset, -1, 1)
|
|
|
|
--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
|
|
HandleTabs()
|
|
|
|
for i = 1, 3 do
|
|
local tab = _G['FriendsTabHeaderTab'..i]
|
|
if tab then
|
|
SkinSocialHeaderTab(tab)
|
|
end
|
|
end
|
|
|
|
--View Friends BN Frame
|
|
local FriendsFriendsFrame = _G.FriendsFriendsFrame
|
|
FriendsFriendsFrame.ScrollFrameBorder:Hide()
|
|
FriendsFriendsFrame:StripTextures()
|
|
FriendsFriendsFrame:SetTemplate('Transparent')
|
|
S:HandleDropDownBox(_G.FriendsFriendsFrameDropDown, 150)
|
|
S:HandleButton(FriendsFriendsFrame.SendRequestButton)
|
|
S:HandleButton(FriendsFriendsFrame.CloseButton)
|
|
|
|
--Quick join
|
|
local QuickJoinFrame = _G.QuickJoinFrame
|
|
local QuickJoinRoleSelectionFrame = _G.QuickJoinRoleSelectionFrame
|
|
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)
|
|
QuickJoinRoleSelectionFrame:StripTextures()
|
|
QuickJoinRoleSelectionFrame:SetTemplate('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)
|
|
|
|
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:SetTemplate('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:SetTemplate('Transparent')
|
|
S:HandleTrimScrollBar(RecruitList.ScrollBar)
|
|
|
|
-- Recruitment
|
|
local Recruitment = _G.RecruitAFriendRecruitmentFrame
|
|
Recruitment:StripTextures()
|
|
Recruitment:SetTemplate('Transparent')
|
|
S:HandleEditBox(Recruitment.EditBox)
|
|
S:HandleButton(Recruitment.GenerateOrCopyLinkButton)
|
|
S:HandleCloseButton(Recruitment.CloseButton)
|
|
|
|
-- Rewards
|
|
local Reward = _G.RecruitAFriendRewardsFrame
|
|
Reward:StripTextures()
|
|
Reward:SetTemplate('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')
|
|
|