mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
94 lines
3.2 KiB
Lua
94 lines
3.2 KiB
Lua
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local UF = E:GetModule("UnitFrames");
|
|
|
|
--Cache global variables
|
|
--Lua functions
|
|
|
|
--WoW API / Variables
|
|
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")
|
|
frame.MasterLooterIndicator = anchor:CreateTexture(nil, "OVERLAY")
|
|
|
|
anchor:SetWidth(24)
|
|
anchor:SetHeight(12)
|
|
frame.LeaderIndicator:SetWidth(12)
|
|
frame.LeaderIndicator:SetHeight(12)
|
|
frame.AssistantIndicator:SetWidth(12)
|
|
frame.AssistantIndicator:SetHeight(12)
|
|
frame.MasterLooterIndicator:SetWidth(11)
|
|
frame.MasterLooterIndicator:SetHeight(11)
|
|
|
|
frame.LeaderIndicator.PostUpdate = UF.RaidRoleUpdate
|
|
frame.AssistantIndicator.PostUpdate = UF.RaidRoleUpdate
|
|
frame.MasterLooterIndicator.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("MasterLooterIndicator")
|
|
frame:EnableElement("AssistantIndicator")
|
|
end
|
|
|
|
raidRoleFrameAnchor:ClearAllPoints()
|
|
if frame.db.raidRoleIcons.position == "TOPLEFT" then
|
|
raidRoleFrameAnchor:SetPoint("LEFT", frame.Health, "TOPLEFT", 2, 0)
|
|
else
|
|
raidRoleFrameAnchor:SetPoint("RIGHT", frame, "TOPRIGHT", -2, 0)
|
|
end
|
|
elseif frame:IsElementEnabled("LeaderIndicator") then
|
|
raidRoleFrameAnchor:Hide()
|
|
frame:DisableElement("LeaderIndicator")
|
|
frame:DisableElement("MasterLooterIndicator")
|
|
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
|
|
local masterLooter = frame.MasterLooterIndicator
|
|
|
|
if not leader or not masterLooter or not assistant then return; end
|
|
|
|
local db = frame.db
|
|
local isLeader = leader:IsShown()
|
|
local isMasterLooter = masterLooter:IsShown()
|
|
local isAssist = assistant:IsShown()
|
|
|
|
leader:ClearAllPoints()
|
|
assistant:ClearAllPoints()
|
|
masterLooter:ClearAllPoints()
|
|
|
|
if db and db.raidRoleIcons then
|
|
if isLeader and db.raidRoleIcons.position == "TOPLEFT" then
|
|
leader:SetPoint("LEFT", anchor, "LEFT")
|
|
masterLooter:SetPoint("RIGHT", anchor, "RIGHT")
|
|
elseif isLeader and db.raidRoleIcons.position == "TOPRIGHT" then
|
|
leader:SetPoint("RIGHT", anchor, "RIGHT")
|
|
masterLooter:SetPoint("LEFT", anchor, "LEFT")
|
|
elseif isAssist and db.raidRoleIcons.position == "TOPLEFT" then
|
|
assistant:SetPoint("LEFT", anchor, "LEFT")
|
|
masterLooter:SetPoint("RIGHT", anchor, "RIGHT")
|
|
elseif isAssist and db.raidRoleIcons.position == "TOPRIGHT" then
|
|
assistant:SetPoint("RIGHT", anchor, "RIGHT")
|
|
masterLooter:SetPoint("LEFT", anchor, "LEFT")
|
|
elseif isMasterLooter and db.raidRoleIcons.position == "TOPLEFT" then
|
|
masterLooter:SetPoint("LEFT", anchor, "LEFT")
|
|
else
|
|
masterLooter:SetPoint("RIGHT", anchor, "RIGHT")
|
|
end
|
|
end
|
|
end |