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

http://github.com/Asphyxia/Tukui · Lua · 46 lines · 40 code · 6 blank · 0 comment · 7 complexity · 669e285501a93e45a5309b234a89cb99 MD5 · raw file

  1. local parent, ns = ...
  2. local oUF = ns.oUF
  3. local Update = function(self, event)
  4. local unit = self.unit
  5. if((UnitInParty(unit) or UnitInRaid(unit)) and UnitIsPartyLeader(unit)) then
  6. self.Leader:Show()
  7. else
  8. self.Leader:Hide()
  9. end
  10. end
  11. local Path = function(self, ...)
  12. return (self.Leader.Override or Update) (self, ...)
  13. end
  14. local ForceUpdate = function(element)
  15. return Path(element.__owner, 'ForceUpdate')
  16. end
  17. local Enable = function(self)
  18. local leader = self.Leader
  19. if(leader) then
  20. leader.__owner = self
  21. leader.ForceUpdate = ForceUpdate
  22. self:RegisterEvent("PARTY_LEADER_CHANGED", Path)
  23. self:RegisterEvent("PARTY_MEMBERS_CHANGED", Path)
  24. if(leader:IsObjectType"Texture" and not leader:GetTexture()) then
  25. leader:SetTexture[[Interface\GroupFrame\UI-Group-LeaderIcon]]
  26. end
  27. return true
  28. end
  29. end
  30. local Disable = function(self)
  31. local leader = self.Leader
  32. if(leader) then
  33. self:UnregisterEvent("PARTY_LEADER_CHANGED", Path)
  34. self:UnregisterEvent("PARTY_MEMBERS_CHANGED", Path)
  35. end
  36. end
  37. oUF:AddElement('Leader', Path, Enable, Disable)