Files
ElvUIModernized/ElvUI/Modules/UnitFrames/Elements/Portrait.lua
T
Bunny67 4d1d76791c update
2018-06-10 01:36:50 +03:00

119 lines
3.9 KiB
Lua

local E, L, V, P, G = unpack(ElvUI);
local UF = E:GetModule("UnitFrames");
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);
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", frame.unit);
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() + 1);
else
portrait:SetParent(frame.Health);
end
--portrait:SetAllPoints(frame.Health);
portrait:SetWidth(frame.Health:GetWidth())
portrait:SetHeight(frame.Health:GetHeight())
portrait:SetPoint("TOPLEFT", frame.Health, "TOPLEFT", 0, -frame.BORDER)
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);
else
portrait:SetParent(frame.Health);
end
if(frame.ORIENTATION == "LEFT") then
portrait.backdrop:SetPoint("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
portrait.backdrop:SetPoint("BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0);
else
portrait.backdrop:SetPoint("BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0);
end
elseif(frame.ORIENTATION == "RIGHT") then
portrait.backdrop:SetPoint("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
portrait.backdrop:SetPoint("BOTTOMLEFT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0);
else
portrait.backdrop:SetPoint("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