mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-22 15:46:56 +00:00
169 lines
7.2 KiB
Lua
169 lines
7.2 KiB
Lua
pfUI:RegisterModule("group", function ()
|
|
-- do not go further on disabled UFs
|
|
if C.unitframes.disable == "1" then return end
|
|
|
|
local default_border = C.appearance.border.default
|
|
if C.appearance.border.groupframes ~= "-1" then
|
|
default_border = C.appearance.border.groupframes
|
|
end
|
|
|
|
local spacing = C.unitframes.group.pspace
|
|
|
|
-- hide blizzard group frames
|
|
for i=1, 4 do
|
|
if _G["PartyMemberFrame" .. i] then
|
|
_G["PartyMemberFrame" .. i]:Hide()
|
|
_G["PartyMemberFrame" .. i].Show = function () return end
|
|
end
|
|
end
|
|
|
|
pfUI.uf.group = CreateFrame("Button","pfGroup",UIParent)
|
|
pfUI.uf.group:Hide()
|
|
|
|
pfUI.uf.group:RegisterEvent("RAID_TARGET_UPDATE")
|
|
pfUI.uf.group:RegisterEvent("PARTY_LEADER_CHANGED")
|
|
pfUI.uf.group:RegisterEvent("PARTY_LOOT_METHOD_CHANGED")
|
|
|
|
pfUI.uf.group:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
pfUI.uf.group:RegisterEvent("PARTY_MEMBERS_CHANGED")
|
|
pfUI.uf.group:RegisterEvent("PARTY_MEMBER_ENABLE")
|
|
pfUI.uf.group:RegisterEvent("PARTY_MEMBER_DISABLE")
|
|
pfUI.uf.group:RegisterEvent("RAID_ROSTER_UPDATE")
|
|
pfUI.uf.group:RegisterEvent("GROUP_ROSTER_UPDATE")
|
|
|
|
pfUI.uf.group:SetScript("OnEvent", function()
|
|
PartyMemberBackground:Hide()
|
|
|
|
for i=1, 4 do
|
|
if C.unitframes.group.hide_in_raid == "1" and UnitInRaid("player") then
|
|
pfUI.uf.group[i]:Hide()
|
|
else
|
|
if event == "RAID_TARGET_UPDATE" or event == "PLAYER_ENTERING_WORLD" or event == "PARTY_MEMBERS_CHANGED" then
|
|
local raidIcon = GetRaidTargetIndex("party" .. i)
|
|
if raidIcon and UnitExists("party" .. i) then
|
|
SetRaidTargetIconTexture(pfUI.uf.group[i].hp.raidIcon.texture, raidIcon)
|
|
pfUI.uf.group[i].hp.raidIcon:Show()
|
|
else
|
|
pfUI.uf.group[i].hp.raidIcon:Hide()
|
|
end
|
|
end
|
|
|
|
if event == "PARTY_LEADER_CHANGED" or event == "PLAYER_ENTERING_WORLD" or event == "PARTY_MEMBERS_CHANGED" then
|
|
if UnitIsPartyLeader("party"..i) then
|
|
pfUI.uf.group[i].hp.leaderIcon:Show()
|
|
else
|
|
pfUI.uf.group[i].hp.leaderIcon:Hide()
|
|
end
|
|
end
|
|
|
|
if event == "PARTY_LOOT_METHOD_CHANGED" or event == "PLAYER_ENTERING_WORLD" or event == "PARTY_MEMBERS_CHANGED" then
|
|
local _, lootmaster = GetLootMethod()
|
|
if lootmaster and pfUI.uf.group[i].id == lootmaster then
|
|
pfUI.uf.group[i].hp.lootIcon:Show()
|
|
else
|
|
pfUI.uf.group[i].hp.lootIcon:Hide()
|
|
end
|
|
end
|
|
|
|
if GetNumPartyMembers() >= i then
|
|
pfUI.uf.group[i]:Show()
|
|
if UnitIsConnected("party"..i) or not UnitName("party"..i) then
|
|
pfUI.uf.group[i]:SetAlpha(1)
|
|
else
|
|
pfUI.uf.group[i]:SetAlpha(.25)
|
|
end
|
|
else
|
|
if pfUI.uf.group[i] then
|
|
pfUI.uf.group[i]:Hide()
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
for i=1, 4 do
|
|
pfUI.uf.group[i] = CreateFrame("Button","pfGroup" .. i,UIParent)
|
|
|
|
pfUI.uf.group[i]:SetWidth(175)
|
|
pfUI.uf.group[i]:SetHeight(40 + 2*default_border + spacing)
|
|
pfUI.uf.group[i]:SetPoint("TOPLEFT", 5, -5 - ((i-1)*55))
|
|
UpdateMovable(pfUI.uf.group[i])
|
|
pfUI.uf.group[i]:Hide()
|
|
pfUI.uf.group[i].id = i
|
|
pfUI.uf.group[i].label = "party"
|
|
|
|
|
|
pfUI.uf.group[i].hp = CreateFrame("Frame",nil, pfUI.uf.group[i])
|
|
pfUI.uf.group[i].hp:SetWidth(175)
|
|
pfUI.uf.group[i].hp:SetHeight(30)
|
|
pfUI.uf.group[i].hp:SetPoint("TOP", 0, 0)
|
|
CreateBackdrop(pfUI.uf.group[i].hp, default_border)
|
|
|
|
pfUI.uf.group[i].hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.group[i].hp)
|
|
pfUI.uf.group[i].hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar")
|
|
pfUI.uf.group[i].hp.bar:SetAllPoints(pfUI.uf.group[i].hp)
|
|
pfUI.uf.group[i].hp.bar:SetMinMaxValues(0, 100)
|
|
|
|
if C.unitframes.custombg == "1" then
|
|
local cr, cg, cb, ca = strsplit(",", C.unitframes.custombgcolor)
|
|
cr, cg, cb = tonumber(cr), tonumber(cg), tonumber(cb)
|
|
pfUI.uf.group[i].hp.bar.texture = pfUI.uf.group[i].hp.bar:CreateTexture(nil,"BACKGROUND")
|
|
pfUI.uf.group[i].hp.bar.texture:SetTexture(cr,cg,cb,ca)
|
|
pfUI.uf.group[i].hp.bar.texture:SetAllPoints(pfUI.uf.group[i].hp.bar)
|
|
end
|
|
|
|
pfUI.uf.group[i].power = CreateFrame("Frame",nil, pfUI.uf.group[i])
|
|
pfUI.uf.group[i].power:SetWidth(175)
|
|
pfUI.uf.group[i].power:SetHeight(10)
|
|
pfUI.uf.group[i].power:SetPoint("BOTTOM", 0, 0)
|
|
CreateBackdrop(pfUI.uf.group[i].power, default_border)
|
|
|
|
pfUI.uf.group[i].power.bar = CreateFrame("StatusBar", nil, pfUI.uf.group[i].power)
|
|
pfUI.uf.group[i].power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar")
|
|
pfUI.uf.group[i].power.bar:SetAllPoints(pfUI.uf.group[i].power)
|
|
pfUI.uf.group[i].power.bar:SetMinMaxValues(0, 100)
|
|
|
|
pfUI.uf:CreatePortrait(pfUI.uf.group[i], C.unitframes.group.portrait, spacing)
|
|
|
|
pfUI.uf.group[i].caption = pfUI.uf.group[i]:CreateFontString("Status", "OVERLAY", "GameFontNormal")
|
|
pfUI.uf.group[i].caption:SetFont(pfUI.font_square, C.global.font_size, "OUTLINE")
|
|
pfUI.uf.group[i].caption:ClearAllPoints()
|
|
pfUI.uf.group[i].caption:SetParent(pfUI.uf.group[i].hp.bar)
|
|
pfUI.uf.group[i].caption:SetPoint("LEFT",pfUI.uf.group[i].hp.bar, "LEFT", 10, 0)
|
|
pfUI.uf.group[i].caption:SetJustifyH("LEFT")
|
|
pfUI.uf.group[i].caption:SetFontObject(GameFontWhite)
|
|
|
|
pfUI.uf.group[i].hp.leaderIcon = CreateFrame("Frame",nil,pfUI.uf.group[i].hp.bar)
|
|
pfUI.uf.group[i].hp.leaderIcon:SetWidth(10)
|
|
pfUI.uf.group[i].hp.leaderIcon:SetHeight(10)
|
|
pfUI.uf.group[i].hp.leaderIcon.texture = pfUI.uf.group[i].hp.leaderIcon:CreateTexture(nil,"BACKGROUND")
|
|
pfUI.uf.group[i].hp.leaderIcon.texture:SetTexture("Interface\\GROUPFRAME\\UI-Group-LeaderIcon")
|
|
pfUI.uf.group[i].hp.leaderIcon.texture:SetAllPoints(pfUI.uf.group[i].hp.leaderIcon)
|
|
pfUI.uf.group[i].hp.leaderIcon:SetPoint("TOPLEFT", pfUI.uf.group[i].hp, "TOPLEFT", -4, 4)
|
|
pfUI.uf.group[i].hp.leaderIcon:Hide()
|
|
|
|
pfUI.uf.group[i].hp.lootIcon = CreateFrame("Frame",nil,pfUI.uf.group[i].hp.bar)
|
|
pfUI.uf.group[i].hp.lootIcon:SetWidth(10)
|
|
pfUI.uf.group[i].hp.lootIcon:SetHeight(10)
|
|
pfUI.uf.group[i].hp.lootIcon.texture = pfUI.uf.group[i].hp.lootIcon:CreateTexture(nil,"BACKGROUND")
|
|
pfUI.uf.group[i].hp.lootIcon.texture:SetTexture("Interface\\GROUPFRAME\\UI-Group-MasterLooter")
|
|
pfUI.uf.group[i].hp.lootIcon.texture:SetAllPoints(pfUI.uf.group[i].hp.lootIcon)
|
|
pfUI.uf.group[i].hp.lootIcon:SetPoint("TOPLEFT", pfUI.uf.group[i].hp, "LEFT", -4, 4)
|
|
pfUI.uf.group[i].hp.lootIcon:Hide()
|
|
|
|
pfUI.uf.group[i].hp.raidIcon = CreateFrame("Frame",nil,pfUI.uf.group[i].hp.bar.bar)
|
|
pfUI.uf.group[i].hp.raidIcon:SetFrameStrata("HIGH")
|
|
pfUI.uf.group[i].hp.raidIcon:SetWidth(24)
|
|
pfUI.uf.group[i].hp.raidIcon:SetHeight(24)
|
|
pfUI.uf.group[i].hp.raidIcon.texture = pfUI.uf.group[i].hp.raidIcon:CreateTexture(nil,"ARTWORK")
|
|
pfUI.uf.group[i].hp.raidIcon.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\raidicons")
|
|
pfUI.uf.group[i].hp.raidIcon.texture:SetAllPoints(pfUI.uf.group[i].hp.raidIcon)
|
|
pfUI.uf.group[i].hp.raidIcon:SetPoint("TOP", pfUI.uf.group[i].hp, "TOP", -4, 4)
|
|
pfUI.uf.group[i].hp.raidIcon:Hide()
|
|
|
|
pfUI.uf.group[i]:RegisterForClicks('LeftButtonUp', 'RightButtonUp', 'MiddleButtonUp', 'Button4Up', 'Button5Up')
|
|
|
|
pfUI.uf:CreateUnit(pfUI.uf.group[i])
|
|
end
|
|
end)
|