From 28f7240e7c3c0c6f43ac547c4028fe9b179c1535 Mon Sep 17 00:00:00 2001 From: Meow <30401521+me0wg4ming@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:05:51 +0100 Subject: [PATCH] fixed raidframes and inspect --- init/skins.xml | 1 + modules/friends.lua | 467 ++++++++++++++++++++++++++++++++++++++ modules/raid.lua | 46 ++++ modules/turtle-wow.lua | 85 ++++--- skins/blizzard/raidui.lua | 39 ++++ 5 files changed, 606 insertions(+), 32 deletions(-) create mode 100644 modules/friends.lua create mode 100644 skins/blizzard/raidui.lua diff --git a/init/skins.xml b/init/skins.xml index 010e2b96..adff63e0 100644 --- a/init/skins.xml +++ b/init/skins.xml @@ -12,6 +12,7 @@ + diff --git a/modules/friends.lua b/modules/friends.lua new file mode 100644 index 00000000..f229538c --- /dev/null +++ b/modules/friends.lua @@ -0,0 +1,467 @@ +pfUI:RegisterSkin("Friends", "vanilla:tbc", function () + local rawborder, border = GetBorderSize() + local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel() + local maxtab = pfUI.expansion == "vanilla" and 4 or 5 + + StripTextures(FriendsFrame, true) + CreateBackdrop(FriendsFrame, nil, nil, .75) + CreateBackdropShadow(FriendsFrame) + + FriendsFrame.backdrop:SetPoint("TOPLEFT", 8, -10) + FriendsFrame.backdrop:SetPoint("BOTTOMRIGHT", -32, 74) + FriendsFrame:SetHitRectInsets(8,32,10,74) + EnableMovable("FriendsFrame") + + SkinCloseButton(FriendsFrameCloseButton, FriendsFrame.backdrop, -6, -6) + + FriendsFrameTitleText:ClearAllPoints() + FriendsFrameTitleText:SetPoint("TOP", FriendsFrame.backdrop, "TOP", 0, -10) + + FriendsFrameTab1:ClearAllPoints() + FriendsFrameTab1:SetPoint("TOPLEFT", FriendsFrame.backdrop, "BOTTOMLEFT", border, -2*border) + for i = 1, maxtab do + local tab = _G["FriendsFrameTab"..i] + local lastTab = _G["FriendsFrameTab"..(i-1)] + if lastTab then + tab:ClearAllPoints() + tab:SetPoint("LEFT", lastTab, "RIGHT", 3*border, 0) + end + SkinTab(tab) + end + + do -- Friends Tab + -- Friends SubTab + SkinTab(FriendsFrameToggleTab1) + FriendsFrameToggleTab1:ClearAllPoints() + FriendsFrameToggleTab1:SetPoint("BOTTOMLEFT", FriendsFrameFriendsScrollFrame, "TOPLEFT", 0, border*2 + 1) + SkinTab(FriendsFrameToggleTab2) + FriendsFrameToggleTab2:ClearAllPoints() + FriendsFrameToggleTab2:SetPoint("LEFT", FriendsFrameToggleTab1, "RIGHT", border*2 + 1, 0) + + StripTextures(FriendsFrameFriendsScrollFrame) + CreateBackdrop(FriendsFrameFriendsScrollFrame) + SkinScrollbar(FriendsFrameFriendsScrollFrameScrollBar, true) + + SkinButton(FriendsFrameAddFriendButton) + FriendsFrameAddFriendButton:SetWidth(158) + FriendsFrameAddFriendButton:ClearAllPoints() + FriendsFrameAddFriendButton:SetPoint("TOPLEFT", FriendsFrameFriendsScrollFrame, "BOTTOMLEFT", -bpad, -border*2) + + SkinButton(FriendsFrameRemoveFriendButton) + FriendsFrameRemoveFriendButton:SetWidth(158) + FriendsFrameRemoveFriendButton:ClearAllPoints() + FriendsFrameRemoveFriendButton:SetPoint("TOP", FriendsFrameAddFriendButton, "BOTTOM", 0, -4) + + SkinButton(FriendsFrameSendMessageButton) + FriendsFrameSendMessageButton:SetWidth(158) + FriendsFrameSendMessageButton:ClearAllPoints() + FriendsFrameSendMessageButton:SetPoint("TOPRIGHT", FriendsFrameFriendsScrollFrameScrollBarScrollDownButton, "BOTTOMRIGHT", bpad, -border*2) + + SkinButton(FriendsFrameGroupInviteButton) + FriendsFrameGroupInviteButton:SetWidth(158) + FriendsFrameGroupInviteButton:ClearAllPoints() + FriendsFrameGroupInviteButton:SetPoint("TOP", FriendsFrameSendMessageButton, "BOTTOM", 0, -4) + + for i = 1, FRIENDS_TO_DISPLAY do + local frame = _G["FriendsFrameFriendButton"..i] + if frame then + local tex = frame:GetHighlightTexture() + tex:ClearAllPoints() + tex:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, 0) + tex:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -5, 2) + frame:SetHeight(30) + end + end + + -- Ignore SubTab + SkinTab(IgnoreFrameToggleTab1) + IgnoreFrameToggleTab1:ClearAllPoints() + IgnoreFrameToggleTab1:SetPoint("BOTTOMLEFT", FriendsFrameIgnoreScrollFrame, "TOPLEFT", 0, border*2 + 1) + SkinTab(IgnoreFrameToggleTab2) + IgnoreFrameToggleTab2:ClearAllPoints() + IgnoreFrameToggleTab2:SetPoint("LEFT", IgnoreFrameToggleTab1, "RIGHT", border*2 + 1, 0) + + StripTextures(FriendsFrameIgnoreScrollFrame) + CreateBackdrop(FriendsFrameIgnoreScrollFrame) + SkinScrollbar(FriendsFrameIgnoreScrollFrameScrollBar, true) + FriendsFrameIgnoreScrollFrame:SetHeight(329) + + SkinButton(FriendsFrameIgnorePlayerButton) + FriendsFrameIgnorePlayerButton:SetWidth(158) + FriendsFrameIgnorePlayerButton:ClearAllPoints() + FriendsFrameIgnorePlayerButton:SetPoint("TOPLEFT", FriendsFrameIgnoreScrollFrame, "BOTTOMLEFT", -bpad, -border*2) + + SkinButton(FriendsFrameStopIgnoreButton) + FriendsFrameStopIgnoreButton:SetWidth(158) + FriendsFrameStopIgnoreButton:ClearAllPoints() + FriendsFrameStopIgnoreButton:SetPoint("TOPRIGHT", FriendsFrameIgnoreScrollFrameScrollBarScrollDownButton, "BOTTOMRIGHT", bpad, -border*2) + + for i = 1, IGNORES_TO_DISPLAY do + local frame = _G["FriendsFrameIgnoreButton"..i] + if frame then + local tex = frame:GetHighlightTexture() + tex:ClearAllPoints() + tex:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, -2) + tex:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -5, -1) + end + end + end + + do -- Who Tab + WhoListScrollFrame:SetPoint("TOPLEFT", 25, -70) + WhoFrameButton1:SetPoint("TOPLEFT", WhoListScrollFrame, "TOPLEFT", -5, -5) + + StripTextures(WhoListScrollFrame) + CreateBackdrop(WhoListScrollFrame) + SkinScrollbar(WhoListScrollFrameScrollBar, true) + + StripTextures(WhoFrameColumnHeader3) + WhoFrameColumnHeader3:ClearAllPoints() + WhoFrameColumnHeader3:SetPoint("BOTTOMLEFT", WhoListScrollFrame, "TOPLEFT", 0, 4) + + StripTextures(WhoFrameColumnHeader4) + WhoFrameColumnHeader4:SetWidth(32) + WhoFrameColumnHeader4:ClearAllPoints() + WhoFrameColumnHeader4:SetPoint("LEFT", WhoFrameColumnHeader3, "RIGHT", -2, 0) + + StripTextures(WhoFrameColumnHeader1) + WhoFrameColumnHeader1:SetWidth(120) + WhoFrameColumnHeader1:ClearAllPoints() + WhoFrameColumnHeader1:SetPoint("LEFT", WhoFrameColumnHeader4, "RIGHT", -2, 0) + + StripTextures(WhoFrameColumnHeader2) + WhoFrameColumnHeader2:ClearAllPoints() + WhoFrameColumnHeader2:SetPoint("LEFT", WhoFrameColumnHeader1, "RIGHT", -2, 0) + + SkinDropDown(WhoFrameDropDown) + WhoFrameDropDown.backdrop:SetPoint("BOTTOMRIGHT", WhoListScrollFrame.backdrop, "TOPRIGHT", 0, 3) + WhoFrameDropDownButton:ClearAllPoints() + WhoFrameDropDownButton:SetPoint("RIGHT", WhoFrameDropDown.backdrop, "RIGHT", 0, 0) + + -- add class icon buttons + for i = 1, WHOS_TO_DISPLAY do + local frame = _G["WhoFrameButton"..i] + frame.classicon = frame.classicon or frame:CreateTexture(nil, "OVERLAY") + frame.classicon:SetPoint("CENTER", _G["WhoFrameButton"..i.."Class"], "CENTER", -4, 0) + frame.classicon:SetWidth(15) + frame.classicon:SetHeight(15) + frame.classicon:SetTexture(pfUI.media["img:classicons"]) + frame.classicon:Hide() + end + + -- set positions + hooksecurefunc("WhoList_Update", function() + for i = 1, WHOS_TO_DISPLAY do + local level = _G["WhoFrameButton"..i.."Level"] + level:ClearAllPoints() + level:SetPoint("TOPLEFT", 10, -3) + + local class = _G["WhoFrameButton"..i.."Class"] + class:SetWidth(30) + class:ClearAllPoints() + class:SetPoint("LEFT", level, "RIGHT", 10, 0) + + local name = _G["WhoFrameButton"..i.."Name"] + name:SetWidth(120) + name:ClearAllPoints() + name:SetPoint("LEFT", class, "RIGHT", 0, 0) + end + end) + + CreateBackdrop(WhoFrameEditBox, nil, true) + WhoFrameEditBox:SetTextInsets(5,5,5,5) + WhoFrameEditBox:ClearAllPoints() + WhoFrameEditBox:SetPoint("TOPLEFT", WhoListScrollFrame.backdrop, "BOTTOMLEFT", 0, -4) + WhoFrameEditBox:SetPoint("TOPRIGHT", WhoListScrollFrameScrollBarScrollDownButton, "BOTTOMRIGHT", 0, -5) + WhoFrameEditBox:SetHeight(20) + + WhoFrameTotals:ClearAllPoints() + WhoFrameTotals:SetPoint("BOTTOM", FriendsFrame.backdrop, "BOTTOM", 0, 8) + + SkinButton(WhoFrameWhoButton) + WhoFrameWhoButton:ClearAllPoints() + WhoFrameWhoButton:SetPoint("TOPLEFT", WhoFrameEditBox, "BOTTOMLEFT", -bpad, -5) + + SkinButton(WhoFrameAddFriendButton) + WhoFrameAddFriendButton:SetPoint("LEFT", WhoFrameWhoButton, "RIGHT", 3, 0) + WhoFrameAddFriendButton:SetPoint("RIGHT", WhoFrameGroupInviteButton, "LEFT", -3, 0) + + SkinButton(WhoFrameGroupInviteButton) + WhoFrameGroupInviteButton:ClearAllPoints() + WhoFrameGroupInviteButton:SetPoint("TOPRIGHT", WhoFrameEditBox, "BOTTOMRIGHT", bpad, -5) + end + + do -- Guild Tab + for i = 1, 4 do + StripTextures(_G["GuildFrameColumnHeader"..i]) + StripTextures(_G["GuildFrameGuildStatusColumnHeader"..i]) + end + + -- level + GuildFrameColumnHeader3:ClearAllPoints() + GuildFrameColumnHeader3:SetPoint("TOPLEFT", 20, -70) + + -- class + GuildFrameColumnHeader4:ClearAllPoints() + GuildFrameColumnHeader4:SetPoint("LEFT", GuildFrameColumnHeader3, "RIGHT", -12, -0) + GuildFrameColumnHeader4:SetWidth(32) + + -- name + GuildFrameColumnHeader1:ClearAllPoints() + GuildFrameColumnHeader1:SetPoint("LEFT", GuildFrameColumnHeader4, "RIGHT", -2, -0) + GuildFrameColumnHeader1:SetWidth(120) + + -- zone + GuildFrameColumnHeader2:ClearAllPoints() + GuildFrameColumnHeader2:SetPoint("LEFT", GuildFrameColumnHeader1, "RIGHT", -2, -0) + + StripTextures(GuildListScrollFrame) + CreateBackdrop(GuildListScrollFrame) + SkinScrollbar(GuildListScrollFrameScrollBar, true) + + -- add class icon buttons + for i = 1, GUILDMEMBERS_TO_DISPLAY do + local frame = _G["GuildFrameButton"..i] + frame.classicon = frame.classicon or frame:CreateTexture(nil, "OVERLAY") + frame.classicon:SetPoint("CENTER", _G["GuildFrameButton"..i.."Class"], "CENTER", -4, 0) + frame.classicon:SetWidth(15) + frame.classicon:SetHeight(15) + frame.classicon:SetTexture(pfUI.media["img:classicons"]) + frame.classicon:Hide() + end + + -- set positions + hooksecurefunc("GuildStatus_Update", function() + for i = 1, GUILDMEMBERS_TO_DISPLAY do + local level = _G["GuildFrameButton"..i.."Level"] + level:ClearAllPoints() + level:SetPoint("TOPLEFT", 10, -3) + + local class = _G["GuildFrameButton"..i.."Class"] + class:SetWidth(30) + class:ClearAllPoints() + class:SetPoint("LEFT", level, "RIGHT", 5, 0) + + local name = _G["GuildFrameButton"..i.."Name"] + name:SetWidth(120) + name:ClearAllPoints() + name:SetPoint("LEFT", class, "RIGHT", 0, 0) + end + end) + + SkinArrowButton(GuildFrameGuildListToggleButton, "right", 16) + GuildFrameGuildListToggleButton:ClearAllPoints() + GuildFrameGuildListToggleButton:SetPoint("TOPLEFT", GuildListScrollFrame, "BOTTOMRIGHT", -20, 20) + + CreateBackdrop(GuildMOTDEditButton) + GuildMOTDEditButton:ClearAllPoints() + GuildMOTDEditButton:SetPoint("TOPLEFT", GuildListScrollFrame, "BOTTOMLEFT", 0, -border*2) + GuildMOTDEditButton:SetPoint("BOTTOMRIGHT", GuildListScrollFrameScrollBarScrollDownButton, "BOTTOMRIGHT", 0, -68) + + GuildFrameNotesLabel:SetPoint("TOPLEFT", GuildMOTDEditButton, 2, -2) + GuildFrameNotesLabel:SetTextColor(.5,.5,.5,1) + + GuildFrameNotesText:ClearAllPoints() + GuildFrameNotesText:SetPoint("TOPLEFT", GuildMOTDEditButton, "TOPLEFT", 4, -20) + GuildFrameNotesText:SetPoint("BOTTOMRIGHT", GuildMOTDEditButton, "BOTTOMRIGHT", -4, 4) + GuildFrameNotesText:SetTextColor(1,1,1,1) + + StripTextures(GuildFrameLFGFrame) + GuildFrameLFGFrame:ClearAllPoints() + GuildFrameLFGFrame:SetPoint("TOPRIGHT", -35, -45) + SkinCheckbox(GuildFrameLFGButton) + + SkinButton(GuildFrameGuildInformationButton) + GuildFrameGuildInformationButton:ClearAllPoints() + GuildFrameGuildInformationButton:SetPoint("TOPLEFT", GuildMOTDEditButton, "BOTTOMLEFT", -bpad, -5) + + SkinButton(GuildFrameAddMemberButton) + GuildFrameAddMemberButton:SetPoint("LEFT", GuildFrameGuildInformationButton, "RIGHT", 3, 0) + GuildFrameAddMemberButton:SetPoint("RIGHT", GuildFrameControlButton, "LEFT", -3, 0) + + SkinButton(GuildFrameControlButton) + GuildFrameControlButton:ClearAllPoints() + GuildFrameControlButton:SetPoint("TOPRIGHT", GuildMOTDEditButton, "BOTTOMRIGHT", bpad, -5) + + -- side dock dialog + StripTextures(GuildMemberDetailFrame) + CreateBackdrop(GuildMemberDetailFrame, nil, true, .75) + GuildMemberDetailFrame:ClearAllPoints() + GuildMemberDetailFrame:SetPoint("TOPLEFT", FriendsFrame.backdrop, "TOPRIGHT", border*2, 0) + + SkinCloseButton(GuildMemberDetailCloseButton, GuildMemberDetailFrame, -6, -6) + + for _,text in pairs({"ZoneText", "RankText", "OnlineText"}) do + text = _G["GuildMemberDetail"..text] + text:SetPoint("RIGHT", -20, 0) + text:SetJustifyH("RIGHT") + end + + SkinArrowButton(GuildFramePromoteButton, "up", 12) + GuildFramePromoteButton:ClearAllPoints() + GuildFramePromoteButton:SetPoint("TOPLEFT", GuildMemberDetailRankText, "TOPRIGHT", 3, 6) + + SkinArrowButton(GuildFrameDemoteButton, "down", 12) + GuildFrameDemoteButton:ClearAllPoints() + GuildFrameDemoteButton:SetPoint("BOTTOMLEFT", GuildMemberDetailRankText, "BOTTOMRIGHT", 3, -6) + + StripTextures(GuildMemberNoteBackground) + CreateBackdrop(GuildMemberNoteBackground, nil, true) + + StripTextures(GuildMemberOfficerNoteBackground) + CreateBackdrop(GuildMemberOfficerNoteBackground, nil, true) + + SkinButton(GuildMemberRemoveButton) + GuildMemberRemoveButton:ClearAllPoints() + GuildMemberRemoveButton:SetPoint("BOTTOMRIGHT", GuildMemberDetailFrame, "BOTTOM", -bpad, 8) + + SkinButton(GuildMemberGroupInviteButton) + GuildMemberGroupInviteButton:ClearAllPoints() + GuildMemberGroupInviteButton:SetPoint("BOTTOMLEFT", GuildMemberDetailFrame, "BOTTOM", bpad, 8) + + -- guild info dock + StripTextures(GuildInfoFrame) + CreateBackdrop(GuildInfoFrame, nil, true, .75) + + SkinCloseButton(GuildInfoCloseButton, GuildInfoFrame, -6, -6) + + CreateBackdrop(GuildInfoTextBackground, nil, true) + SkinScrollbar(GuildInfoFrameScrollFrameScrollBar) + + SkinButton(GuildInfoSaveButton) + GuildInfoSaveButton:ClearAllPoints() + GuildInfoSaveButton:SetPoint("BOTTOMLEFT", GuildInfoFrame, "BOTTOMLEFT", 10, 8) + + SkinButton(GuildInfoCancelButton) + GuildInfoCancelButton:ClearAllPoints() + GuildInfoCancelButton:SetPoint("BOTTOMRIGHT", GuildInfoFrame, "BOTTOMRIGHT", -10, 8) + + if GuildInfoGuildEventButton then -- log button (tbc+) + SkinButton(GuildInfoGuildEventButton) + GuildInfoGuildEventButton:ClearAllPoints() + GuildInfoGuildEventButton:SetPoint("BOTTOM", GuildInfoFrame, "BOTTOM", 0, 8) + end + + if GuildEventLogFrame then -- guild log frame (tbc+) + StripTextures(GuildEventFrame) + CreateBackdrop(GuildEventFrame, nil, true, .75) + StripTextures(GuildEventLogFrame) + CreateBackdrop(GuildEventLogFrame, nil, true, .75) + StripTextures(GuildEventLogScrollFrame) + SkinScrollbar(GuildEventLogScrollFrameScrollBar) + SkinCloseButton(GuildEventLogCloseButton) + GuildEventLogCancelButton:SetPoint("BOTTOMRIGHT", -9, 8) + SkinButton(GuildEventLogCancelButton) + end + + -- guild control + StripTextures(GuildControlPopupFrame) + CreateBackdrop(GuildControlPopupFrame, nil, true, .75) + GuildControlPopupFrame:ClearAllPoints() + GuildControlPopupFrame:SetPoint("TOPLEFT", FriendsFrame.backdrop, "TOPRIGHT", border*2, 0) + + SkinDropDown(GuildControlPopupFrameDropDown) + + SkinButton(GuildControlPopupFrameAddRankButton) + GuildControlPopupFrameAddRankButton:SetWidth(18) + GuildControlPopupFrameAddRankButton:SetHeight(18) + GuildControlPopupFrameAddRankButton:SetText("+") + GuildControlPopupFrameAddRankButton:ClearAllPoints() + GuildControlPopupFrameAddRankButton:SetPoint("LEFT", GuildControlPopupFrameDropDown.backdrop, "RIGHT", 4, 0) + + SkinButton(GuildControlPopupFrameRemoveRankButton) + GuildControlPopupFrameRemoveRankButton:SetWidth(18) + GuildControlPopupFrameRemoveRankButton:SetHeight(18) + GuildControlPopupFrameRemoveRankButton:SetText("-") + GuildControlPopupFrameRemoveRankButton:ClearAllPoints() + GuildControlPopupFrameRemoveRankButton:SetPoint("LEFT", GuildControlPopupFrameAddRankButton, "RIGHT", 2*bpad, 0) + + local _,_,_,_,_,left,right = GuildControlPopupFrameEditBox:GetRegions() + left:Hide() + right:Hide() + CreateBackdrop(GuildControlPopupFrameEditBox) + GuildControlPopupFrameEditBox:SetHeight(20) + + for i = 1, 13 do + SkinCheckbox(_G["GuildControlPopupFrameCheckbox"..i]) + end + + SkinButton(GuildControlPopupFrameCancelButton) + SkinButton(GuildControlPopupAcceptButton) + GuildControlPopupAcceptButton:ClearAllPoints() + GuildControlPopupAcceptButton:SetPoint("RIGHT", GuildControlPopupFrameCancelButton, "LEFT", -2*bpad, 0) + end + + if ChannelFrameVerticalBar then -- Channel Tab (TBC+) + StripTextures(ChannelFrameVerticalBar) + SkinButton(ChannelFrameNewButton) + ChannelFrameNewButton:SetPoint("BOTTOMRIGHT", -15, 82) + + StripTextures(ChannelListScrollFrame) + SkinScrollbar(ChannelListScrollFrameScrollBar) + + for i = 1, MAX_DISPLAY_CHANNEL_BUTTONS do + StripTextures(_G["ChannelButton"..i]) + SkinButton(_G["ChannelButton"..i]) + end + + for i = 1, 22 do + StripTextures(_G["ChannelMemberButton"..i]) + end + + CreateBackdrop(ChannelMemberButton1) + ChannelMemberButton1.backdrop:SetPoint("BOTTOMRIGHT", ChannelMemberButton22, "BOTTOMRIGHT", -1, 0) + + StripTextures(ChannelRosterScrollFrame) + SkinScrollbar(ChannelRosterScrollFrameScrollBar) + + StripTextures(ChannelFrameDaughterFrame) + CreateBackdrop(ChannelFrameDaughterFrame) + + StripTextures(ChannelFrameDaughterFrameChannelName) + CreateBackdrop(ChannelFrameDaughterFrameChannelName, nil, true) + ChannelFrameDaughterFrameChannelName:SetTextInsets(5,5,5,5) + + StripTextures(ChannelFrameDaughterFrameChannelPassword) + CreateBackdrop(ChannelFrameDaughterFrameChannelPassword, nil, true) + ChannelFrameDaughterFrameChannelPassword:SetTextInsets(5,5,5,5) + + SkinCloseButton(ChannelFrameDaughterFrameDetailCloseButton) + + SkinButton(ChannelFrameDaughterFrameCancelButton) + SkinButton(ChannelFrameDaughterFrameOkayButton) + end + + do -- Raid Tab + StripTextures(RaidInfoFrame) + CreateBackdrop(RaidInfoFrame, nil, true, .75) + RaidInfoFrame:ClearAllPoints() + RaidInfoFrame:SetPoint("TOPLEFT", FriendsFrame.backdrop, "TOPRIGHT", border*2, 0) + + SkinCloseButton(RaidInfoCloseButton, RaidInfoFrame, -6, -6) + + StripTextures(RaidInfoScrollFrame) + SkinScrollbar(RaidInfoScrollFrameScrollBar) + + RaidInfoInstanceLabel:ClearAllPoints() + RaidInfoInstanceLabel:SetPoint("TOPLEFT", RaidInfoSubheader, "BOTTOMLEFT", 0, -6) + + RaidInfoIDLabel:ClearAllPoints() + RaidInfoIDLabel:SetPoint("TOPRIGHT", RaidInfoSubheader, "BOTTOMRIGHT", 24, -6) + + for i=1, 10 do + if _G["RaidInfoInstance"..i.."Name"] then + _G["RaidInfoInstance"..i.."Name"]:SetPoint("TOPLEFT", 2, -2) + end + end + + -- RaidFrameConvertToRaidButton and friends are part of Blizzard_RaidUI in Turtle WoW + HookAddonOrVariable("Blizzard_RaidUI", function() + if RaidFrameRaidInfoButton then SkinButton(RaidFrameRaidInfoButton) end + if RaidFrameConvertToRaidButton then SkinButton(RaidFrameConvertToRaidButton) end + if RaidFrameReadyCheckButton then SkinButton(RaidFrameReadyCheckButton) end + if RaidFrameAddMemberButton then SkinButton(RaidFrameAddMemberButton) end + -- RaidGroup frames and buttons are hidden by modules/raid.lua, no skinning needed + end) + end +end) diff --git a/modules/raid.lua b/modules/raid.lua index bb130302..ccad81fa 100644 --- a/modules/raid.lua +++ b/modules/raid.lua @@ -2,6 +2,52 @@ pfUI:RegisterModule("raid", "vanilla:tbc", function () -- do not go further on disabled UFs if C.unitframes.disable == "1" then return end + -- hide blizzard raid group frames so they don't overlap pfUI raid frames + local function HideBlizzardRaidFrames() + DEFAULT_CHAT_FRAME:AddMessage("|cFFFF6600pfUI-Debug:|r HideBlizzardRaidFrames called") + for i = 1, NUM_RAID_GROUPS do + local frame = _G["RaidGroup"..i] + if frame then + local wasVisible = frame:IsShown() and "visible" or "hidden" + frame:Hide() + frame:UnregisterAllEvents() + frame.Show = function() + DEFAULT_CHAT_FRAME:AddMessage("|cFFFF0000pfUI-Debug:|r RaidGroup"..i..":Show() blocked!") + return + end + if wasVisible == "visible" then + DEFAULT_CHAT_FRAME:AddMessage("|cFFFF6600pfUI-Debug:|r RaidGroup"..i.." was "..wasVisible..", now hidden") + end + else + DEFAULT_CHAT_FRAME:AddMessage("|cFFFF6600pfUI-Debug:|r RaidGroup"..i.." does not exist yet!") + end + end + for i = 1, MAX_RAID_MEMBERS do + local button = _G["RaidGroupButton"..i] + if button then + button:Hide() + button:UnregisterAllEvents() + button.Show = function() return end + end + end + GROUP_REPLACE_PARTY = "1" + end + + -- run once when Blizzard_RaidUI loads + HookAddonOrVariable("Blizzard_RaidUI", function() + DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00pfUI-Debug:|r Blizzard_RaidUI loaded, running hide") + HideBlizzardRaidFrames() + + -- RaidGroupFrame_Update calls :Show() on all RaidGroup frames every update + -- hook it to immediately re-hide them after Blizzard shows them + if RaidGroupFrame_Update then + DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00pfUI-Debug:|r hooking RaidGroupFrame_Update") + hooksecurefunc("RaidGroupFrame_Update", HideBlizzardRaidFrames) + else + DEFAULT_CHAT_FRAME:AddMessage("|cFFFF0000pfUI-Debug:|r RaidGroupFrame_Update not found!") + end + end) + pfUI.uf.raid = CreateFrame("Frame", "pfRaidUpdater", UIParent) local maxraid = tonumber(C.unitframes.maxraid) diff --git a/modules/turtle-wow.lua b/modules/turtle-wow.lua index e33df677..526b58b3 100644 --- a/modules/turtle-wow.lua +++ b/modules/turtle-wow.lua @@ -2,6 +2,44 @@ if not TargetHPText or not TargetHPPercText then return end pfUI:RegisterModule("turtle-wow", "vanilla", function () + -- Turtle WoW's new RaidFrame.lua uses GROUP_REPLACE_PARTY to decide whether to + -- call ShowPartyFrame(). Since pfUI replaces party frames, always set this so + -- RaidOptionsFrame_UpdatePartyFrames never tries to restore the Blizzard frames. + if C.unitframes.disable ~= "1" then + GROUP_REPLACE_PARTY = "1" + end + + -- hide Turtle WoW's new compact GroupFrame (GroupClusterFrame1-8) when pfUI + -- unitframes are active, since pfUI has its own party/raid frames + if C.unitframes.disable ~= "1" then + HookAddonOrVariable("GroupFrame", function() + local function HideGroupFrames() + if GroupFrame then + GroupFrame:Hide() + GroupFrame.Show = function() return end + end + for i = 1, 8 do + local f = _G["GroupClusterFrame"..i] + if f then + f:Hide() + f.Show = function() return end + end + end + if GroupPetsClusterFrame then + GroupPetsClusterFrame:Hide() + GroupPetsClusterFrame.Show = function() return end + end + end + + HideGroupFrames() + + -- GroupFrame_Update shows the cluster frames on every raid/party update + if GroupFrame_Update then + hooksecurefunc("GroupFrame_Update", HideGroupFrames) + end + end) + end + -- custom debuff durations L["debuffs"]["Hand of Reckoning"] = {[0]=3.0} L["debuffs"]['Insect Swarm'] = {[0]=18.0} @@ -299,39 +337,30 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () local initialized = false HookAddonOrVariable("Blizzard_InspectUI", function() - -- one-time setup: skin frame structure on first open hooksecurefunc("InspectFrame_Show", function() + -- break if theres nothing left to do if initialized then return end - -- skin Tab3 and Tab4 positions - local border = GetBorderSize() - if InspectFrameTab3 then - SkinTab(InspectFrameTab3) - InspectFrameTab3:ClearAllPoints() - InspectFrameTab3:SetPoint("LEFT", InspectFrameTab2, "RIGHT", border*2 + 1, 0) - InspectFrameTab3:Hide() - InspectFrameTab3:Show() - end - if InspectFrameTab4 then - SkinTab(InspectFrameTab4) - InspectFrameTab4:ClearAllPoints() - InspectFrameTab4:SetPoint("LEFT", InspectFrameTab3, "RIGHT", border*2 + 1, 0) - InspectFrameTab4:Hide() - InspectFrameTab4:Show() - end + -- adjust ui positions + SkinTab(InspectFrameTab3) + InspectFrameTab3:ClearAllPoints() + InspectFrameTab3:SetPoint("LEFT", InspectFrameTab2, "RIGHT", GetBorderSize()*2 + 1, 0) + TWTalentFrameTab1:SetPoint("TOPLEFT", TWTalentFrameScrollFrame, "TOPLEFT", 2, TWTalentFrameTab1:GetHeight() + 4) - -- skin InspectTalentsFrame container and scrollbar + -- reload text position + InspectFrameTab3:Hide() + InspectFrameTab3:Show() + + -- skin inspect window elements StripTextures(InspectTalentsFrame) StripTextures(TWTalentFrameScrollFrame) SkinScrollbar(TWTalentFrameScrollFrameScrollBar) - - -- skin the 3 talent tree tabs for i = 1, 3 do SkinTab(_G["TWTalentFrameTab"..i]) end - -- skin each talent button (buttons exist in XML already, data arrives later via addon msg) - for i = 1, (MAX_NUM_TALENTS or 100) do + -- skin each talent button + for i = 1, MAX_NUM_TALENTS do local talent = _G["TWTalentFrameTalent" .. i] if talent then StripTextures(talent) @@ -340,17 +369,9 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () end end + -- only run once initialized = true end) - - -- TWTalentFrame_OnShow fires AFTER talent data has arrived via addon messages - -- so this is the right place to fix the tab1 position - hooksecurefunc("TWTalentFrame_OnShow", function() - if TWTalentFrameTab1 then - TWTalentFrameTab1:ClearAllPoints() - TWTalentFrameTab1:SetPoint("TOPLEFT", TWTalentFrameScrollFrame, "TOPLEFT", 2, TWTalentFrameTab1:GetHeight() + 4) - end - end) end) end @@ -4103,4 +4124,4 @@ pfUI:RegisterModule("turtle-wow", "vanilla", function () [92075]="0,320000", [92079]="0,120000", [93061]="0,1", [93088]="0,1", [93092]="37,150", [93093]="37,150", [93094]="2500,10000", [93095]="2500,10000", [93096]="37,150" } -end) \ No newline at end of file +end) diff --git a/skins/blizzard/raidui.lua b/skins/blizzard/raidui.lua new file mode 100644 index 00000000..b2c5b287 --- /dev/null +++ b/skins/blizzard/raidui.lua @@ -0,0 +1,39 @@ +pfUI:RegisterSkin("RaidUI", "vanilla", function () + HookAddonOrVariable("Blizzard_RaidUI", function() + + -- skin each RaidGroup frame (8 groups, each with a label + 5 slots) + for i = 1, NUM_RAID_GROUPS do + local group = _G["RaidGroup"..i] + if group then + StripTextures(group) + CreateBackdrop(group, nil, nil, .75) + + local label = _G["RaidGroup"..i.."Label"] + if label then + label:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + end + end + end + + -- skin each RaidGroupButton (40 members) + for i = 1, MAX_RAID_MEMBERS do + local button = _G["RaidGroupButton"..i] + if button then + StripTextures(button) + CreateBackdrop(button, nil, nil, .75) + + local name = _G["RaidGroupButton"..i.."Name"] + local level = _G["RaidGroupButton"..i.."Level"] + local class = _G["RaidGroupButton"..i.."Class"] + if name then name:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") end + if level then level:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") end + if class then class:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") end + end + end + + -- skin the Add Member and Ready Check buttons on the RaidFrame panel + SkinButton(RaidFrameAddMemberButton) + SkinButton(RaidFrameReadyCheckButton) + + end) +end)