PageRenderTime 33ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/Tukui/modules/unitframes/core/oUF/elements/altpowerbar.lua

http://github.com/Asphyxia/Tukui
Lua | 82 lines | 62 code | 20 blank | 0 comment | 9 complexity | 5980bb27c8e31cb9ac6959bdb88709e0 MD5 | raw file
  1. local parent, ns = ...
  2. local oUF = ns.oUF
  3. local ALTERNATE_POWER_INDEX = ALTERNATE_POWER_INDEX
  4. local UpdatePower = function(self, event, unit, powerType)
  5. if(self.unit ~= unit or powerType ~= 'ALTERNATE') then return end
  6. local altpowerbar = self.AltPowerBar
  7. if(altpowerbar.PreUpdate) then
  8. altpowerbar:PreUpdate()
  9. end
  10. local barType, min = UnitAlternatePowerInfo(unit)
  11. local cur = UnitPower(unit, ALTERNATE_POWER_INDEX)
  12. local max = UnitPowerMax(unit, ALTERNATE_POWER_INDEX)
  13. altpowerbar.barType = barType
  14. altpowerbar:SetMinMaxValues(min, max)
  15. altpowerbar:SetValue(cur)
  16. if(altpowerbar.PostUpdate) then
  17. return altpowerbar:PostUpdate(min, cur, max)
  18. end
  19. end
  20. local ForceUpdate = function(element)
  21. return UpdatePower(element.__owner, 'ForceUpdate', element.__owner.unit, 'ALTERNATE')
  22. end
  23. local Toggler = function(self, event, unit)
  24. if(unit ~= self.unit) then return end
  25. local altpowerbar = self.AltPowerBar
  26. local barType, minPower, _, _, _, hideFromOthers = UnitAlternatePowerInfo(unit)
  27. if(barType and (not hideFromOthers or unit == 'player' or self.realUnit == 'player')) then
  28. self:RegisterEvent('UNIT_POWER', UpdatePower)
  29. self:RegisterEvent('UNIT_MAXPOWER', UpdatePower)
  30. ForceUpdate(altpowerbar)
  31. altpowerbar:Show()
  32. else
  33. self:UnregisterEvent('UNIT_POWER', UpdatePower)
  34. self:UnregisterEvent('UNIT_MAXPOWER', UpdatePower)
  35. altpowerbar:Hide()
  36. end
  37. end
  38. local Enable = function(self, unit)
  39. local altpowerbar = self.AltPowerBar
  40. if(altpowerbar) then
  41. altpowerbar.__owner = self
  42. altpowerbar.ForceUpdate = ForceUpdate
  43. self:RegisterEvent('UNIT_POWER_BAR_SHOW', Toggler)
  44. self:RegisterEvent('UNIT_POWER_BAR_HIDE', Toggler)
  45. altpowerbar:Hide()
  46. PlayerPowerBarAlt:UnregisterEvent'UNIT_POWER_BAR_SHOW'
  47. PlayerPowerBarAlt:UnregisterEvent'UNIT_POWER_BAR_HIDE'
  48. PlayerPowerBarAlt:UnregisterEvent'PLAYER_ENTERING_WORLD'
  49. return true
  50. end
  51. end
  52. local Disable = function(self, unit)
  53. local altpowerbar = self.AltPowerBar
  54. if(altpowerbar) then
  55. self:UnregisterEvent('UNIT_POWER_BAR_SHOW', Toggler)
  56. self:UnregisterEvent('UNIT_POWER_BAR_HIDE', Toggler)
  57. PlayerPowerBarAlt:RegisterEvent'UNIT_POWER_BAR_SHOW'
  58. PlayerPowerBarAlt:RegisterEvent'UNIT_POWER_BAR_HIDE'
  59. PlayerPowerBarAlt:RegisterEvent'PLAYER_ENTERING_WORLD'
  60. end
  61. end
  62. oUF:AddElement('AltPowerBar', Toggler, Enable, Disable)