/Tukui/modules/unitframes/core/oUF/elements/range.lua
Lua | 62 lines | 50 code | 11 blank | 1 comment | 14 complexity | 3a20fc79cda20a71662be59494dc6f6e MD5 | raw file
- local parent, ns = ...
- local oUF = ns.oUF
- local _FRAMES = {}
- local OnRangeFrame
- local UnitInRange, UnitIsConnected = UnitInRange, UnitIsConnected
- -- updating of range.
- local timer = 0
- local OnRangeUpdate = function(self, elapsed)
- timer = timer + elapsed
- if(timer >= .20) then
- for _, object in next, _FRAMES do
- if(object:IsShown()) then
- local range = object.Range
- if(UnitIsConnected(object.unit) and not UnitInRange(object.unit)) then
- if(object:GetAlpha() == range.insideAlpha) then
- object:SetAlpha(range.outsideAlpha)
- end
- elseif(object:GetAlpha() ~= range.insideAlpha) then
- object:SetAlpha(range.insideAlpha)
- end
- end
- end
- timer = 0
- end
- end
- local Enable = function(self)
- local range = self.Range
- if(range and range.insideAlpha and range.outsideAlpha) then
- table.insert(_FRAMES, self)
- if(not OnRangeFrame) then
- OnRangeFrame = CreateFrame"Frame"
- OnRangeFrame:SetScript("OnUpdate", OnRangeUpdate)
- end
- OnRangeFrame:Show()
- end
- end
- local Disable = function(self)
- local range = self.Range
- if(range) then
- for k, frame in next, _FRAMES do
- if(frame == self) then
- table.remove(_FRAMES, k)
- break
- end
- end
- if(#_FRAMES == 0) then
- OnRangeFrame:Hide()
- end
- end
- end
- oUF:AddElement('Range', nil, Enable, Disable)