mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
update some more (still needs more work)
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
if(select(2, UnitClass("player")) ~= "DRUID") then return; end
|
||||
|
||||
local ns = oUF
|
||||
local oUF = ns.oUF
|
||||
|
||||
local LDM = LibStub("LibDruidMana-1.0")
|
||||
|
||||
local function UpdateColor(element, cur, max)
|
||||
local parent = element.__owner
|
||||
|
||||
local r, g, b, t
|
||||
if(element.colorClass) then
|
||||
t = parent.colors.class['DRUID']
|
||||
elseif(element.colorSmooth) then
|
||||
r, g, b = parent.ColorGradient(cur, max, unpack(element.smoothGradient or parent.colors.smooth))
|
||||
elseif(element.colorPower) then
|
||||
t = parent.colors.power[0]
|
||||
end
|
||||
|
||||
if(t) then
|
||||
r, g, b = t[1], t[2], t[3]
|
||||
end
|
||||
|
||||
if(b) then
|
||||
element:SetStatusBarColor(r, g, b)
|
||||
|
||||
local bg = element.bg
|
||||
if(bg) then
|
||||
local mu = bg.multiplier or 1
|
||||
bg:SetVertexColor(r * mu, g * mu, b * mu)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function Update(self, event, unit, currMana, maxMana)
|
||||
if(unit ~= 'player') then return end
|
||||
|
||||
local element = self.DruidAltMana
|
||||
if(element.PreUpdate) then element:PreUpdate(unit) end
|
||||
|
||||
local cur, max = currMana, maxMana
|
||||
if not (cur and max) then
|
||||
cur, max = LDM:GetCurrentMana(), LDM:GetMaximumMana()
|
||||
end
|
||||
|
||||
element:SetMinMaxValues(0, max)
|
||||
element:SetValue(cur)
|
||||
|
||||
element:UpdateColor(cur, max)
|
||||
|
||||
if(element.PostUpdate) then
|
||||
return element:PostUpdate(unit, cur, max, event)
|
||||
end
|
||||
end
|
||||
|
||||
local function Path(self, ...)
|
||||
return (self.DruidAltMana.Override or Update) (self, unpack(arg))
|
||||
end
|
||||
|
||||
local function ElementEnable(self)
|
||||
self:RegisterEvent("UNIT_MANA", Path)
|
||||
self:RegisterEvent("UNIT_MAXMANA", Path)
|
||||
|
||||
self.DruidAltMana:Show()
|
||||
|
||||
if self.DruidAltMana.PostUpdateVisibility then
|
||||
self.DruidAltMana:PostUpdateVisibility(true, not self.DruidAltMana.isEnabled)
|
||||
end
|
||||
|
||||
self.DruidAltMana.isEnabled = true
|
||||
|
||||
Path(self, 'ElementEnable', 'player', UnitPowerType("player", 0))
|
||||
end
|
||||
|
||||
local function ElementDisable(self)
|
||||
self:UnregisterEvent("UNIT_MANA", Path)
|
||||
self:UnregisterEvent("UNIT_MAXMANA", Path)
|
||||
|
||||
self.DruidAltMana:Hide()
|
||||
|
||||
if self.DruidAltMana.PostUpdateVisibility then
|
||||
self.DruidAltMana:PostUpdateVisibility(false, self.DruidAltMana.isEnabled)
|
||||
end
|
||||
|
||||
self.DruidAltMana.isEnabled = nil
|
||||
|
||||
Path(self, 'ElementDisable', 'player', UnitPowerType("player", 0))
|
||||
end
|
||||
|
||||
local function Visibility(self, event, unit)
|
||||
local shouldEnable
|
||||
|
||||
if UnitPowerType("player") ~= 0 then
|
||||
shouldEnable = true
|
||||
end
|
||||
|
||||
if(shouldEnable) then
|
||||
ElementEnable(self)
|
||||
else
|
||||
ElementDisable(self)
|
||||
end
|
||||
end
|
||||
|
||||
local function VisibilityPath(self, ...)
|
||||
return (self.DruidAltMana.OverrideVisibility or Visibility) (self, unpack(arg))
|
||||
end
|
||||
|
||||
local function ForceUpdate(element)
|
||||
return VisibilityPath(element.__owner, 'ForceUpdate', element.__owner.unit)
|
||||
end
|
||||
|
||||
local function Enable(self, unit)
|
||||
local element = self.DruidAltMana
|
||||
if(element and unit == 'player') then
|
||||
element.__owner = self
|
||||
element.ForceUpdate = ForceUpdate
|
||||
|
||||
LDM:AddListener(function(currMana, maxMana)
|
||||
Update(self, "Listener", "player", currMana, maxMana)
|
||||
end, "oUF_DruidMana")
|
||||
|
||||
self:RegisterEvent('PLAYER_LOGIN', VisibilityPath) -- need?
|
||||
self:RegisterEvent('PLAYER_ENTERING_WORLD', VisibilityPath)
|
||||
self:RegisterEvent('UPDATE_SHAPESHIFT_FORM', VisibilityPath) -- need?
|
||||
self:RegisterEvent('UNIT_DISPLAYPOWER', VisibilityPath)
|
||||
|
||||
if(element:IsObjectType('StatusBar') and not element:GetStatusBarTexture()) then
|
||||
element:SetStatusBarTexture([[Interface\TargetingFrame\UI-StatusBar]])
|
||||
end
|
||||
|
||||
if(not element.UpdateColor) then
|
||||
element.UpdateColor = UpdateColor
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local function Disable(self)
|
||||
local element = self.DruidAltMana
|
||||
if(element) then
|
||||
ElementDisable(self)
|
||||
LDM:RemoveListener("oUF_DruidMana")
|
||||
|
||||
self:UnregisterEvent('PLAYER_LOGIN', VisibilityPath) -- need?
|
||||
self:UnregisterEvent('PLAYER_ENTERING_WORLD', VisibilityPath)
|
||||
self:UnregisterEvent('UPDATE_SHAPESHIFT_FORM', VisibilityPath) -- need?
|
||||
self:UnregisterEvent('UNIT_DISPLAYPOWER', VisibilityPath)
|
||||
end
|
||||
end
|
||||
|
||||
oUF:AddElement("DruidAltMana", VisibilityPath, Enable, Disable)
|
||||
Reference in New Issue
Block a user