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()