PageRenderTime 14ms CodeModel.GetById 6ms RepoModel.GetById 0ms app.codeStats 0ms

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

http://github.com/Asphyxia/Tukui
Lua | 62 lines | 50 code | 11 blank | 1 comment | 14 complexity | 3a20fc79cda20a71662be59494dc6f6e MD5 | raw file
  1. local parent, ns = ...
  2. local oUF = ns.oUF
  3. local _FRAMES = {}
  4. local OnRangeFrame
  5. local UnitInRange, UnitIsConnected = UnitInRange, UnitIsConnected
  6. -- updating of range.
  7. local timer = 0
  8. local OnRangeUpdate = function(self, elapsed)
  9. timer = timer + elapsed
  10. if(timer >= .20) then
  11. for _, object in next, _FRAMES do
  12. if(object:IsShown()) then
  13. local range = object.Range
  14. if(UnitIsConnected(object.unit) and not UnitInRange(object.unit)) then
  15. if(object:GetAlpha() == range.insideAlpha) then
  16. object:SetAlpha(range.outsideAlpha)
  17. end
  18. elseif(object:GetAlpha() ~= range.insideAlpha) then
  19. object:SetAlpha(range.insideAlpha)
  20. end
  21. end
  22. end
  23. timer = 0
  24. end
  25. end
  26. local Enable = function(self)
  27. local range = self.Range
  28. if(range and range.insideAlpha and range.outsideAlpha) then
  29. table.insert(_FRAMES, self)
  30. if(not OnRangeFrame) then
  31. OnRangeFrame = CreateFrame"Frame"
  32. OnRangeFrame:SetScript("OnUpdate", OnRangeUpdate)
  33. end
  34. OnRangeFrame:Show()
  35. end
  36. end
  37. local Disable = function(self)
  38. local range = self.Range
  39. if(range) then
  40. for k, frame in next, _FRAMES do
  41. if(frame == self) then
  42. table.remove(_FRAMES, k)
  43. break
  44. end
  45. end
  46. if(#_FRAMES == 0) then
  47. OnRangeFrame:Hide()
  48. end
  49. end
  50. end
  51. oUF:AddElement('Range', nil, Enable, Disable)