local NanamiDPS = NanamiDPS function NanamiDPS.round(input, places) if not places then places = 0 end if type(input) == "number" and type(places) == "number" then local pow = 1 for i = 1, places do pow = pow * 10 end return floor(input * pow + 0.5) / pow end return 0 end function NanamiDPS.trim(str) if not str then return "" end return gsub(str, "^%s*(.-)%s*$", "%1") end function NanamiDPS.spairs(t, order) local keys = {} for k in pairs(t) do table.insert(keys, k) end if order then table.sort(keys, function(a, b) return order(t, a, b) end) else table.sort(keys) end local i = 0 return function() i = i + 1 if keys[i] then return keys[i], t[keys[i]] end end end local rgbcache = {} function NanamiDPS.str2rgb(text) if not text then return 1, 1, 1 end if rgbcache[text] then return unpack(rgbcache[text]) end local counter = 1 local l = string.len(text) for i = 1, l, 3 do counter = mod(counter * 8161, 4294967279) + (string.byte(text, i) * 16776193) + ((string.byte(text, i + 1) or (l - i + 256)) * 8372226) + ((string.byte(text, i + 2) or (l - i + 256)) * 3932164) end local hash = mod(mod(counter, 4294967291), 16777216) local r = (hash - (mod(hash, 65536))) / 65536 local g = ((hash - r * 65536) - (mod((hash - r * 65536), 256))) / 256 local b = hash - r * 65536 - g * 256 rgbcache[text] = { r / 255, g / 255, b / 255 } return unpack(rgbcache[text]) end function NanamiDPS.formatNumber(num) if not num then return "0" end if num >= 1000000 then return NanamiDPS.round(num / 1000000, 1) .. "M" elseif num >= 1000 then return NanamiDPS.round(num / 1000, 1) .. "K" end return tostring(math.floor(num)) end function NanamiDPS.formatTime(seconds) if not seconds or seconds <= 0 then return "0:00" end local m = math.floor(seconds / 60) local s = math.floor(seconds - m * 60) if s < 10 then return m .. ":0" .. s end return m .. ":" .. s end function NanamiDPS.GetClassColor(class) if class and RAID_CLASS_COLORS and RAID_CLASS_COLORS[class] then return RAID_CLASS_COLORS[class].r, RAID_CLASS_COLORS[class].g, RAID_CLASS_COLORS[class].b end return 0.6, 0.6, 0.6 end NanamiDPS.validClasses = { WARRIOR = true, MAGE = true, ROGUE = true, DRUID = true, HUNTER = true, SHAMAN = true, PRIEST = true, WARLOCK = true, PALADIN = true, }