Quantcast

Catching up in classbar code

Darthpred [11-13-12 - 08:44]
Catching up in classbar code
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 e1840eb..9da520c 100644
--- a/ElvUI_SLE/modules/unitframes/units/player.lua
+++ b/ElvUI_SLE/modules/unitframes/units/player.lua
@@ -131,37 +131,75 @@ function UF:Update_PlayerFrame(frame, db)
 	--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))
+			CLASSBAR_WIDTH = CLASSBAR_WIDTH * (MAX_HOLY_POWER - 1) / MAX_HOLY_POWER
+			bars:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 6), 0)
 			bars:SetFrameStrata("MEDIUM")
 		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER +SPACING)
+			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			bars:SetFrameStrata("LOW")
 		end
 		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (BORDER*2))
+		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:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 6), 0)
 			bars:SetFrameStrata("MEDIUM")
 		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER+SPACING)
+			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			bars:SetFrameStrata("LOW")
 		end

 		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (BORDER*2))
+		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(E:Scale(bars:GetWidth() - 2)/PRIEST_BAR_NUM_ORBS)
+			bars[i]:SetWidth((bars:GetWidth() - 2)/PRIEST_BAR_NUM_ORBS)
 			bars[i]:GetStatusBarTexture():SetHorizTile(false)
 			bars[i]:ClearAllPoints()
 			if i == 1 then
@@ -170,7 +208,7 @@ function UF:Update_PlayerFrame(frame, db)
 				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", SPACING, 0)
+					bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
 				end
 			end

@@ -179,6 +217,7 @@ function UF:Update_PlayerFrame(frame, db)
 			else
 				bars[i].backdrop:Show()
 			end
+			bars[i]:SetStatusBarColor(unpack(ElvUF.colors.shadowOrbs))
 		end

 		if not USE_MINI_CLASSBAR then
@@ -192,25 +231,26 @@ function UF:Update_PlayerFrame(frame, db)
 		elseif not USE_CLASSBAR and frame:IsElementEnabled('ShadowOrbs') then
 			frame:DisableElement('ShadowOrbs')
 			bars:Hide()
-		end
+		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*4 + 10), (db.classbar.yOffset or 0))
+			bars:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 12), 0)
 			bars:SetFrameStrata("MEDIUM")
 		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER+SPACING)
+			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			bars:SetFrameStrata("LOW")
 		end

 		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (BORDER*2))
+		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
 			for i = 1, UF['classMaxResourceBar'][E.myclass] do
 			bars[i]:SetHeight(bars:GetHeight())
-			bars[i]:SetWidth(E:Scale(bars:GetWidth() - 2)/UF['classMaxResourceBar'][E.myclass])
-			bars[i]:GetStatusBarTexture():SetHorizTile(false)
+			bars[i]:SetWidth((bars:GetWidth() - (E.PixelMode and 5 or 2))/UF['classMaxResourceBar'][E.myclass])
+				bars[i]:GetStatusBarTexture():SetHorizTile(false)
 			bars[i]:ClearAllPoints()
 			if i == 1 then
 				bars[i]:SetPoint("LEFT", bars)
@@ -218,10 +258,13 @@ function UF:Update_PlayerFrame(frame, db)
 				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", SPACING, 0)
+					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
@@ -238,37 +281,47 @@ function UF:Update_PlayerFrame(frame, db)
 			frame:EnableElement('ArcaneChargeBar')
 		elseif not USE_CLASSBAR and frame:IsElementEnabled('ArcaneChargeBar') then
 			frame:DisableElement('ArcaneChargeBar')
-		end
+		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) -SPACING)
+			bars:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 6), 0)
 			bars:SetFrameStrata("MEDIUM")
 		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER +SPACING)
+			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			bars:SetFrameStrata("LOW")
 		end
 		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (BORDER*2))
-			if not USE_MINI_CLASSBAR then
+		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))
+
+		if not USE_MINI_CLASSBAR then
 			bars.backdrop:Show()
 		else
 			bars.backdrop:Hide()
-		end
+		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")
+			bars:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 6), 0)
+			bars:SetFrameStrata("MEDIUM")
 		else
-			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER+SPACING)
+			bars:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			bars:SetFrameStrata("LOW")
 		end
 		bars:Width(CLASSBAR_WIDTH)
-		bars:Height(CLASSBAR_HEIGHT - (BORDER*2))
+		bars:Height(CLASSBAR_HEIGHT - (E.PixelMode and 1 or 4))

 		if not USE_MINI_CLASSBAR then
 			bars.backdrop:Show()
@@ -282,39 +335,96 @@ function UF:Update_PlayerFrame(frame, db)
 		elseif not USE_CLASSBAR and frame:IsElementEnabled('Harmony') then
 			frame:DisableElement('Harmony')
 			bars:Hide()
-		end
+		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) -SPACING)
+			runes:Point("CENTER", frame.Health.backdrop, "TOP", -(BORDER*3 + 8), 0)
 			runes:SetFrameStrata("MEDIUM")
 		else
-			runes:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", (db.classbar.xOffset or 0) +BORDER, (db.classbar.yOffset or 0) +BORDER +SPACING)
+			runes:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			runes:SetFrameStrata("LOW")
 		end
 		runes:Width(CLASSBAR_WIDTH)
-		runes:Height(CLASSBAR_HEIGHT - (BORDER*2))
+		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() --colors update
+		end
 	elseif E.myclass == "DRUID" then
 		local eclipseBar = frame.EclipseBar
-			eclipseBar:ClearAllPoints()
+		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) +BORDER +SPACING)
+			eclipseBar:Point("BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", BORDER, (E.PixelMode and 0 or (BORDER + SPACING)))
 			eclipseBar:SetFrameStrata("LOW")
 		else
-			CLASSBAR_WIDTH = CLASSBAR_WIDTH * 3/2 --Multiply by reciprocal to reset previous setting
-			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))
+			CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2/3
+			eclipseBar:Point("LEFT", frame.Health.backdrop, "TOPLEFT", (BORDER*2 + 4), 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))
+		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()