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.

69 lines
2.4 KiB

local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE)
local B = SLE.BlizzRaid
--GLOBALS: CreateFrame, hooksecurefunc
local _G = _G
local UnitName = UnitName
local RaiseFrameLevel = RaiseFrameLevel
--Actually make dem icons
function B:CreateAndUpdateIcons()
if not SLE.initialized then return end
local members = GetNumGroupMembers()
for i = 1, members do
local frame = _G['RaidGroupButton'..i]
--if the frame doesn't exist then wait a bit
if not frame or (frame and not frame.subframes) or not E.db.sle.raidmanager then E:Delay(1, B.CreateAndUpdateIcons); return end
--if level is shown then attach icons there, otherwise to class
local parent = E.db.sle.raidmanager.level and frame.subframes.level or frame.subframes.class
if E.db.sle.raidmanager.level then
frame.subframes.level:Show()
else
frame.subframes.level:Hide()
end
--if the icon is not created for this frame then make that shit
if not frame.sleicon then
frame.sleicon = CreateFrame('Frame', nil, frame)
frame.sleicon:SetSize(14, 14)
RaiseFrameLevel(frame.sleicon)
frame.sleicon.texture = frame.sleicon:CreateTexture(nil, 'OVERLAY')
frame.sleicon.texture:SetAllPoints(frame.sleicon)
end
frame.sleicon:SetPoint('RIGHT', parent, 'LEFT', 2, 0)
--Deciding on what texture to use
local unit = IsInRaid() and 'raid' or 'party'
local role = UnitGroupRolesAssigned(unit..i)
local name = UnitName(unit..i)
4 years ago
local rolePath = SLE.rolePaths[E.db.sle.unitframes.roleIcons.icons] or SLE.rolePaths['ElvUI']
local texture = ''
4 years ago
if (role and role ~= 'NONE') and name and E.db.sle.unitframes.roleIcons.enable and E.db.sle.raidmanager.roles then
-- TODO: Some reason name is assigned but not used?
-- name = (realm and realm ~= '') and name..'-'..realm or name ..'-'..PLAYER_REALM
texture = rolePath[role]
end
frame.sleicon.texture:SetTexture(texture)
end
end
--When raid manager is loaded. do stuff
function B:RaidLoaded(event, addon)
if addon == 'Blizzard_RaidUI' then
B:CreateAndUpdateIcons()
hooksecurefunc('RaidGroupFrame_Update', B.CreateAndUpdateIcons)
self:UnregisterEvent(event)
end
end
--if oRA is not present, then we are doing shit
if not SLE._Compatibility['oRA3'] then
B:RegisterEvent('ADDON_LOADED', 'RaidLoaded')
end
function B:Initialize()
if not SLE.initialized then return end
end
SLE:RegisterModule(B:GetName())