From 75047d16c20707f0721b5e6f10cedda87eadabdc Mon Sep 17 00:00:00 2001 From: Darthpred Date: Sat, 21 Jul 2012 11:47:29 +0400 Subject: [PATCH] Da vengeance bar 2 O_o --- ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.lua | 70 ++++++++---- ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.toc | 2 +- ElvUI_SLE/modules/load_modules.xml | 1 - ElvUI_SLE/modules/vengeance/load_vengeance.xml | 4 - ElvUI_SLE/modules/vengeance/options.lua | 1 - ElvUI_SLE/modules/vengeance/vengeance.lua | 139 ------------------------ 6 files changed, 52 insertions(+), 165 deletions(-) delete mode 100644 ElvUI_SLE/modules/vengeance/load_vengeance.xml delete mode 100644 ElvUI_SLE/modules/vengeance/options.lua delete mode 100644 ElvUI_SLE/modules/vengeance/vengeance.lua diff --git a/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.lua b/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.lua index 306f4a0..098e865 100644 --- a/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.lua +++ b/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.lua @@ -30,18 +30,19 @@ text:SetText(value) end ... - self.Vengeance.OverrideText = VengOverrideText + ElvUF_Player.Vengeance.OverrideText = VengOverrideText others: - self.Vengeance.showInfight [boolean] + ElvUF_Player.Vengeance.showInfight [boolean] if true, the Vengeance bar will be shown infight, even if you haven't got stacks of Vengeance --]] +local E, L, V, P, G = unpack(ElvUI); --Engine +local VG = E:NewModule('Vengeance', 'AceHook-3.0', 'AceEvent-3.0'); local _, ns = ... ---local oUF = oUF or ns.oUF local oUF = ElvUF or oUF local _, class = UnitClass("player") -local vengeance = GetSpellInfo(93098) +local vengeance = GetSpellInfo(93098) or GetSpellInfo(76691) local UnitAura = UnitAura local InCombatLockdown = InCombatLockdown @@ -52,9 +53,25 @@ local tooltiptext = _G[tooltip:GetName().."TextLeft2"] tooltip:SetOwner(UIParent, "ANCHOR_NONE") tooltiptext:SetText("") +function VG:CreateBar() +ElvUF_Player.Vengeance = CreateFrame("StatusBar", nil, RightChatTab) +local Vbar = ElvUF_Player.Vengeance +Vbar:CreateBackdrop("Default") +Vbar:SetFrameLevel(5) +Vbar:Point("TOPLEFT", RightChatTab, "TOPLEFT", 0, 0) --2 lines for determining positioning and size +Vbar:Point("BOTTOMRIGHT", RightChatTab, "BOTTOMRIGHT", 0, 0) +Vbar:SetStatusBarTexture(E["media"].normTex) + +Vbar.Text = Vbar:CreateFontString(nil, 'OVERLAY') +Vbar.Text:FontTemplate(nil, 10) --Font temeplate. will need to change that maybe +Vbar.Text:SetParent(Vbar) + +Vbar.Text:Point("CENTER", Vbar, "CENTER", 0, 0) --May need to change that to be at the left side instead of center +end + local function valueChanged(self, event, unit) if unit ~= "player" then return end - local bar = self.Vengeance + local bar = ElvUF_Player.Vengeance if not bar.isTank then bar:Hide() @@ -67,7 +84,7 @@ local function valueChanged(self, event, unit) tooltip:ClearLines() tooltip:SetUnitBuff("player", name) local value = (tooltiptext:GetText() and tonumber(string.match(tostring(tooltiptext:GetText()), "%d+"))) or -1 - + if value > 0 then if value > bar.max then value = bar.max end if value == bar.value then return end @@ -76,14 +93,22 @@ local function valueChanged(self, event, unit) bar:SetValue(value) bar.value = value bar:Show() + local percent = (value/bar.max)*100 if bar.Text then if bar.OverrideText then - bar:OverrideText(value) + bar:OverrideText(self, value) else - bar.Text:SetText(value) + bar.Text:SetText(string.format(vengeance..": %s/%s (%.2f%%)",value,bar.max,percent)) end end + if (percent <= 25) then + bar:SetStatusBarColor(1, 75 / 255, 75 / 255, 0.5, .8) + elseif (percent > 25 and percent < 60) then + bar:SetStatusBarColor(1, 180 / 255, 0, .8) + else + bar:SetStatusBarColor(30 / 255, 1, 30 / 255, .8) + end end elseif bar.showInfight and InCombatLockdown() then bar:Show() @@ -98,7 +123,7 @@ end local function maxChanged(self, event, unit) if unit ~= "player" then return end - local bar = self.Vengeance + local bar = ElvUF_Player.Vengeance if not bar.isTank then bar:Hide() @@ -107,10 +132,14 @@ local function maxChanged(self, event, unit) local health = UnitHealthMax("player") local _, stamina = UnitStat("player", 3) + local baseStam = min(20, stamina) + local moreStam = stamina - baseStam + local hpFromStam = (baseStam + (moreStam*UnitHPPerStamina("player")))*GetUnitMaxHealthModifier("player") + local baseHP = health - hpFromStam if not health or not stamina then return end - bar.max = 0.1 * (health - 15 * stamina) + stamina + bar.max = stamina + floor(baseHP/10) bar:SetMinMaxValues(0, bar.max) valueChanged(self, event, unit) @@ -118,7 +147,7 @@ end local function isTank(self, event) local masteryIndex = GetPrimaryTalentTree() - local bar = self.Vengeance + local bar = ElvUF_Player.Vengeance if masteryIndex then if class == "DRUID" and masteryIndex == 2 then @@ -126,7 +155,6 @@ local function isTank(self, event) elseif (class == "DEATH KNIGHT" or class == "DEATHKNIGHT") and masteryIndex == 1 then bar.isTank = true elseif class == "PALADIN" and masteryIndex == 2 then - print("Checked") bar.isTank = true elseif class == "WARRIOR" and masteryIndex == 3 then bar.isTank = true @@ -138,25 +166,22 @@ local function isTank(self, event) bar.isTank = false bar:Hide() end - print("IsTank") maxChanged(self, event, "player") end local function Enable(self, unit) - local bar = self.Vengeance + local bar = ElvUF_Player.Vengeance if bar and unit == "player" then bar.max = 0 bar.value = 0 - - self:RegisterEvent("UNIT_AURA", valueChanged) + self:RegisterEvent("UNIT_AURA", maxChanged) self:RegisterEvent("UNIT_MAXHEALTH", maxChanged) self:RegisterEvent("UNIT_LEVEL", maxChanged) self:RegisterEvent("PLAYER_REGEN_DISABLED", isTank) - bar:Hide() return true @@ -164,7 +189,7 @@ local function Enable(self, unit) end local function Disable(self) - local bar = self.Vengeance + local bar = ElvUF_Player.Vengeance if bar then self:UnregisterEvent("UNIT_AURA", valueChanged) @@ -176,6 +201,13 @@ local function Disable(self) end end +Enable(ElvUF_Player, "player") + oUF:AddElement("Vengeance", nil, Enable, Disable) -for i, frame in ipairs(oUF.objects) do Enable(frame) end \ No newline at end of file +function VG:Initialize() + VG:CreateBar() + Enable(ElvUF_Player, "player") +end + +E:RegisterModule(VG:GetName()) \ No newline at end of file diff --git a/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.toc b/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.toc index 24e0937..7a04cec 100644 --- a/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.toc +++ b/ElvUI_SLE/libs/oUF_Vengeance/oUF_Vengeance.toc @@ -3,6 +3,6 @@ ## Version: 40200.5 ## Title: oUF Vengeance ## Notes: Vengeance plug-in for oUF -## RequiredDeps: oUF +## RequiredDeps: ElvUI_SLE oUF_Vengeance.lua \ No newline at end of file diff --git a/ElvUI_SLE/modules/load_modules.xml b/ElvUI_SLE/modules/load_modules.xml index d74f08d..8afe6be 100644 --- a/ElvUI_SLE/modules/load_modules.xml +++ b/ElvUI_SLE/modules/load_modules.xml @@ -12,5 +12,4 @@ - \ No newline at end of file diff --git a/ElvUI_SLE/modules/vengeance/load_vengeance.xml b/ElvUI_SLE/modules/vengeance/load_vengeance.xml deleted file mode 100644 index e10f79c..0000000 --- a/ElvUI_SLE/modules/vengeance/load_vengeance.xml +++ /dev/null @@ -1,4 +0,0 @@ - -