8ad40722a0
Update nameplate coloring. Fix world map blips
79 lines
2.8 KiB
Lua
79 lines
2.8 KiB
Lua
local E, L, V, P, G = unpack(ElvUI)
|
|
local UFDP = E:NewModule("Enhanced_DetachedPortrait", "AceHook-3.0")
|
|
local UF = E:GetModule("UnitFrames")
|
|
|
|
local function Configure_Portrait(self, frame)
|
|
if frame.unitframeType == "player" or frame.unitframeType == "target" then
|
|
local db = E.db.enhanced.unitframe.detachPortrait[frame.unitframeType]
|
|
|
|
frame.PORTRAIT_DETACHED = frame.USE_PORTRAIT and db.enable and not frame.USE_PORTRAIT_OVERLAY
|
|
frame.PORTRAIT_WIDTH = (frame.USE_PORTRAIT_OVERLAY or frame.PORTRAIT_DETACHED or not frame.USE_PORTRAIT) and 0 or frame.db.portrait.width
|
|
frame.CLASSBAR_WIDTH = frame.UNIT_WIDTH - (frame.BORDER + frame.SPACING) * 2 - frame.PORTRAIT_WIDTH - frame.POWERBAR_OFFSET
|
|
|
|
if frame.USE_PORTRAIT then
|
|
local portrait = frame.Portrait
|
|
|
|
if frame.PORTRAIT_DETACHED then
|
|
if not portrait.Holder or (portrait.Holder and not portrait.Holder.mover) then
|
|
portrait.Holder = CreateFrame("Frame", nil, UIParent)
|
|
portrait.Holder:Size(db.width, db.height)
|
|
|
|
if frame.ORIENTATION == "LEFT" then
|
|
portrait.Holder:Point("RIGHT", frame, "LEFT", -frame.BORDER, 0)
|
|
elseif frame.ORIENTATION == "RIGHT" then
|
|
portrait.Holder:Point("LEFT", frame, "RIGHT", frame.BORDER, 0)
|
|
end
|
|
|
|
portrait:SetInside(portrait.Holder)
|
|
portrait.backdrop:SetOutside(portrait)
|
|
|
|
if frame.unitframeType == "player" then
|
|
E:CreateMover(portrait.Holder, "PlayerPortraitMover", L["Player Portrait"], nil, nil, nil, "ALL,SOLO")
|
|
elseif frame.unitframeType == "target" then
|
|
E:CreateMover(portrait.Holder, "TargetPortraitMover", L["Target Portrait"], nil, nil, nil, "ALL,SOLO")
|
|
end
|
|
else
|
|
portrait.Holder:Size(db.width, db.height)
|
|
portrait:SetInside(portrait.Holder)
|
|
portrait.backdrop:SetOutside(portrait)
|
|
E:EnableMover(portrait.Holder.mover:GetName())
|
|
end
|
|
end
|
|
|
|
if not frame.PORTRAIT_DETACHED and portrait.Holder and portrait.Holder.mover then
|
|
E:DisableMover(portrait.Holder.mover:GetName())
|
|
end
|
|
|
|
self:Configure_HealthBar(frame)
|
|
self:Configure_Power(frame)
|
|
end
|
|
end
|
|
end
|
|
|
|
function UFDP:ToggleState(unit)
|
|
if E.db.enhanced.unitframe.detachPortrait.player.enable or E.db.enhanced.unitframe.detachPortrait.target.enable then
|
|
if not self:IsHooked(UF, "Configure_Portrait") then
|
|
self:SecureHook(UF, "Configure_Portrait", Configure_Portrait)
|
|
end
|
|
|
|
if unit then
|
|
UF:CreateAndUpdateUF(unit)
|
|
end
|
|
else
|
|
UF:CreateAndUpdateUF(unit)
|
|
self:Unhook(UF, "Configure_Portrait")
|
|
end
|
|
end
|
|
|
|
function UFDP:Initialize()
|
|
if not E.private.unitframe.enable then return end
|
|
if not (E.db.enhanced.unitframe.detachPortrait.player.enable or E.db.enhanced.unitframe.detachPortrait.target.enable) then return end
|
|
|
|
self:ToggleState()
|
|
end
|
|
|
|
local function InitializeCallback()
|
|
UFDP:Initialize()
|
|
end
|
|
|
|
E:RegisterModule(UFDP:GetName(), InitializeCallback) |