Files
ElvUIModernized/ElvUI/Modules/UnitFrames/Elements/RaidRoleIcons.lua
T
2018-02-19 21:03:21 -06:00

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