Quantcast

try to fix player frame resizing shit

Repooc [03-24-13 - 16:34]
try to fix player frame resizing shit
Filename
ElvUI_SLE/modules/unitframes/units/player.lua
diff --git a/ElvUI_SLE/modules/unitframes/units/player.lua b/ElvUI_SLE/modules/unitframes/units/player.lua
index 22e8548..faf6b22 100755
--- a/ElvUI_SLE/modules/unitframes/units/player.lua
+++ b/ElvUI_SLE/modules/unitframes/units/player.lua
@@ -1,510 +1,1201 @@
-local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
-if not E.private.unitframe.enable then return end
-
-local UF = E:GetModule('UnitFrames');
-local SLE = E:GetModule('SLE');
-
-
---Setting the variable for using classbar. Elv's function.
-local CAN_HAVE_CLASSBAR = (E.myclass == "PALADIN" or E.myclass == "DRUID" or E.myclass == "DEATHKNIGHT" or E.myclass == "WARLOCK" or E.myclass == "PRIEST" or E.myclass == "MONK" or E.myclass == 'MAGE')
-
---Function to move damn combat indicator to topright part of the frame. Maybe i should create an option to make it placeble everywhere.
-function UF:Update_CombatIndicator()
-	local CombatText = ElvUF_Player.Combat
-	if E.db.sle.combatico.pos == "NONE" then
-		CombatText:ClearAllPoints()
-	else
-		local x, y = UF:GetPositionOffset(E.db.sle.combatico.pos)
-		CombatText:ClearAllPoints()
-		CombatText:Point(E.db.sle.combatico.pos, ElvUF_Player.Health, E.db.sle.combatico.pos, x, x)
-	end
-	SLE:UnregisterEvent("PLAYER_REGEN_DISABLED")
-end
-
-UF.Update_PlayerFrameSLE = UF.Update_PlayerFrame
-function UF:Update_PlayerFrame(frame, db)
-	UF:Update_PlayerFrameSLE(frame, db)
-
-	local health = frame.Health
-	local power = frame.Power
-
-	local BORDER = E.Border
-	local SPACING = E.Spacing
-	local SHADOW_SPACING = E.PixelMode and 3 or 4
-	local UNIT_WIDTH = db.width
-	local UNIT_HEIGHT = db.height
-
-	local USE_POWERBAR = db.power.enable
-	--local USE_MINI_POWERBAR = db.power.width ~= 'fill' and USE_POWERBAR
-	local USE_INSET_POWERBAR = db.power.width == 'inset' and USE_POWERBAR
-	local USE_MINI_POWERBAR = db.power.width == 'spaced' and USE_POWERBAR
-	local USE_POWERBAR_OFFSET = db.power.offset ~= 0 and USE_POWERBAR
-	local POWERBAR_OFFSET = db.power.offset
-	local POWERBAR_HEIGHT = db.power.height
-	local POWERBAR_WIDTH = db.width - (BORDER*2)
-
-	local USE_CLASSBAR = db.classbar.enable and CAN_HAVE_CLASSBAR
-	local USE_MINI_CLASSBAR = db.classbar.fill == "spaced" and USE_CLASSBAR
-	local CLASSBAR_HEIGHT = db.classbar.height
-	local CLASSBAR_WIDTH = db.width - (BORDER*2)
-
-	local USE_PORTRAIT = db.portrait.enable
-	local USE_PORTRAIT_OVERLAY = db.portrait.overlay and USE_PORTRAIT
-	local PORTRAIT_WIDTH = db.portrait.width
-
-	local unit = self.unit
-	--[[
-	--Power Text
-	if E.db.unitframe.units.player.fixTo == "power" then
-		local x, y = self:GetPositionOffset(db.power.position)
-		power.value:ClearAllPoints()
-		power.value:Point(db.power.position, frame.Power, db.power.position, x, y)
-		frame:Tag(power.value, db.power.text_format)
-	end
-	]]
-	if not E.db.unitframe.units.player.classbar.offset then return end --Checking for offset option enabled
-	--All this crap is needed to be copied from Elv's player.lua to avoid graphical bugs
-	--Adjust some variables
-	do
-		if not USE_POWERBAR then
-			POWERBAR_HEIGHT = 0
-		end
-
-		if USE_PORTRAIT_OVERLAY or not USE_PORTRAIT then
-			PORTRAIT_WIDTH = 0
-		end
-
-		if USE_PORTRAIT then
-			CLASSBAR_WIDTH = (UNIT_WIDTH - (BORDER*2)) - PORTRAIT_WIDTH
-		end
-
-		if USE_POWERBAR_OFFSET then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH - POWERBAR_OFFSET
-		end
-
-		if USE_MINI_POWERBAR then
-			POWERBAR_WIDTH = POWERBAR_WIDTH / 2
-		end
-	end
-	--End of needed copy.
-
-	--Classbar positioning
-	if USE_CLASSBAR then
-		local DEPTH
-		if USE_MINI_CLASSBAR then
-			DEPTH = -(BORDER+(CLASSBAR_HEIGHT/2))
-		else
-			DEPTH = -(BORDER+SPACING)
-		end
-
-		if USE_POWERBAR_OFFSET then
-			health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER+POWERBAR_OFFSET), DEPTH)
-		elseif USE_POWERBAR_OFFSET and E.db.unitframe.units.player.power.offset == 0 then
-			health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER+POWERBAR_OFFSET), DEPTH)
-		else
-			health:Point("TOPRIGHT", frame, "TOPRIGHT", -BORDER, DEPTH)
-		end
-
-		health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH+BORDER, DEPTH)
-	end
-
-	--Classbars
-	if E.myclass == "PALADIN" then
-		local bars = frame.HolyPower
-		frame.ClassBar = bars
-		bars:ClearAllPoints()
-
-		local MAX_HOLY_POWER = 5
-
-		if USE_MINI_CLASSBAR then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * (MAX_HOLY_POWER - 1) / MAX_HOLY_POWER
-			bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
-			bars:SetFrameStrata("MEDIUM")
-		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) + BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
-			bars:SetFrameStrata("LOW")
-		end
-		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
-			for i = 1, MAX_HOLY_POWER do
-			bars[i]:SetHeight(bars:GetHeight())
-			bars[i]:SetWidth(E:Scale(bars:GetWidth() - (E.PixelMode and 4 or 2))/MAX_HOLY_POWER)
-			bars[i]:GetStatusBarTexture():SetHorizTile(false)
-			bars[i]:ClearAllPoints()
-			if i == 1 then
-				bars[i]:SetPoint("LEFT", bars)
-			else
-				if USE_MINI_CLASSBAR then
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+2, 0)
-				else
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
-				end
-			end
-
-			if not USE_MINI_CLASSBAR then
-				bars[i].backdrop:Hide()
-			else
-				bars[i].backdrop:Show()
-			end
-			bars[i]:SetStatusBarColor(unpack(ElvUF.colors.holyPower))
-		end
-
-		if not USE_MINI_CLASSBAR then
-			bars.backdrop:Show()
-		else
-			bars.backdrop:Hide()
-		end
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('HolyPower') then
-			frame:EnableElement('HolyPower')
-			bars:Show()
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('HolyPower') then
-			frame:DisableElement('HolyPower')
-			bars:Hide()
-		end
-	elseif E.myclass == 'PRIEST' then
-		local bars = frame.ShadowOrbs
-		frame.ClassBar = bars
-		bars:ClearAllPoints()
-		if USE_MINI_CLASSBAR then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * (PRIEST_BAR_NUM_ORBS - 1) / PRIEST_BAR_NUM_ORBS
-			bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
-			bars:SetFrameStrata("MEDIUM")
-		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
-			bars:SetFrameStrata("LOW")
-		end
-
-		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
-			for i = 1, PRIEST_BAR_NUM_ORBS do
-			bars[i]:SetHeight(bars:GetHeight())
-			bars[i]:SetWidth((bars:GetWidth() - 2)/PRIEST_BAR_NUM_ORBS)
-			bars[i]:GetStatusBarTexture():SetHorizTile(false)
-			bars[i]:ClearAllPoints()
-			if i == 1 then
-				bars[i]:SetPoint("LEFT", bars)
-			else
-				if USE_MINI_CLASSBAR then
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+8, 0)
-				else
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
-				end
-			end
-
-			if not USE_MINI_CLASSBAR then
-				bars[i].backdrop:Hide()
-			else
-				bars[i].backdrop:Show()
-			end
-			bars[i]:SetStatusBarColor(unpack(ElvUF.colors.shadowOrbs))
-		end
-
-		if not USE_MINI_CLASSBAR then
-			bars.backdrop:Show()
-		else
-			bars.backdrop:Hide()
-		end
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('ShadowOrbs') then
-			frame:EnableElement('ShadowOrbs')
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('ShadowOrbs') then
-			frame:DisableElement('ShadowOrbs')
-			bars:Hide()
-		end
-	elseif E.myclass == 'MAGE' then
-		local bars = frame.ArcaneChargeBar
-		frame.ClassBar = bars
-		bars:ClearAllPoints()
-		if USE_MINI_CLASSBAR then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * (UF['classMaxResourceBar'][E.myclass] - 1) / UF['classMaxResourceBar'][E.myclass]
-			bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 12), (db.classbar.yOffset or 0))
-			bars:SetFrameStrata("MEDIUM")
-		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
-			bars:SetFrameStrata("LOW")
-		end
-
-		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
-		local maxBars = UF['classMaxResourceBar'][E.myclass]
-		for i = 1, maxBars do
-			bars[i]:SetHeight(bars:GetHeight())
-			bars[i]:SetWidth((bars:GetWidth() - (maxBars - 1)) / maxBars)
-				bars[i]:GetStatusBarTexture():SetHorizTile(false)
-			bars[i]:ClearAllPoints()
-			if i == 1 then
-				bars[i]:SetPoint("LEFT", bars)
-			else
-				if USE_MINI_CLASSBAR then
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+2, 0)
-				else
-					bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
-				end
-			end
-
-			bars[i]:SetStatusBarColor(unpack(ElvUF.colors.arcaneCharges))
-			bars[i].bg:SetTexture(unpack(ElvUF.colors.arcaneCharges))
-
-			if not USE_MINI_CLASSBAR then
-				bars[i].backdrop:Hide()
-			else
-				bars[i].backdrop:Show()
-			end
-		end
-
-		if not USE_MINI_CLASSBAR then
-			bars.backdrop:Show()
-		else
-			bars.backdrop:Hide()
-		end
-			if USE_CLASSBAR and not frame:IsElementEnabled('ArcaneChargeBar') then
-			frame:EnableElement('ArcaneChargeBar')
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('ArcaneChargeBar') then
-			frame:DisableElement('ArcaneChargeBar')
-		end
-	elseif E.myclass == "WARLOCK" then
-		local bars = frame.ShardBar
-		frame.ClassBar = bars
-		bars:ClearAllPoints()
-		if USE_MINI_CLASSBAR then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2 / 3
-			bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
-			bars:SetFrameStrata("MEDIUM")
-		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) + (E.PixelMode and 0 or (BORDER + SPACING)))
-			bars:SetFrameStrata("LOW")
-		end
-		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
-
-		if not USE_MINI_CLASSBAR then
-			bars.backdrop:Show()
-		else
-			bars.backdrop:Hide()
-		end
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('ShardBar') then
-			frame:EnableElement('ShardBar')
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('ShardBar') then
-			frame:DisableElement('ShardBar')
-			bars:Hide()
-		end
-	elseif E.myclass == 'MONK' then
-		local bars = frame.Harmony
-		frame.ClassBar = bars
-		bars:ClearAllPoints()
-		if USE_MINI_CLASSBAR then
-			bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
-			bars:SetFrameStrata("MEDIUM")
-		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)) )
-			bars:SetFrameStrata("LOW")
-		end
-		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
-
-		if not USE_MINI_CLASSBAR then
-			bars.backdrop:Show()
-		else
-			bars.backdrop:Hide()
-		end
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('Harmony') then
-			frame:EnableElement('Harmony')
-			bars:Show()
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('Harmony') then
-			frame:DisableElement('Harmony')
-			bars:Hide()
-		end
-	elseif E.myclass == "DEATHKNIGHT" then
-		local runes = frame.Runes
-		frame.ClassBar = runes
-		runes:ClearAllPoints()
-		if USE_MINI_CLASSBAR then
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * 4/5
-			runes:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 8), (db.classbar.yOffset or 0))
-			runes:SetFrameStrata("MEDIUM")
-		else
-			runes:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
-			runes:SetFrameStrata("LOW")
-		end
-		runes:Width(CLASSBAR_WIDTH)
-		runes:Height(CLASSBAR_HEIGHT - (BORDER*2))
-
-		for i = 1, 6 do
-			runes[i]:SetHeight(runes:GetHeight())
-			runes[i]:SetWidth(E:Scale(runes:GetWidth() - 5) / 6)
-			if USE_MINI_CLASSBAR then
-				runes[i].backdrop:Show()
-			else
-				runes[i].backdrop:Hide()
-			end
-
-			runes[i]:ClearAllPoints()
-			if i == 1 then
-				runes[i]:SetPoint("LEFT", runes)
-			else
-				if USE_MINI_CLASSBAR then
-					runes[i]:Point("LEFT", runes[i-1], "RIGHT", 1+(BORDER*2)+2, 0)
-				else
-					runes[i]:Point("LEFT", runes[i-1], "RIGHT", 1, 0)
-				end
-			end
-
-			if not USE_MINI_CLASSBAR then
-				runes[i].backdrop:Hide()
-			else
-				runes[i].backdrop:Show()
-			end
-		end
-
-		if not USE_MINI_CLASSBAR then
-			runes.backdrop:Show()
-		else
-			runes.backdrop:Hide()
-		end
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('Runes') then
-			frame:EnableElement('Runes')
-			runes:Show()
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('Runes') then
-			frame:DisableElement('Runes')
-			runes:Hide()
-			RuneFrame.Show = RuneFrame.Hide
-			RuneFrame:Hide()
-		end
-		if runes.UpdateAllRuneTypes then
-			runes.UpdateAllRuneTypes(frame) --colors update
-		end
-	elseif E.myclass == "DRUID" then
-		local eclipseBar = frame.EclipseBar
-		frame.ClassBar = eclipseBar
-		eclipseBar:ClearAllPoints()
-		if not USE_MINI_CLASSBAR then
-			eclipseBar:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
-			eclipseBar:SetFrameStrata("LOW")
-		else
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2/3
-			eclipseBar:Point("LEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +(BORDER*2 + 4), (db.classbar.yOffset or 0))
-			eclipseBar:SetFrameStrata("MEDIUM")
-		end
-			eclipseBar:Width(CLASSBAR_WIDTH)
-		eclipseBar:Height(CLASSBAR_HEIGHT - (BORDER*2))
-
-		--?? Apparent bug fix for the width after in-game settings change
-		eclipseBar.LunarBar:SetMinMaxValues(0, 0)
-		eclipseBar.SolarBar:SetMinMaxValues(0, 0)
-		eclipseBar.LunarBar:SetStatusBarColor(unpack(ElvUF.colors.eclipseBar[1]))
-		eclipseBar.SolarBar:SetStatusBarColor(unpack(ElvUF.colors.eclipseBar[2]))
-		eclipseBar.LunarBar:Size(CLASSBAR_WIDTH, CLASSBAR_HEIGHT - (BORDER*2))
-		eclipseBar.SolarBar:Size(CLASSBAR_WIDTH, CLASSBAR_HEIGHT - (BORDER*2))
-
-		if USE_CLASSBAR and not frame:IsElementEnabled('EclipseBar') then
-			frame:EnableElement('EclipseBar')
-			eclipseBar:Show()
-		elseif not USE_CLASSBAR and frame:IsElementEnabled('EclipseBar') then
-			frame:DisableElement('EclipseBar')
-			eclipseBar:Hide()
-		end
-	end
-
-	frame:UpdateAllElements()
-end
-
-UF.UpdatePlayerFrameAnchorsSLE = UF.UpdatePlayerFrameAnchors
-function UF:UpdatePlayerFrameAnchors(frame, isShown)
-	UF:UpdatePlayerFrameAnchorsSLE(frame, isShown)
-
-	if E.db.sle == nil then E.db.sle = {} end
-
-	local db = E.db['unitframe']['units'].player
-	local health = frame.Health
-	local PORTRAIT_WIDTH = db.portrait.width
-	local CLASSBAR_HEIGHT = db.classbar.height
-	local USE_CLASSBAR = db.classbar.enable
-	local USE_MINI_CLASSBAR = db.classbar.fill == "spaced" and USE_CLASSBAR
-	local USE_PORTRAIT = db.portrait.enable
-	local USE_PORTRAIT_OVERLAY = db.portrait.overlay and USE_PORTRAIT
-
-	if E.db.unitframe.units.player.classbar.offset then
-		local DEPTH
-		if USE_MINI_CLASSBAR then
-			DEPTH = -(E:Scale(2)+(CLASSBAR_HEIGHT/2))
-		else
-			DEPTH = -(E:Scale(2))
-		end
-
-		if not USE_MINI_CLASSBAR and (USE_PORTRAIT and not USE_PORTRAIT_OVERLAY) then
-			health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH + 2, DEPTH)
-		end
-	end
-
-	if E.myclass == "DRUID" then
-		UF:EclipseTextSLE()
-	end
-
-	if E.myclass == "WARLOCK" then
-		UF:DFTextSLE()
-	end
-end
-
-function UF:ClassbarTextSLE()
-	if E.myclass == "DRUID" then
-		UF:EclipseTextSLE()
-	elseif E.myclass == "WARLOCK" then
-		UF:DFTextSLE()
-	end
-end
-
-function UF:EclipseTextSLE()
-	local eclipseBar = ElvUF_Player.EclipseBar
-	local spower = UnitPower( PlayerFrame.unit, SPELL_POWER_ECLIPSE );
-	if E.db.sle.powtext then
-		eclipseBar.powtext:SetText(spower)
-	else
-		eclipseBar.powtext:SetText('')
-	end
-end
-
-function UF:DFTextSLE()
-	local ShardBar = ElvUF_Player.ShardBar
-	local dfpower = UnitPower( PlayerFrame.unit, SPELL_POWER_DEMONIC_FURY );
-	local hasspec = GetSpecialization(false, false)
-	if hasspec == nil then return end
-	local index = select(1, GetSpecializationInfo(GetSpecialization(false, false, active)), false, false)
-	if index == 266 then --This crap is checking the spec.
-		if E.db.sle.powtext then
-			ShardBar.powtext:SetText(dfpower)
-			if E.db.unitframe.units.player.classbar.fill == "spaced" then
-				ShardBar.powtext:ClearAllPoints()
-				ShardBar.powtext:SetPoint("LEFT", ShardBar, "RIGHT")
-			else
-				ShardBar.powtext:ClearAllPoints()
-				ShardBar.powtext:SetPoint("CENTER", ShardBar, "CENTER")
-			end
-		else
-			ShardBar.powtext:SetText('')
-		end
-	else
-		ShardBar.powtext:SetText('')
-	end
-end
-
---Text for druid eclipse bar
-if E.myclass == "DRUID" then
-	local eclipseBar = ElvUF_Player.EclipseBar
-	local lunarBar = eclipseBar.LunarBar
-
-	eclipseBar.powtext = lunarBar:CreateFontString(nil, 'OVERLAY')
-	eclipseBar.powtext:SetPoint("CENTER", eclipseBar, "CENTER")
-	eclipseBar.powtext:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE")
-end
-
-if E.myclass == "WARLOCK" then
-	local ShardBar = ElvUF_Player.ShardBar
-	local dfbar = select(2, ShardBar:GetChildren())
-
-	ShardBar.powtext = dfbar:CreateFontString(nil, 'OVERLAY')
-	ShardBar.powtext:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE")
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+if not E.private.unitframe.enable then return end
+
+local UF = E:GetModule('UnitFrames');
+local SLE = E:GetModule('SLE');
+
+
+--Setting the variable for using classbar. Elv's function.
+local CAN_HAVE_CLASSBAR = (E.myclass == "PALADIN" or E.myclass == "DRUID" or E.myclass == "DEATHKNIGHT" or E.myclass == "WARLOCK" or E.myclass == "PRIEST" or E.myclass == "MONK" or E.myclass == 'MAGE')
+
+--Function to move damn combat indicator to topright part of the frame. Maybe i should create an option to make it placeble everywhere.
+function UF:Update_CombatIndicator()
+	local CombatText = ElvUF_Player.Combat
+	if E.db.sle.combatico.pos == "NONE" then
+		CombatText:ClearAllPoints()
+	else
+		local x, y = UF:GetPositionOffset(E.db.sle.combatico.pos)
+		CombatText:ClearAllPoints()
+		CombatText:Point(E.db.sle.combatico.pos, ElvUF_Player.Health, E.db.sle.combatico.pos, x, x)
+	end
+	SLE:UnregisterEvent("PLAYER_REGEN_DISABLED")
+end
+
+UF.Update_PlayerFrameSLE = UF.Update_PlayerFrame
+function UF:Update_PlayerFrame(frame, db)
+	UF:Update_PlayerFrameSLE(frame, db)
+	if not E.db.unitframe.units.player.classbar.offset then return end --Checking for offset option enabled
+	frame.db = db
+
+	if frame.Portrait then
+		frame.Portrait:Hide()
+		frame.Portrait:ClearAllPoints()
+		frame.Portrait.backdrop:Hide()
+	end
+	frame.Portrait = db.portrait.style == '2D' and frame.Portrait2D or frame.Portrait3D
+	frame:RegisterForClicks(self.db.targetOnMouseDown and 'AnyDown' or 'AnyUp')
+	local BORDER = E.Border
+	local SPACING = E.Spacing
+	local SHADOW_SPACING = E.PixelMode and 3 or 4
+	local UNIT_WIDTH = db.width
+	local UNIT_HEIGHT = db.height
+
+	local USE_POWERBAR = db.power.enable
+	--local USE_MINI_POWERBAR = db.power.width ~= 'fill' and USE_POWERBAR
+	local USE_INSET_POWERBAR = db.power.width == 'inset' and USE_POWERBAR
+	local USE_MINI_POWERBAR = db.power.width == 'spaced' and USE_POWERBAR
+	local USE_POWERBAR_OFFSET = db.power.offset ~= 0 and USE_POWERBAR
+	local POWERBAR_OFFSET = db.power.offset
+	local POWERBAR_HEIGHT = db.power.height
+	local POWERBAR_WIDTH = db.width - (BORDER*2)
+
+	local USE_CLASSBAR = db.classbar.enable and CAN_HAVE_CLASSBAR
+	local USE_MINI_CLASSBAR = db.classbar.fill == "spaced" and USE_CLASSBAR
+	local CLASSBAR_HEIGHT = db.classbar.height
+	local CLASSBAR_WIDTH = db.width - (BORDER*2)
+
+	local USE_PORTRAIT = db.portrait.enable
+	local USE_PORTRAIT_OVERLAY = db.portrait.overlay and USE_PORTRAIT
+	local PORTRAIT_WIDTH = db.portrait.width
+
+	local unit = self.unit
+
+	frame.colors = ElvUF.colors
+	frame:Size(UNIT_WIDTH, UNIT_HEIGHT)
+	_G[frame:GetName()..'Mover']:Size(frame:GetSize())
+	--[[
+	--Power Text
+	if E.db.unitframe.units.player.fixTo == "power" then
+		local x, y = self:GetPositionOffset(db.power.position)
+		power.value:ClearAllPoints()
+		power.value:Point(db.power.position, frame.Power, db.power.position, x, y)
+		frame:Tag(power.value, db.power.text_format)
+	end
+	]]
+
+	--All this crap is needed to be copied from Elv's player.lua to avoid graphical bugs
+	--Adjust some variables
+	do
+		if not USE_POWERBAR then
+			POWERBAR_HEIGHT = 0
+		end
+
+		if USE_PORTRAIT_OVERLAY or not USE_PORTRAIT then
+			PORTRAIT_WIDTH = 0
+		end
+
+		if USE_PORTRAIT then
+			CLASSBAR_WIDTH = (UNIT_WIDTH - (BORDER*2)) - PORTRAIT_WIDTH
+		end
+
+		if USE_POWERBAR_OFFSET then
+			CLASSBAR_WIDTH = CLASSBAR_WIDTH - POWERBAR_OFFSET
+		end
+
+		if USE_MINI_POWERBAR then
+			POWERBAR_WIDTH = POWERBAR_WIDTH / 2
+		end
+	end
+	--End of needed copy.
+	local mini_classbarY = 0
+	if USE_MINI_CLASSBAR then
+		mini_classbarY = -(SPACING+(CLASSBAR_HEIGHT/2))
+	end
+
+	--Threat
+	do
+		local threat = frame.Threat
+
+		if db.threatStyle ~= 'NONE' and db.threatStyle ~= nil then
+			if not frame:IsElementEnabled('Threat') then
+				frame:EnableElement('Threat')
+			end
+
+			if db.threatStyle == "GLOW" then
+				threat:SetFrameStrata('BACKGROUND')
+				threat.glow:ClearAllPoints()
+				threat.glow:SetBackdropBorderColor(0, 0, 0, 0)
+				threat.glow:Point("TOPLEFT", -SHADOW_SPACING, SHADOW_SPACING+mini_classbarY)
+				threat.glow:Point("TOPRIGHT", SHADOW_SPACING, SHADOW_SPACING+mini_classbarY)
+
+				if USE_MINI_POWERBAR then
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+				else
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING)
+				end
+
+				if USE_POWERBAR_OFFSET then
+					threat.glow:Point("TOPRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, SHADOW_SPACING+mini_classbarY)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, -SHADOW_SPACING)
+
+					if USE_PORTRAIT == true and not USE_PORTRAIT_OVERLAY then
+						threat.glow:Point("BOTTOMLEFT", frame.Portrait.backdrop, "BOTTOMLEFT", -4, -4)
+					else
+						threat.glow:Point("BOTTOMLEFT", frame.Health, "BOTTOMLEFT", -5, -5)
+					end
+					threat.glow:Point("BOTTOMRIGHT", frame.Health, "BOTTOMRIGHT", 5, -5)
+				end
+			elseif db.threatStyle == "ICONTOPLEFT" or db.threatStyle == "ICONTOPRIGHT" or db.threatStyle == "ICONBOTTOMLEFT" or db.threatStyle == "ICONBOTTOMRIGHT" or db.threatStyle == "ICONTOP" or db.threatStyle == "ICONBOTTOM" or db.threatStyle == "ICONLEFT" or db.threatStyle == "ICONRIGHT" then
+				threat:SetFrameStrata('HIGH')
+				local point = db.threatStyle
+				point = point:gsub("ICON", "")
+
+				threat.texIcon:ClearAllPoints()
+				threat.texIcon:SetPoint(point, frame.Health, point)
+			end
+		elseif frame:IsElementEnabled('Threat') then
+			frame:DisableElement('Threat')
+		end
+	end
+	--Rest Icon
+	do
+		local rIcon = frame.Resting
+		if db.restIcon then
+			if not frame:IsElementEnabled('Resting') then
+				frame:EnableElement('Resting')
+			end
+		elseif frame:IsElementEnabled('Resting') then
+			frame:DisableElement('Resting')
+			rIcon:Hide()
+		end
+	end
+	--Health
+	do
+		local health = frame.Health
+		health.Smooth = self.db.smoothbars
+
+		--Text
+		local x, y = self:GetPositionOffset(db.health.position)
+		health.value:ClearAllPoints()
+		health.value:Point(db.health.position, health, db.health.position, x + db.health.xOffset, y + db.health.yOffset)
+		frame:Tag(health.value, db.health.text_format)
+
+		--Colors
+		health.colorSmooth = nil
+		health.colorHealth = nil
+		health.colorClass = nil
+		health.colorReaction = nil
+		if self.db['colors'].healthclass ~= true then
+			if self.db['colors'].colorhealthbyvalue == true then
+				health.colorSmooth = true
+			else
+				health.colorHealth = true
+			end
+		else
+			health.colorClass = true
+			health.colorReaction = true
+		end
+
+		--Position
+		health:ClearAllPoints()
+		health:Point("TOPRIGHT", frame, "TOPRIGHT", -BORDER, -BORDER)
+
+		if USE_POWERBAR_OFFSET then
+			health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER+POWERBAR_OFFSET), -BORDER)
+			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", BORDER, BORDER+POWERBAR_OFFSET)
+		elseif USE_INSET_POWERBAR then
+			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", BORDER, BORDER)
+		elseif USE_MINI_POWERBAR then
+			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", BORDER, BORDER + (POWERBAR_HEIGHT/2))
+		else
+			health:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", BORDER, BORDER + POWERBAR_HEIGHT)
+		end
+
+		health.bg:ClearAllPoints()
+		if not USE_PORTRAIT_OVERLAY then
+			health:Point("TOPLEFT", PORTRAIT_WIDTH+BORDER, -BORDER)
+			health.bg:SetParent(health)
+			health.bg:SetAllPoints()
+		else
+			health.bg:Point('BOTTOMLEFT', health:GetStatusBarTexture(), 'BOTTOMRIGHT')
+			health.bg:Point('TOPRIGHT', health)
+			health.bg:SetParent(frame.Portrait.overlay)
+		end
+
+		if USE_CLASSBAR then
+			local DEPTH
+			if USE_MINI_CLASSBAR then
+				DEPTH = -(BORDER)
+			else
+				DEPTH = -(BORDER+SPACING)
+				--DEPTH = -(BORDER+CLASSBAR_HEIGHT+SPACING)
+			end
+
+			if USE_POWERBAR_OFFSET then
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER+POWERBAR_OFFSET), DEPTH)
+			else
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -BORDER, DEPTH)
+			end
+
+			health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH+BORDER, DEPTH)
+		end
+	end
+
+	--Name
+	UF:UpdateNameSettings(frame)
+
+	--PvP
+	do
+		local pvp = frame.PvPText
+		local x, y = self:GetPositionOffset(db.pvp.position)
+		pvp:ClearAllPoints()
+		pvp:Point(db.pvp.position, frame.Health, db.pvp.position, x, y)
+
+		frame:Tag(pvp, db.pvp.text_format)
+	end
+
+	--Power
+	do
+		local power = frame.Power
+		if USE_POWERBAR then
+			if not frame:IsElementEnabled('Power') then
+				frame:EnableElement('Power')
+
+				if frame.DruidAltMana then
+					frame:EnableElement('DruidAltMana')
+				end
+
+				power:Show()
+			end
+
+			power.Smooth = self.db.smoothbars
+
+			--Text
+			local x, y = self:GetPositionOffset(db.power.position)
+			power.value:ClearAllPoints()
+			power.value:Point(db.power.position, frame.Health, db.power.position, x + db.power.xOffset, y + db.power.yOffset)
+			frame:Tag(power.value, db.power.text_format)
+
+			--Colors
+			power.colorClass = nil
+			power.colorReaction = nil
+			power.colorPower = nil
+			if self.db['colors'].powerclass then
+				power.colorClass = true
+				power.colorReaction = true
+			else
+				power.colorPower = true
+			end
+
+			--Position
+			power:ClearAllPoints()
+			if USE_POWERBAR_OFFSET then
+				power:Point("TOPRIGHT", frame.Health, "TOPRIGHT", POWERBAR_OFFSET, -POWERBAR_OFFSET)
+				power:Point("BOTTOMLEFT", frame.Health, "BOTTOMLEFT", POWERBAR_OFFSET, -POWERBAR_OFFSET)
+				power:SetFrameStrata("LOW")
+				power:SetFrameLevel(2)
+			elseif USE_INSET_POWERBAR then
+				power:Height(POWERBAR_HEIGHT - BORDER*2)
+				power:Point("BOTTOMLEFT", frame.Health, "BOTTOMLEFT", BORDER + (BORDER*2), BORDER + (BORDER*2))
+				power:Point("BOTTOMRIGHT", frame.Health, "BOTTOMRIGHT", -(BORDER + (BORDER*2)), BORDER + (BORDER*2))
+				power:SetFrameStrata("MEDIUM")
+				power:SetFrameLevel(frame:GetFrameLevel() + 3)
+			elseif USE_MINI_POWERBAR then
+				power:Width(POWERBAR_WIDTH - BORDER*2)
+				power:Height(POWERBAR_HEIGHT - BORDER*2)
+				power:Point("RIGHT", frame, "BOTTOMRIGHT", -(BORDER*2 + 4), BORDER + (POWERBAR_HEIGHT/2))
+				power:SetFrameStrata("MEDIUM")
+				power:SetFrameLevel(frame:GetFrameLevel() + 3)
+			else
+				power:Point("TOPLEFT", frame.Health.backdrop, "BOTTOMLEFT", BORDER, -(E.PixelMode and 0 or (BORDER + SPACING)))
+				power:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -BORDER, BORDER)
+			end
+		elseif frame:IsElementEnabled('Power') then
+			frame:DisableElement('Power')
+			power:Hide()
+
+			if frame.DruidAltMana then
+				frame:DisableElement('DruidAltMana')
+				frame.DruidAltMana:Hide()
+			end
+		end
+	end
+
+	--Portrait
+	do
+		local portrait = frame.Portrait
+
+		--Set Points
+		if USE_PORTRAIT then
+			if not frame:IsElementEnabled('Portrait') then
+				frame:EnableElement('Portrait')
+			end
+
+			portrait:ClearAllPoints()
+
+			if USE_PORTRAIT_OVERLAY then
+				if db.portrait.style == '3D' then
+					portrait:SetFrameLevel(frame.Health:GetFrameLevel() + 1)
+				end
+				portrait:SetAllPoints(frame.Health)
+				portrait:SetAlpha(0.3)
+				portrait:Show()
+				portrait.backdrop:Hide()
+			else
+				portrait:SetAlpha(1)
+				portrait:Show()
+				portrait.backdrop:Show()
+				if db.portrait.style == '3D' then
+					portrait:SetFrameLevel(frame:GetFrameLevel() + 5)
+				end
+				if USE_MINI_CLASSBAR and USE_CLASSBAR then
+					portrait.backdrop:Point("TOPLEFT", frame, "TOPLEFT", 0, -((CLASSBAR_HEIGHT/2)))
+				else
+					portrait.backdrop:SetPoint("TOPLEFT", frame, "TOPLEFT")
+				end
+
+				if USE_MINI_POWERBAR or USE_POWERBAR_OFFSET or not USE_POWERBAR or USE_INSET_POWERBAR then
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				else
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				end
+
+				portrait:Point('BOTTOMLEFT', portrait.backdrop, 'BOTTOMLEFT', BORDER, BORDER)
+				portrait:Point('TOPRIGHT', portrait.backdrop, 'TOPRIGHT', -BORDER, -BORDER)
+			end
+		else
+			if frame:IsElementEnabled('Portrait') then
+				frame:DisableElement('Portrait')
+				portrait:Hide()
+				portrait.backdrop:Hide()
+			end
+		end
+	end
+
+	--Auras Disable/Enable
+	--Only do if both debuffs and buffs aren't being used.
+	do
+		if db.debuffs.enable or db.buffs.enable then
+			if not frame:IsElementEnabled('Aura') then
+				frame:EnableElement('Aura')
+			end
+		else
+			if frame:IsElementEnabled('Aura') then
+				frame:DisableElement('Aura')
+			end
+		end
+
+		frame.Buffs:ClearAllPoints()
+		frame.Debuffs:ClearAllPoints()
+	end
+
+	--Buffs
+	do
+		local buffs = frame.Buffs
+		local rows = db.buffs.numrows
+
+		if USE_POWERBAR_OFFSET then
+			buffs:SetWidth(UNIT_WIDTH - POWERBAR_OFFSET)
+		else
+			buffs:SetWidth(UNIT_WIDTH)
+		end
+
+		buffs.forceShow = frame.forceShowAuras
+		buffs.num = db.buffs.perrow * rows
+		buffs.size = db.buffs.sizeOverride ~= 0 and db.buffs.sizeOverride or ((((buffs:GetWidth() - (buffs.spacing*(buffs.num/rows - 1))) / buffs.num)) * rows)
+
+		if db.buffs.sizeOverride and db.buffs.sizeOverride > 0 then
+			buffs:SetWidth(db.buffs.perrow * db.buffs.sizeOverride)
+		end
+
+		local x, y = E:GetXYOffset(db.buffs.anchorPoint)
+		local attachTo = self:GetAuraAnchorFrame(frame, db.buffs.attachTo)
+
+		buffs:Point(E.InversePoints[db.buffs.anchorPoint], attachTo, db.buffs.anchorPoint, x + db.buffs.xOffset, y + db.buffs.yOffset + (E.PixelMode and (db.buffs.anchorPoint:find('TOP') and -1 or 1) or 0))
+		buffs:Height(buffs.size * rows)
+		buffs["growth-y"] = db.buffs.anchorPoint:find('TOP') and 'UP' or 'DOWN'
+		buffs["growth-x"] = db.buffs.anchorPoint == 'LEFT' and 'LEFT' or  db.buffs.anchorPoint == 'RIGHT' and 'RIGHT' or (db.buffs.anchorPoint:find('LEFT') and 'RIGHT' or 'LEFT')
+		buffs.initialAnchor = E.InversePoints[db.buffs.anchorPoint]
+
+		if db.buffs.enable then
+			buffs:Show()
+		else
+			buffs:Hide()
+		end
+	end
+
+	--Debuffs
+	do
+		local debuffs = frame.Debuffs
+		local rows = db.debuffs.numrows
+
+		if USE_POWERBAR_OFFSET then
+			debuffs:SetWidth(UNIT_WIDTH - POWERBAR_OFFSET)
+		else
+			debuffs:SetWidth(UNIT_WIDTH)
+		end
+
+		debuffs.forceShow = frame.forceShowAuras
+		debuffs.num = db.debuffs.perrow * rows
+		debuffs.size = db.debuffs.sizeOverride ~= 0 and db.debuffs.sizeOverride or ((((debuffs:GetWidth() - (debuffs.spacing*(debuffs.num/rows - 1))) / debuffs.num)) * rows)
+
+		if db.debuffs.sizeOverride and db.debuffs.sizeOverride > 0 then
+			debuffs:SetWidth(db.debuffs.perrow * db.debuffs.sizeOverride)
+		end
+
+		local x, y = E:GetXYOffset(db.debuffs.anchorPoint)
+		local attachTo = self:GetAuraAnchorFrame(frame, db.debuffs.attachTo, db.debuffs.attachTo == 'BUFFS' and db.buffs.attachTo == 'DEBUFFS')
+
+		debuffs:Point(E.InversePoints[db.debuffs.anchorPoint], attachTo, db.debuffs.anchorPoint, x + db.debuffs.xOffset, y + db.debuffs.yOffset)
+		debuffs:Height(debuffs.size * rows)
+		debuffs["growth-y"] = db.debuffs.anchorPoint:find('TOP') and 'UP' or 'DOWN'
+		debuffs["growth-x"] = db.debuffs.anchorPoint == 'LEFT' and 'LEFT' or  db.debuffs.anchorPoint == 'RIGHT' and 'RIGHT' or (db.debuffs.anchorPoint:find('LEFT') and 'RIGHT' or 'LEFT')
+		debuffs.initialAnchor = E.InversePoints[db.debuffs.anchorPoint]
+
+		if db.debuffs.enable then
+			debuffs:Show()
+		else
+			debuffs:Hide()
+		end
+	end
+
+	--Castbar
+	do
+		local castbar = frame.Castbar
+		castbar:Width(db.castbar.width - (E.PixelMode and 2 or (BORDER * 2)))
+		castbar:Height(db.castbar.height)
+		castbar.Holder:Width(db.castbar.width + (E.PixelMode and 0 or (BORDER * 2)))
+		castbar.Holder:Height(db.castbar.height + (E.PixelMode and 2 or (BORDER * 2)))
+		castbar.Holder:GetScript('OnSizeChanged')(castbar.Holder)
+
+		--Latency
+		if db.castbar.latency then
+			castbar.SafeZone = castbar.LatencyTexture
+			castbar.LatencyTexture:Show()
+		else
+			castbar.SafeZone = nil
+			castbar.LatencyTexture:Hide()
+		end
+
+		--Icon
+		if db.castbar.icon then
+			castbar.Icon = castbar.ButtonIcon
+			castbar.Icon.bg:Width(db.castbar.height + (E.Border * 2))
+			castbar.Icon.bg:Height(db.castbar.height + (E.Border * 2))
+
+			castbar:Width(db.castbar.width - castbar.Icon.bg:GetWidth() - (E.PixelMode and 1 or 5))
+			castbar.Icon.bg:Show()
+		else
+			castbar.ButtonIcon.bg:Hide()
+			castbar.Icon = nil
+		end
+
+		if db.castbar.spark then
+			castbar.Spark:Show()
+		else
+			castbar.Spark:Hide()
+		end
+
+		if db.castbar.enable and not frame:IsElementEnabled('Castbar') then
+			frame:EnableElement('Castbar')
+		elseif not db.castbar.enable and frame:IsElementEnabled('Castbar') then
+			frame:DisableElement('Castbar')
+		end
+	end
+
+	do
+		--Classbars
+		if E.myclass == "PALADIN" then
+			local bars = frame.HolyPower
+			frame.ClassBar = bars
+			bars:ClearAllPoints()
+
+			local MAX_HOLY_POWER = 5
+
+			if USE_MINI_CLASSBAR then
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * (MAX_HOLY_POWER - 1) / MAX_HOLY_POWER
+				bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
+				bars:SetFrameStrata("MEDIUM")
+			else
+				bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) + BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
+				bars:SetFrameStrata("LOW")
+			end
+			bars:Width(CLASSBAR_WIDTH)
+			bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+				for i = 1, MAX_HOLY_POWER do
+				bars[i]:SetHeight(bars:GetHeight())
+				bars[i]:SetWidth(E:Scale(bars:GetWidth() - (E.PixelMode and 4 or 2))/MAX_HOLY_POWER)
+				bars[i]:GetStatusBarTexture():SetHorizTile(false)
+				bars[i]:ClearAllPoints()
+				if i == 1 then
+					bars[i]:SetPoint("LEFT", bars)
+				else
+					if USE_MINI_CLASSBAR then
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+2, 0)
+					else
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
+					end
+				end
+
+				if not USE_MINI_CLASSBAR then
+					bars[i].backdrop:Hide()
+				else
+					bars[i].backdrop:Show()
+				end
+				bars[i]:SetStatusBarColor(unpack(ElvUF.colors.holyPower))
+			end
+
+			if not USE_MINI_CLASSBAR then
+				bars.backdrop:Show()
+			else
+				bars.backdrop:Hide()
+			end
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('HolyPower') then
+				frame:EnableElement('HolyPower')
+				bars:Show()
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('HolyPower') then
+				frame:DisableElement('HolyPower')
+				bars:Hide()
+			end
+		elseif E.myclass == 'PRIEST' then
+			local bars = frame.ShadowOrbs
+			frame.ClassBar = bars
+			bars:ClearAllPoints()
+			if USE_MINI_CLASSBAR then
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * (PRIEST_BAR_NUM_ORBS - 1) / PRIEST_BAR_NUM_ORBS
+				bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
+				bars:SetFrameStrata("MEDIUM")
+			else
+				bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
+				bars:SetFrameStrata("LOW")
+			end
+
+			bars:Width(CLASSBAR_WIDTH)
+			bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+				for i = 1, PRIEST_BAR_NUM_ORBS do
+				bars[i]:SetHeight(bars:GetHeight())
+				bars[i]:SetWidth((bars:GetWidth() - 2)/PRIEST_BAR_NUM_ORBS)
+				bars[i]:GetStatusBarTexture():SetHorizTile(false)
+				bars[i]:ClearAllPoints()
+				if i == 1 then
+					bars[i]:SetPoint("LEFT", bars)
+				else
+					if USE_MINI_CLASSBAR then
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+8, 0)
+					else
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
+					end
+				end
+
+				if not USE_MINI_CLASSBAR then
+					bars[i].backdrop:Hide()
+				else
+					bars[i].backdrop:Show()
+				end
+				bars[i]:SetStatusBarColor(unpack(ElvUF.colors.shadowOrbs))
+			end
+
+			if not USE_MINI_CLASSBAR then
+				bars.backdrop:Show()
+			else
+				bars.backdrop:Hide()
+			end
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('ShadowOrbs') then
+				frame:EnableElement('ShadowOrbs')
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('ShadowOrbs') then
+				frame:DisableElement('ShadowOrbs')
+				bars:Hide()
+			end
+		elseif E.myclass == 'MAGE' then
+			local bars = frame.ArcaneChargeBar
+			frame.ClassBar = bars
+			bars:ClearAllPoints()
+			if USE_MINI_CLASSBAR then
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * (UF['classMaxResourceBar'][E.myclass] - 1) / UF['classMaxResourceBar'][E.myclass]
+				bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 12), (db.classbar.yOffset or 0))
+				bars:SetFrameStrata("MEDIUM")
+			else
+				bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
+				bars:SetFrameStrata("LOW")
+			end
+
+			bars:Width(CLASSBAR_WIDTH)
+			bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+			local maxBars = UF['classMaxResourceBar'][E.myclass]
+			for i = 1, maxBars do
+				bars[i]:SetHeight(bars:GetHeight())
+				bars[i]:SetWidth((bars:GetWidth() - (maxBars - 1)) / maxBars)
+					bars[i]:GetStatusBarTexture():SetHorizTile(false)
+				bars[i]:ClearAllPoints()
+				if i == 1 then
+					bars[i]:SetPoint("LEFT", bars)
+				else
+					if USE_MINI_CLASSBAR then
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", SPACING+(BORDER*2)+2, 0)
+					else
+						bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
+					end
+				end
+
+				bars[i]:SetStatusBarColor(unpack(ElvUF.colors.arcaneCharges))
+				bars[i].bg:SetTexture(unpack(ElvUF.colors.arcaneCharges))
+
+				if not USE_MINI_CLASSBAR then
+					bars[i].backdrop:Hide()
+				else
+					bars[i].backdrop:Show()
+				end
+			end
+
+			if not USE_MINI_CLASSBAR then
+				bars.backdrop:Show()
+			else
+				bars.backdrop:Hide()
+			end
+				if USE_CLASSBAR and not frame:IsElementEnabled('ArcaneChargeBar') then
+				frame:EnableElement('ArcaneChargeBar')
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('ArcaneChargeBar') then
+				frame:DisableElement('ArcaneChargeBar')
+			end
+		elseif E.myclass == "WARLOCK" then
+			local bars = frame.ShardBar
+			frame.ClassBar = bars
+			bars:ClearAllPoints()
+			if USE_MINI_CLASSBAR then
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2 / 3
+				bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
+				bars:SetFrameStrata("MEDIUM")
+			else
+				bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) + (E.PixelMode and 0 or (BORDER + SPACING)))
+				bars:SetFrameStrata("LOW")
+			end
+			bars:Width(CLASSBAR_WIDTH)
+			bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+
+			if not USE_MINI_CLASSBAR then
+				bars.backdrop:Show()
+			else
+				bars.backdrop:Hide()
+			end
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('ShardBar') then
+				frame:EnableElement('ShardBar')
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('ShardBar') then
+				frame:DisableElement('ShardBar')
+				bars:Hide()
+			end
+		elseif E.myclass == 'MONK' then
+			local bars = frame.Harmony
+			frame.ClassBar = bars
+			bars:ClearAllPoints()
+			if USE_MINI_CLASSBAR then
+				bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 6), (db.classbar.yOffset or 0))
+				bars:SetFrameStrata("MEDIUM")
+			else
+				--bars:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0))
+				bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)) )
+				bars:SetFrameStrata("MEDIUM")
+			end
+			bars:Width(CLASSBAR_WIDTH)
+			bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+
+			if not USE_MINI_CLASSBAR then
+				bars.backdrop:Show()
+			else
+				bars.backdrop:Hide()
+			end
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('Harmony') then
+				frame:EnableElement('Harmony')
+				bars:Show()
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('Harmony') then
+				frame:DisableElement('Harmony')
+				bars:Hide()
+			end
+		elseif E.myclass == "DEATHKNIGHT" then
+			local runes = frame.Runes
+			frame.ClassBar = runes
+			runes:ClearAllPoints()
+			if USE_MINI_CLASSBAR then
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * 4/5
+				runes:Point("CENTER", frame.Health.backdrop, "TOP", (db.classbar.xOffset or 0) -(BORDER*3 + 8), (db.classbar.yOffset or 0))
+				runes:SetFrameStrata("MEDIUM")
+			else
+				runes:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
+				runes:SetFrameStrata("LOW")
+			end
+			runes:Width(CLASSBAR_WIDTH)
+			runes:Height(CLASSBAR_HEIGHT - (BORDER*2))
+
+			for i = 1, 6 do
+				runes[i]:SetHeight(runes:GetHeight())
+				runes[i]:SetWidth(E:Scale(runes:GetWidth() - 5) / 6)
+				if USE_MINI_CLASSBAR then
+					runes[i].backdrop:Show()
+				else
+					runes[i].backdrop:Hide()
+				end
+
+				runes[i]:ClearAllPoints()
+				if i == 1 then
+					runes[i]:SetPoint("LEFT", runes)
+				else
+					if USE_MINI_CLASSBAR then
+						runes[i]:Point("LEFT", runes[i-1], "RIGHT", 1+(BORDER*2)+2, 0)
+					else
+						runes[i]:Point("LEFT", runes[i-1], "RIGHT", 1, 0)
+					end
+				end
+
+				if not USE_MINI_CLASSBAR then
+					runes[i].backdrop:Hide()
+				else
+					runes[i].backdrop:Show()
+				end
+			end
+
+			if not USE_MINI_CLASSBAR then
+				runes.backdrop:Show()
+			else
+				runes.backdrop:Hide()
+			end
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('Runes') then
+				frame:EnableElement('Runes')
+				runes:Show()
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('Runes') then
+				frame:DisableElement('Runes')
+				runes:Hide()
+				RuneFrame.Show = RuneFrame.Hide
+				RuneFrame:Hide()
+			end
+			if runes.UpdateAllRuneTypes then
+				runes.UpdateAllRuneTypes(frame) --colors update
+			end
+		elseif E.myclass == "DRUID" then
+			local eclipseBar = frame.EclipseBar
+			frame.ClassBar = eclipseBar
+			eclipseBar:ClearAllPoints()
+			if not USE_MINI_CLASSBAR then
+				eclipseBar:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +(E.PixelMode and 0 or (BORDER + SPACING)))
+				eclipseBar:SetFrameStrata("LOW")
+			else
+				CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2/3
+				eclipseBar:Point("LEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +(BORDER*2 + 4), (db.classbar.yOffset or 0))
+				eclipseBar:SetFrameStrata("MEDIUM")
+			end
+				eclipseBar:Width(CLASSBAR_WIDTH)
+			eclipseBar:Height(CLASSBAR_HEIGHT - (BORDER*2))
+
+			--?? Apparent bug fix for the width after in-game settings change
+			eclipseBar.LunarBar:SetMinMaxValues(0, 0)
+			eclipseBar.SolarBar:SetMinMaxValues(0, 0)
+			eclipseBar.LunarBar:SetStatusBarColor(unpack(ElvUF.colors.eclipseBar[1]))
+			eclipseBar.SolarBar:SetStatusBarColor(unpack(ElvUF.colors.eclipseBar[2]))
+			eclipseBar.LunarBar:Size(CLASSBAR_WIDTH, CLASSBAR_HEIGHT - (BORDER*2))
+			eclipseBar.SolarBar:Size(CLASSBAR_WIDTH, CLASSBAR_HEIGHT - (BORDER*2))
+
+			if USE_CLASSBAR and not frame:IsElementEnabled('EclipseBar') then
+				frame:EnableElement('EclipseBar')
+				eclipseBar:Show()
+			elseif not USE_CLASSBAR and frame:IsElementEnabled('EclipseBar') then
+				frame:DisableElement('EclipseBar')
+				eclipseBar:Hide()
+			end
+		end
+	end
+
+	--Stagger
+	do
+		if E.myclass == "MONK" then
+			local stagger = frame.Stagger
+			if db.stagger.enable then
+				if not frame:IsElementEnabled('Stagger') then
+					frame:EnableElement('Stagger')
+				end
+			else
+				if frame:IsElementEnabled('Stagger') then
+					frame:DisableElement('Stagger')
+				end
+			end
+		end
+	end
+
+	--Combat Fade
+	do
+		if db.combatfade and not frame:IsElementEnabled('CombatFade') then
+			frame:EnableElement('CombatFade')
+		elseif not db.combatfade and frame:IsElementEnabled('CombatFade') then
+			frame:DisableElement('CombatFade')
+		end
+	end
+
+	--Debuff Highlight
+	do
+		local dbh = frame.DebuffHighlight
+		if E.db.unitframe.debuffHighlighting then
+			frame:EnableElement('DebuffHighlight')
+		else
+			frame:DisableElement('DebuffHighlight')
+		end
+	end
+
+	--Raid Icon
+	do
+		local RI = frame.RaidIcon
+		if db.raidicon.enable then
+			frame:EnableElement('RaidIcon')
+			RI:Show()
+			RI:Size(db.raidicon.size)
+
+			local x, y = self:GetPositionOffset(db.raidicon.attachTo)
+			RI:ClearAllPoints()
+			RI:Point(db.raidicon.attachTo, frame, db.raidicon.attachTo, x + db.raidicon.xOffset, y + db.raidicon.yOffset)
+		else
+			frame:DisableElement('RaidIcon')
+			RI:Hide()
+		end
+	end
+
+	--OverHealing
+	do
+		local healPrediction = frame.HealPrediction
+		local c = UF.db.colors.healPrediction
+		if db.healPrediction then
+			if not frame:IsElementEnabled('HealPrediction') then
+				frame:EnableElement('HealPrediction')
+			end
+
+			if not USE_PORTRAIT_OVERLAY then
+				healPrediction.myBar:SetParent(frame)
+				healPrediction.otherBar:SetParent(frame)
+				healPrediction.absorbBar:SetParent(frame)
+			else
+				healPrediction.myBar:SetParent(frame.Portrait.overlay)
+				healPrediction.otherBar:SetParent(frame.Portrait.overlay)
+				healPrediction.absorbBar:SetParent(frame.Portrait.overlay)
+			end
+			healPrediction.myBar:SetStatusBarColor(c.personal.r, c.personal.g, c.personal.b, c.personal.a)
+			healPrediction.otherBar:SetStatusBarColor(c.others.r, c.others.g, c.others.b, c.others.a)
+			healPrediction.absorbBar:SetStatusBarColor(c.absorbs.r, c.absorbs.g, c.absorbs.b, c.absorbs.a)
+		else
+			if frame:IsElementEnabled('HealPrediction') then
+				frame:DisableElement('HealPrediction')
+			end
+		end
+	end
+
+	--AuraBars
+	do
+		local auraBars = frame.AuraBars
+
+		if db.aurabar.enable then
+			if not frame:IsElementEnabled('AuraBars') then
+				frame:EnableElement('AuraBars')
+			end
+			auraBars:Show()
+			auraBars.friendlyAuraType = db.aurabar.friendlyAuraType
+			auraBars.enemyAuraType = db.aurabar.enemyAuraType
+
+			local buffColor = UF.db.colors.auraBarBuff
+			local debuffColor = UF.db.colors.auraBarDebuff
+			local attachTo = frame
+
+			if db.aurabar.attachTo == 'BUFFS' then
+				attachTo = frame.Buffs
+			elseif db.aurabar.attachTo == 'DEBUFFS' then
+				attachTo = frame.Debuffs
+			end
+
+			local anchorPoint, anchorTo = 'BOTTOM', 'TOP'
+			if db.aurabar.anchorPoint == 'BELOW' then
+				anchorPoint, anchorTo = 'TOP', 'BOTTOM'
+			end
+
+			local yOffset = 0;
+			if E.PixelMode then
+				if db.aurabar.anchorPoint == 'BELOW' then
+					yOffset = 1;
+				else
+					yOffset = -1;
+				end
+			end
+
+			auraBars.auraBarHeight = db.aurabar.height
+			auraBars:ClearAllPoints()
+			auraBars:SetPoint(anchorPoint..'LEFT', attachTo, anchorTo..'LEFT', (attachTo == frame and anchorTo == 'BOTTOM') and POWERBAR_OFFSET or 0, E.PixelMode and anchorPoint ==  -1 or yOffset)
+			auraBars:SetPoint(anchorPoint..'RIGHT', attachTo, anchorTo..'RIGHT', attachTo == frame and POWERBAR_OFFSET * (anchorTo == 'BOTTOM' and 0 or -1) or 0, E.PixelMode and -1 or yOffset)
+			auraBars.buffColor = {buffColor.r, buffColor.g, buffColor.b}
+			if UF.db.colors.auraBarByType then
+				auraBars.debuffColor = nil;
+				auraBars.defaultDebuffColor = {debuffColor.r, debuffColor.g, debuffColor.b}
+			else
+				auraBars.debuffColor = {debuffColor.r, debuffColor.g, debuffColor.b}
+				auraBars.defaultDebuffColor = nil;
+			end
+			auraBars.down = db.aurabar.anchorPoint == 'BELOW'
+
+			if db.aurabar.sort == 'TIME_REMAINING' then
+				auraBars.sort = true --default function
+			elseif db.aurabar.sort == 'TIME_REMAINING_REVERSE' then
+				auraBars.sort = UF.SortAuraBarReverse
+			elseif db.aurabar.sort == 'TIME_DURATION' then
+				auraBars.sort = UF.SortAuraBarDuration
+			elseif db.aurabar.sort == 'TIME_DURATION_REVERSE' then
+				auraBars.sort = UF.SortAuraBarDurationReverse
+			elseif db.aurabar.sort == 'NAME' then
+				auraBars.sort = UF.SortAuraBarName
+			else
+				auraBars.sort = nil
+			end
+
+			auraBars:SetAnchors()
+		else
+			if frame:IsElementEnabled('AuraBars') then
+				frame:DisableElement('AuraBars')
+				auraBars:Hide()
+			end
+		end
+	end
+
+	if db.customTexts then
+		local customFont = UF.LSM:Fetch("font", UF.db.font)
+		for objectName, _ in pairs(db.customTexts) do
+			if not frame[objectName] then
+				frame[objectName] = frame.RaisedElementParent:CreateFontString(nil, 'OVERLAY')
+			end
+
+			local objectDB = db.customTexts[objectName]
+
+			if objectDB.font then
+				customFont = UF.LSM:Fetch("font", objectDB.font)
+			end
+
+			frame[objectName]:FontTemplate(customFont, objectDB.size or UF.db.fontSize, objectDB.fontOutline or UF.db.fontOutline)
+			frame:Tag(frame[objectName], objectDB.text_format or '')
+			frame[objectName]:SetJustifyH(objectDB.justifyH or 'CENTER')
+			frame[objectName]:ClearAllPoints()
+			frame[objectName]:SetPoint(objectDB.justifyH or 'CENTER', frame, 'CENTER', objectDB.xOffset, objectDB.yOffset)
+		end
+	end
+
+	if UF.db.colors.transparentHealth then
+		UF:ToggleTransparentStatusBar(true, frame.Health, frame.Health.bg)
+	else
+		UF:ToggleTransparentStatusBar(false, frame.Health, frame.Health.bg, (USE_PORTRAIT and USE_PORTRAIT_OVERLAY) ~= true)
+	end
+
+	if UF.db.colors.transparentPower then
+		UF:ToggleTransparentStatusBar(true, frame.Power, frame.Power.bg)
+	else
+		UF:ToggleTransparentStatusBar(false, frame.Power, frame.Power.bg, true)
+	end
+
+	E:SetMoverSnapOffset(frame:GetName()..'Mover', -(12 + db.castbar.height))
+
+
+	frame:UpdateAllElements()
+end
+
+UF.UpdatePlayerFrameAnchorsSLE = UF.UpdatePlayerFrameAnchors
+function UF:UpdatePlayerFrameAnchors(frame, isShown)
+	UF:UpdatePlayerFrameAnchorsSLE(frame, isShown)
+
+	if E.db.sle == nil then E.db.sle = {} end
+
+	local db = E.db['unitframe']['units'].player
+	local health = frame.Health
+	local threat = frame.Threat
+	local power = frame.Power
+	local stagger = frame.Stagger
+	local PORTRAIT_WIDTH = db.portrait.width
+	local USE_PORTRAIT = db.portrait.enable
+	local USE_PORTRAIT_OVERLAY = db.portrait.overlay and USE_PORTRAIT
+	local CLASSBAR_HEIGHT = db.classbar.height
+	local USE_CLASSBAR = db.classbar.enable
+	local USE_MINI_CLASSBAR = db.classbar.fill == "spaced" and USE_CLASSBAR
+	local USE_POWERBAR = db.power.enable
+	local USE_INSET_POWERBAR = db.power.width == 'inset' and USE_POWERBAR
+	local USE_MINI_POWERBAR = db.power.width == 'spaced' and USE_POWERBAR
+	local USE_POWERBAR_OFFSET = db.power.offset ~= 0 and USE_POWERBAR
+	local POWERBAR_OFFSET = db.power.offset
+	local POWERBAR_HEIGHT = db.power.height
+	local SPACING = E.Spacing;
+	local BORDER = E.Border;
+	local SHADOW_SPACING = E.PixelMode and 3 or 4
+	local USE_STAGGER = stagger and stagger:IsShown();
+	local STAGGER_WIDTH = USE_STAGGER and (db.stagger.width + (BORDER*2)) or 0;
+--[[
+	if E.db.unitframe.units.player.classbar.offset then
+		local DEPTH
+		if USE_MINI_CLASSBAR then
+			DEPTH = -(E:Scale(2)+(CLASSBAR_HEIGHT/2))
+		else
+			DEPTH = -(E:Scale(2))
+		end
+
+		if not USE_MINI_CLASSBAR and (USE_PORTRAIT and not USE_PORTRAIT_OVERLAY) then
+			health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH + 2, DEPTH)
+		end
+	end]]
+	if E.db.unitframe.units.player.classbar.offset then
+		if not USE_POWERBAR then
+			POWERBAR_HEIGHT = 0
+		end
+
+		if USE_PORTRAIT_OVERLAY or not USE_PORTRAIT then
+			PORTRAIT_WIDTH = 0
+		end
+
+		if USE_MINI_CLASSBAR then
+			CLASSBAR_HEIGHT = CLASSBAR_HEIGHT / 2
+		end
+		if isShown then
+			if db.power.offset ~= 0 then
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER+db.power.offset) - STAGGER_WIDTH, -(BORDER + SPACING))
+			else
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -BORDER - STAGGER_WIDTH, -(BORDER + SPACING))
+			end
+			health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH + BORDER, -(BORDER + SPACING))
+
+			local mini_classbarY = 0
+			if USE_MINI_CLASSBAR then
+				mini_classbarY = -(SPACING+(CLASSBAR_HEIGHT))
+			end
+
+			if db.threatStyle == "GLOW" then
+				threat.glow:Point("TOPLEFT", -SHADOW_SPACING, SHADOW_SPACING+mini_classbarY)
+				threat.glow:Point("TOPRIGHT", SHADOW_SPACING, SHADOW_SPACING+mini_classbarY)
+
+				if USE_MINI_POWERBAR then
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+				else
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING)
+				end
+
+				if USE_POWERBAR_OFFSET then
+					threat.glow:Point("TOPRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, SHADOW_SPACING+mini_classbarY)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, -SHADOW_SPACING)
+				end
+			end
+
+
+			if db.portrait.enable and not USE_PORTRAIT_OVERLAY then
+				local portrait = frame.Portrait
+				portrait.backdrop:ClearAllPoints()
+				if USE_MINI_CLASSBAR and USE_CLASSBAR then
+					portrait.backdrop:Point("TOPLEFT", frame, "TOPLEFT", 0, -(CLASSBAR_HEIGHT + SPACING))
+				else
+					portrait.backdrop:SetPoint("TOPLEFT", frame, "TOPLEFT")
+				end
+
+				if USE_MINI_POWERBAR or USE_POWERBAR_OFFSET or USE_INSET_POWERBAR or not USE_POWERBAR or USE_INSET_POWERBAR then
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				else
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				end
+			end
+
+		else
+			if db.power.offset ~= 0 then
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -(BORDER + db.power.offset) - STAGGER_WIDTH, -BORDER)
+			else
+				health:Point("TOPRIGHT", frame, "TOPRIGHT", -BORDER - STAGGER_WIDTH, -BORDER)
+			end
+			health:Point("TOPLEFT", frame, "TOPLEFT", PORTRAIT_WIDTH + BORDER, -BORDER)
+
+			if db.threatStyle == "GLOW" then
+				threat.glow:Point("TOPLEFT", -SHADOW_SPACING, SHADOW_SPACING)
+				threat.glow:Point("TOPRIGHT", SHADOW_SPACING, SHADOW_SPACING)
+
+				if USE_MINI_POWERBAR then
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING + (POWERBAR_HEIGHT/2))
+				else
+					threat.glow:Point("BOTTOMLEFT", -SHADOW_SPACING, -SHADOW_SPACING)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING, -SHADOW_SPACING)
+				end
+
+				if USE_POWERBAR_OFFSET then
+					threat.glow:Point("TOPRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, SHADOW_SPACING)
+					threat.glow:Point("BOTTOMRIGHT", SHADOW_SPACING-POWERBAR_OFFSET, -SHADOW_SPACING)
+				end
+			end
+
+			if db.portrait.enable and not USE_PORTRAIT_OVERLAY and frame.Portrait then
+				local portrait = frame.Portrait
+				portrait.backdrop:ClearAllPoints()
+				portrait.backdrop:Point("TOPLEFT", frame, "TOPLEFT")
+
+				if USE_MINI_POWERBAR or USE_POWERBAR_OFFSET or not USE_POWERBAR or USE_INSET_POWERBAR then
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				else
+					portrait.backdrop:Point("BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", E.PixelMode and 1 or -SPACING, 0)
+				end
+			end
+		end
+	end
+	if E.myclass == "DRUID" then
+		UF:EclipseTextSLE()
+	end
+
+	if E.myclass == "WARLOCK" then
+		UF:DFTextSLE()
+	end
+end
+
+function UF:ClassbarTextSLE()
+	if E.myclass == "DRUID" then
+		UF:EclipseTextSLE()
+	elseif E.myclass == "WARLOCK" then
+		UF:DFTextSLE()
+	end
+end
+
+function UF:EclipseTextSLE()
+	local eclipseBar = ElvUF_Player.EclipseBar
+	local spower = UnitPower( PlayerFrame.unit, SPELL_POWER_ECLIPSE );
+	if E.db.sle.powtext then
+		eclipseBar.powtext:SetText(spower)
+	else
+		eclipseBar.powtext:SetText('')
+	end
+end
+
+function UF:DFTextSLE()
+	local ShardBar = ElvUF_Player.ShardBar
+	local dfpower = UnitPower( PlayerFrame.unit, SPELL_POWER_DEMONIC_FURY );
+	local hasspec = GetSpecialization(false, false)
+	if hasspec == nil then return end
+	local index = select(1, GetSpecializationInfo(GetSpecialization(false, false, active)), false, false)
+	if index == 266 then --This crap is checking the spec.
+		if E.db.sle.powtext then
+			ShardBar.powtext:SetText(dfpower)
+			if E.db.unitframe.units.player.classbar.fill == "spaced" then
+				ShardBar.powtext:ClearAllPoints()
+				ShardBar.powtext:SetPoint("LEFT", ShardBar, "RIGHT")
+			else
+				ShardBar.powtext:ClearAllPoints()
+				ShardBar.powtext:SetPoint("CENTER", ShardBar, "CENTER")
+			end
+		else
+			ShardBar.powtext:SetText('')
+		end
+	else
+		ShardBar.powtext:SetText('')
+	end
+end
+
+--Text for druid eclipse bar
+if E.myclass == "DRUID" then
+	local eclipseBar = ElvUF_Player.EclipseBar
+	local lunarBar = eclipseBar.LunarBar
+
+	eclipseBar.powtext = lunarBar:CreateFontString(nil, 'OVERLAY')
+	eclipseBar.powtext:SetPoint("CENTER", eclipseBar, "CENTER")
+	eclipseBar.powtext:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE")
+end
+
+if E.myclass == "WARLOCK" then
+	local ShardBar = ElvUF_Player.ShardBar
+	local dfbar = select(2, ShardBar:GetChildren())
+
+	ShardBar.powtext = dfbar:CreateFontString(nil, 'OVERLAY')
+	ShardBar.powtext:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE")
 end
\ No newline at end of file