WoWInterface SVN mNameplates

[/] [trunk/] [mNameplates/] [Utils.lua] - Rev 2

Compare with Previous | Blame | View Log

local mNameplates = mNameplates

local Nameplates = LibStub("LibNameplate-1.0")

do
        local OnUpdateFuncs = {}
        local FuncElapsed = {}
        local UpdateFrame = CreateFrame("Frame")
        UpdateFrame:SetScript("OnUpdate", function(self, elapsed)
                for module, functions in pairs(OnUpdateFuncs) do
                        for func, data in pairs(functions) do
                                if data.updateRate then
                                        data.elapsed = data.elapsed + elapsed
                                        if data.elapsed > data.updateRate then
                                                func(module, data.elapsed)
                                                data.elapsed = 0
                                        end
                                else
                                        func(module, elapsed)
                                end
                        end
                end
        end)    
        
        function mNameplates:RegisterOnUpdate(module, func, updateRate)
                assert(module and func, "Usage: RegisterOnUpdate(module, func)")
                OnUpdateFuncs[module] = OnUpdateFuncs[module] or {}
                OnUpdateFuncs[module][func] = {updateRate = updateRate, elapsed = 0}
        end
        
        function mNameplates:UnregisterOnUpdate(module, func)
                assert(module and func, "Usage: UnregisterOnUpdate(module, func")
                if OnUpdateFuncs[module] then
                        OnUpdateFuncs[module][func] = nil
                end
        end
        
        function mNameplates:MouseOverUpdate()
                self = mNameplates
                local plate = Nameplates:GetNameplateByUnit("mouseover")
                if self.CurrentMouseOver and self.CurrentMouseOver ~= plate then
                        self.Callbacks:Fire("PlateMouseLeave", self.CurrentMouseOver, self:GetExtra(self.CurrentMouseOver))
                        local data = self:GetExtra(self.CurrentMouseOver)
                        if data then 
                                for i, frame in pairs(data) do 
                                        frame:SetFrameLevel(frame:GetFrameLevel() - 100)
                                end
                        end
                        self.CurrentMouseOver = nil
                        self:UnregisterOnUpdate(self, self.MouseOverUpdate)
                end
        end
end

function mNameplates:CondensedNumber(value)
        assert(value and type(value) == "number", "Usage CondensedNumber(number)")
        local result

        if value > 10000000 then
           result = ("%.fm"):format(value/1000000)
        elseif value > 1000000 then
           result = ("%.2fm"):format(value/1000000)
        elseif value > 100000 then
           result = ("%.0fk"):format(value/1000)
        elseif value > 1000 then
           result = ("%.1fk"):format(value/1000)
        end
        
        return result or value
end

Compare with Previous | Blame