Files
Andrew6810 60ef8a38af init
2022-10-21 07:09:01 -07:00

83 lines
2.7 KiB
Lua

local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames")
--Lua functions
local random = math.random
--WoW API / Variables
local UnitGroupRolesAssigned = UnitGroupRolesAssigned
local UnitIsConnected = UnitIsConnected
function UF:Construct_RoleIcon(frame)
local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "ARTWORK")
tex:Size(17)
tex:Point("BOTTOM", frame.Health, "BOTTOM", 0, 2)
tex.Override = UF.UpdateRoleIcon
frame:RegisterEvent("UNIT_CONNECTION", UF.UpdateRoleIcon)
return tex
end
local roleIconTextures = {
TANK = E.Media.Textures.Tank,
HEALER = E.Media.Textures.Healer,
DAMAGER = E.Media.Textures.DPS
}
function UF:UpdateRoleIcon(event)
local lfdrole = self.GroupRoleIndicator
if not self.db then return end
local db = self.db.roleIcon
if (not db) or (db and not db.enable) then
lfdrole:Hide()
return
end
local isTank, isHealer, isDamage = UnitGroupRolesAssigned(self.unit)
local role = isTank and "TANK" or isHealer and "HEALER" or isDamage and "DAMAGER" or "NONE"
if self.isForced and role == "NONE" then
local rnd = random(1, 3)
role = rnd == 1 and "TANK" or (rnd == 2 and "HEALER" or (rnd == 3 and "DAMAGER"))
end
-- local shouldHide = ((event == "PLAYER_REGEN_DISABLED" and db.combatHide and true) or false)
if (self.isForced or UnitIsConnected(self.unit)) and ((role == "DAMAGER" and db.damager) or (role == "HEALER" and db.healer) or (role == "TANK" and db.tank)) then
lfdrole:SetTexture(roleIconTextures[role])
-- if not shouldHide then
lfdrole:Show()
-- else
-- lfdrole:Hide()
-- end
else
lfdrole:Hide()
end
end
function UF:Configure_RoleIcon(frame)
local role = frame.GroupRoleIndicator
local db = frame.db
if db.roleIcon.enable then
frame:EnableElement("GroupRoleIndicator")
local attachPoint = self:GetObjectAnchorPoint(frame, db.roleIcon.attachTo)
role:ClearAllPoints()
role:Point(db.roleIcon.position, attachPoint, db.roleIcon.position, db.roleIcon.xOffset, db.roleIcon.yOffset)
role:Size(db.roleIcon.size)
-- if db.roleIcon.combatHide then
-- E:RegisterEventForObject("PLAYER_REGEN_ENABLED", frame, UF.UpdateRoleIcon)
-- E:RegisterEventForObject("PLAYER_REGEN_DISABLED", frame, UF.UpdateRoleIcon)
-- else
-- E:UnregisterEventForObject("PLAYER_REGEN_ENABLED", frame, UF.UpdateRoleIcon)
-- E:UnregisterEventForObject("PLAYER_REGEN_DISABLED", frame, UF.UpdateRoleIcon)
-- end
else
frame:DisableElement("GroupRoleIndicator")
role:Hide()
--Unregister combat hide events
-- E:UnregisterEventForObject("PLAYER_REGEN_ENABLED", frame, UF.UpdateRoleIcon)
-- E:UnregisterEventForObject("PLAYER_REGEN_DISABLED", frame, UF.UpdateRoleIcon)
end
end