Tumble files around a bit
This commit is contained in:
92
WeakAuras/Projects/ChatKeyScanner/event.lua
Normal file
92
WeakAuras/Projects/ChatKeyScanner/event.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
---@diagnostic disable: undefined-field
|
||||
-- CHAT_MSG_CHANNEL TICKER_1000
|
||||
---@param allstates allstates
|
||||
function(allstates, e, ...)
|
||||
if e == "CHAT_MSG_CHANNEL" then
|
||||
local message, author, _, channel = ...
|
||||
if message == nil or author == nil then return end
|
||||
if string.find(message, "Hkeystone") then
|
||||
local keyid, level = string.match(message, "Hkeystone:(%d+):(%d+)")
|
||||
if keyid == nil or level == nil then return end
|
||||
keyid = tonumber(keyid)
|
||||
level = tonumber(level)
|
||||
---@cast keyid number
|
||||
---@cast level number
|
||||
author = string.gsub(author, "%-.+$", "")
|
||||
|
||||
local keyname = aura_env.KeystoneIdMap[keyid]
|
||||
if keyname == nil then
|
||||
DevTools_Dump({ "Failed getting key name from", keyid, level, message })
|
||||
return
|
||||
end
|
||||
---@cast keyname string
|
||||
|
||||
local keykeyname = string.gsub(keyname, " ", "_")
|
||||
keykeyname = string.gsub(keykeyname, "'", "")
|
||||
keykeyname = string.gsub(keykeyname, ":", "")
|
||||
local targetLevel = aura_env.config[keykeyname] or 15
|
||||
local leveldelta = level - targetLevel
|
||||
|
||||
local color, _ = aura_env.Colorer.Interpolate(leveldelta)
|
||||
local r = math.floor(color.r * 255)
|
||||
local g = math.floor(color.g * 255)
|
||||
local b = math.floor(color.b * 255)
|
||||
local hexColor = string.format("%02x%02x%02x", r, g, b)
|
||||
-- For some reason Colorer.RGBToHex does not work with some strange lua error
|
||||
-- It works when ran standalone with lua54 but not in a weakaura
|
||||
-- Whatever...
|
||||
local formattedName = string.format("|cFF%s%s|r", hexColor, keyname)
|
||||
allstates[author .. keyid .. level] = {
|
||||
show = true,
|
||||
changed = true,
|
||||
keyid = keyid,
|
||||
level = level,
|
||||
targetLevel = targetLevel,
|
||||
leveldelta = leveldelta,
|
||||
name = formattedName,
|
||||
keyname = keyname,
|
||||
color = color,
|
||||
-- tooltip = message, -- Tooltip doesn't work for some reason...
|
||||
author = author,
|
||||
channel = channel,
|
||||
progressType = "timed",
|
||||
duration = 60,
|
||||
expirationTime = GetTime() + 60,
|
||||
autohide = true,
|
||||
index = GetTime(),
|
||||
progress = "0s",
|
||||
}
|
||||
return true
|
||||
end
|
||||
else
|
||||
if e == "TICKER_1000" then
|
||||
local ttl = aura_env.config.expirationtime
|
||||
for _, state in pairs(allstates) do
|
||||
if state.progress then
|
||||
local elapsedTime = GetTime() - state.index
|
||||
if elapsedTime > ttl then
|
||||
state.show = false
|
||||
state.changed = true
|
||||
else
|
||||
local prettyTime = ""
|
||||
|
||||
local minutes = 0
|
||||
while elapsedTime > 60 do
|
||||
elapsedTime = elapsedTime - 60
|
||||
minutes = minutes + 1
|
||||
end
|
||||
if minutes > 0 then
|
||||
prettyTime = string.format("%s%dm", prettyTime, minutes)
|
||||
end
|
||||
if elapsedTime > 0 then
|
||||
prettyTime = string.format("%s %ds", prettyTime, elapsedTime)
|
||||
end
|
||||
state.progress = prettyTime
|
||||
state.changed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user