initial commit
This commit is contained in:
70
Modules/UnitFrames/Elements/RaidRoleIcons.lua
Normal file
70
Modules/UnitFrames/Elements/RaidRoleIcons.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local UF = E:GetModule('UnitFrames');
|
||||
|
||||
local CreateFrame = CreateFrame
|
||||
|
||||
function UF:Construct_RaidRoleFrames(frame)
|
||||
local anchor = CreateFrame('Frame', nil, frame.RaisedElementParent)
|
||||
frame.LeaderIndicator = anchor:CreateTexture(nil, 'OVERLAY')
|
||||
frame.AssistantIndicator = anchor:CreateTexture(nil, 'OVERLAY')
|
||||
|
||||
anchor:Size(24, 12)
|
||||
frame.LeaderIndicator:Size(12)
|
||||
frame.AssistantIndicator:Size(12)
|
||||
|
||||
frame.LeaderIndicator.PostUpdate = UF.RaidRoleUpdate
|
||||
frame.AssistantIndicator.PostUpdate = UF.RaidRoleUpdate
|
||||
|
||||
return anchor
|
||||
end
|
||||
|
||||
function UF:Configure_RaidRoleIcons(frame)
|
||||
local raidRoleFrameAnchor = frame.RaidRoleFramesAnchor
|
||||
|
||||
if frame.db.raidRoleIcons.enable then
|
||||
raidRoleFrameAnchor:Show()
|
||||
if not frame:IsElementEnabled('LeaderIndicator') then
|
||||
frame:EnableElement('LeaderIndicator')
|
||||
frame:EnableElement('AssistantIndicator')
|
||||
end
|
||||
|
||||
raidRoleFrameAnchor:ClearAllPoints()
|
||||
if frame.db.raidRoleIcons.position == 'TOPLEFT' then
|
||||
raidRoleFrameAnchor:Point('LEFT', frame, 'TOPLEFT', frame.db.raidRoleIcons.xOffset, frame.db.raidRoleIcons.yOffset)
|
||||
else
|
||||
raidRoleFrameAnchor:Point('RIGHT', frame, 'TOPRIGHT', -frame.db.raidRoleIcons.xOffset, frame.db.raidRoleIcons.yOffset)
|
||||
end
|
||||
elseif frame:IsElementEnabled('LeaderIndicator') then
|
||||
raidRoleFrameAnchor:Hide()
|
||||
frame:DisableElement('LeaderIndicator')
|
||||
frame:DisableElement('AssistantIndicator')
|
||||
end
|
||||
end
|
||||
|
||||
function UF:RaidRoleUpdate()
|
||||
local anchor = self:GetParent()
|
||||
local frame = anchor:GetParent():GetParent()
|
||||
local leader = frame.LeaderIndicator
|
||||
local assistant = frame.AssistantIndicator
|
||||
|
||||
if not leader or not assistant then return; end
|
||||
|
||||
local db = frame.db
|
||||
local isLeader = leader:IsShown()
|
||||
local isAssist = assistant:IsShown()
|
||||
|
||||
leader:ClearAllPoints()
|
||||
assistant:ClearAllPoints()
|
||||
|
||||
if db and db.raidRoleIcons then
|
||||
if isLeader and db.raidRoleIcons.position == 'TOPLEFT' then
|
||||
leader:Point('LEFT', anchor, 'LEFT', db.raidRoleIcons.xOffset, db.raidRoleIcons.yOffset)
|
||||
elseif isLeader and db.raidRoleIcons.position == 'TOPRIGHT' then
|
||||
leader:Point('RIGHT', anchor, 'RIGHT', -db.raidRoleIcons.xOffset, db.raidRoleIcons.yOffset)
|
||||
elseif isAssist and db.raidRoleIcons.position == 'TOPLEFT' then
|
||||
assistant:Point('LEFT', anchor, 'LEFT', db.raidRoleIcons.xOffset, db.raidRoleIcons.yOffset)
|
||||
elseif isAssist and db.raidRoleIcons.position == 'TOPRIGHT' then
|
||||
assistant:Point('RIGHT', anchor, 'RIGHT', -db.raidRoleIcons.xOffset, db.raidRoleIcons.yOffset)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user