mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
93f5762a44
update #56 fix #38 fix #69
118 lines
3.9 KiB
Lua
118 lines
3.9 KiB
Lua
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local UF = E:GetModule("UnitFrames");
|
|
|
|
--WoW API / Variables
|
|
local CreateFrame = CreateFrame
|
|
|
|
function UF:Construct_Portrait(frame, type)
|
|
local portrait
|
|
|
|
if type == "texture" then
|
|
local backdrop = CreateFrame("Frame", nil, frame)
|
|
portrait = frame:CreateTexture(nil, "OVERLAY")
|
|
portrait:SetTexCoord(0.15, 0.85, 0.15, 0.85)
|
|
E:SetOutside(backdrop, portrait)
|
|
backdrop:SetFrameLevel(frame:GetFrameLevel())
|
|
E:SetTemplate(backdrop, "Default")
|
|
portrait.backdrop = backdrop
|
|
else
|
|
portrait = CreateFrame("PlayerModel", nil, frame)
|
|
E:CreateBackdrop(portrait, "Default", nil, nil, self.thinBorders, true)
|
|
end
|
|
|
|
portrait.PostUpdate = self.PortraitUpdate
|
|
|
|
portrait.overlay = CreateFrame("Frame", nil, frame)
|
|
portrait.overlay:SetFrameLevel(frame.Health:GetFrameLevel() + 5) --Set to "frame.Health:GetFrameLevel()" if you don"t want portrait cut off.
|
|
|
|
return portrait
|
|
end
|
|
|
|
function UF:Configure_Portrait(frame, dontHide)
|
|
if not frame.VARIABLES_SET then return end
|
|
local db = frame.db
|
|
if frame.Portrait and not dontHide then
|
|
frame.Portrait:Hide()
|
|
frame.Portrait:ClearAllPoints()
|
|
frame.Portrait.backdrop:Hide()
|
|
end
|
|
frame.Portrait = db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D
|
|
|
|
local portrait = frame.Portrait
|
|
if frame.USE_PORTRAIT then
|
|
if not frame:IsElementEnabled("Portrait") then
|
|
frame:EnableElement("Portrait")
|
|
end
|
|
|
|
local color = E.db.unitframe.colors.borderColor
|
|
portrait.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
|
|
|
|
portrait:ClearAllPoints()
|
|
portrait.backdrop:ClearAllPoints()
|
|
if frame.USE_PORTRAIT_OVERLAY then
|
|
if db.portrait.style == "3D" then
|
|
portrait:SetFrameLevel(frame.Health:GetFrameLevel())
|
|
else
|
|
portrait:SetParent(frame.Health)
|
|
end
|
|
|
|
portrait:SetAllPoints(frame.Health)
|
|
portrait:SetAlpha(0.35)
|
|
if not dontHide then
|
|
portrait:Show()
|
|
end
|
|
portrait.backdrop:Hide()
|
|
else
|
|
portrait:SetAlpha(1)
|
|
if not dontHide then
|
|
portrait:Show()
|
|
end
|
|
portrait.backdrop:Show()
|
|
if db.portrait.style == "3D" then
|
|
portrait:SetFrameLevel(frame.Health:GetFrameLevel() - 4) --Make sure portrait is behind Health and Power
|
|
else
|
|
portrait:SetParent(frame)
|
|
end
|
|
|
|
if frame.ORIENTATION == "LEFT" then
|
|
E:Point(portrait.backdrop, "TOPLEFT", frame, "TOPLEFT", frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING)
|
|
|
|
if frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED then
|
|
E:Point(portrait.backdrop, "BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0)
|
|
else
|
|
E:Point(portrait.backdrop, "BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0)
|
|
end
|
|
elseif frame.ORIENTATION == "RIGHT" then
|
|
E:Point(portrait.backdrop, "TOPRIGHT", frame, "TOPRIGHT", -frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING)
|
|
|
|
if frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED then
|
|
E:Point(portrait.backdrop, "BOTTOMLEFT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0)
|
|
else
|
|
E:Point(portrait.backdrop, "BOTTOMLEFT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0)
|
|
end
|
|
end
|
|
|
|
E:SetInside(portrait, portrait.backdrop, frame.BORDER)
|
|
end
|
|
else
|
|
if frame:IsElementEnabled("Portrait") then
|
|
frame:DisableElement("Portrait")
|
|
portrait:Hide()
|
|
portrait.backdrop:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
function UF:PortraitUpdate()
|
|
local db = self:GetParent().db
|
|
if not db then return end
|
|
|
|
local portrait = db.portrait
|
|
if portrait.enable and self:GetParent().USE_PORTRAIT_OVERLAY then
|
|
self:SetAlpha(0)
|
|
self:SetAlpha(0.35)
|
|
else
|
|
self:SetAlpha(1)
|
|
end
|
|
end
|