WoWInterface SVN Eui

[/] [Eui/] [lib/] [oUF/] [elements/] [range.lua] - Rev 2

Compare with Previous | Blame | View Log

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)

Compare with Previous | Blame