Tumble files around a bit

This commit is contained in:
2025-05-16 10:20:19 +02:00
parent 0e3166a410
commit 003f90126d
1595 changed files with 75381 additions and 70006 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
---@alias Color {r: number, g: number, b: number}
---@class Colorer
---@field colors table<number, Color>
---@field breakpoints table<number>
Colorer = {
--- Make sure colors and breakpoints always have the same number of entries! VERY IMPORTANT!
---@type table<number, Color>
colors = {
{ r = 0.62, g = 0.62, b = 0.62 }, -- Grey
{ r = 1, g = 1, b = 1 }, -- White
{ r = 0.12, g = 1, b = 0 }, -- Green
{ r = 0, g = 0.44, b = 0.87 }, -- Blue
{ r = 0.64, g = 0.21, b = 0.93 }, -- Purple
{ r = 1, g = 0.5, b = 0 }, -- Orange
{ r = 0.9, g = 0.8, b = 0.5 }, -- Light Gold
{ r = 0, g = 0.8, b = 1.0 }, -- Blizzard Blue
},
breakpoints = { -999, -10, -5, -2, 2, 5, 10, 999 },
---@param value number
---@return Color, nil|string
Interpolate = function(value)
local color = { r = 0, g = 0, b = 0 }
---@type table<number, table<number, number>>
local bracket = { { 0, 0 }, { 1, 1 } }
for i = 1, #Colorer.breakpoints do
if value < Colorer.breakpoints[i] then
bracket[2] = { i, Colorer.breakpoints[i] }
break
end
bracket[1] = { i, Colorer.breakpoints[i] }
end
---@type Color
local startColor = Colorer.colors[bracket[1][1]]
---@type Color
local endColor = Colorer.colors[bracket[2][1]]
local fraction = (value - bracket[1][2]) / (bracket[2][2] - bracket[1][2])
for k, v in pairs(startColor) do
color[k] = Colorer.lerp(v, endColor[k], fraction)
end
return color, nil
end,
---@param color Color
---@return string
RGBToHex = function(color)
local r = math.floor(color.r * 255)
local g = math.floor(color.g * 255)
local b = math.floor(color.b * 255)
return string.format("%02x%02x%02x", r, g, b)
end,
---@param a number
---@param b number
---@param t number
---@return number
lerp = function(a, b, t) return a * (1 - t) + b * t end,
}
setmetatable(Colorer, { __index = Colorer })

View File

@@ -0,0 +1,79 @@
-- TICKER_200
function()
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.MessageQueue then WeakAurasSaved.Cyka.MessageQueue = {} end
---@type Message
local message = WeakAurasSaved.Cyka.MessageQueue[1]
if not message then return end
if not message.message or message.message == "" then return end
if not message.channel or message.channel == "" then return end
-- Map channel names to ids
if message.channel == "CHANNEL" and message.data and string.match(message.data, "%D") then
print("Channel presented as string:", message.data)
local channelId = aura_env.channelIdMap[message.data]
if not channelId then
print("Channel not found, scanning")
aura_env.ScanChannels()
channelId = aura_env.channelIdMap[message.data]
end
if not channelId then
print("Channel not joined, joining")
channelId = aura_env.FindOrJoinChannel(message.data)
end
print("Channel resolved to id", channelId)
message.data = channelId
end
table.remove(WeakAurasSaved.Cyka.MessageQueue, 1)
SendChatMessage(message.message, message.channel, nil, message.data)
end
--INIT
---@type table<string, number>
aura_env.channelIdMap = {}
aura_env.FindOrJoinChannel = function(channelName, password)
local function GetChannelId(channelName)
local channels = {GetChannelList()}
for i = 1, #channels, 2 do
local id = channels[i]
local name = channels[i + 1]
if name == channelName then
return id
end
end
end
local channelId = GetChannelId(channelName)
if not channelId then
print("Channel", channelName, "not found, joining")
if password then
JoinPermanentChannel(channelName, password)
else
JoinPermanentChannel(channelName)
end
end
channelId = GetChannelId(channelName)
aura_env.channelIdMap[channelName] = channelId
return channelId
end
aura_env.ScanChannels = function()
local channels = {GetChannelList()}
for i = 1, #channels, 2 do
local id = channels[i]
local name = channels[i + 1]
aura_env.channelIdMap[name] = id
end
end
local channelId = aura_env.FindOrJoinChannel(aura_env.config.channel, aura_env.config.channelPassword)
print("Channel", aura_env.config.channel, "resolved to id", channelId)
--aura_env.iterator = 0
--WeakAurasSaved.Cyka.MessageQueue = {}
--for i = 1, 100 do
-- table.insert(WeakAurasSaved.Cyka.MessageQueue, {
-- channel = "CHANNEL",
-- data = aura_env.channelId,
-- message = "TEST" .. i
-- })
--end

View File

@@ -0,0 +1 @@
!TI1)VPnou8)x40KO6kikRBN0P7MUogDJE0aRo76pmTuCtCaVgSrXoS2n183(9E2jHKqOqNMkknX(9(8E(9f)E2EN456rw6rcWFWRYeDexW8it(K74rod9iHsHMW)oZZ5K(EeAIEHmEYknxkuadoga0pScyHlwLO9ijk27ykFVB9iFJhOxG0qcyH0KiywqAW)5gHauiOlbohSGkeSO0zoMpJyI5g(65rUJ9GhX3oVb7X2jV1t750)zl8AYBkvP(MmoOQC2mAznPIExvraOd4Qvr0hCz3dF8IvEKhMegQyGscSgZMd2lxJIQnuGWFDmfO76I38LrYyRnf)1388LMNNIpb2UVeO(jkTCjkWpTkGQbOzRzcTXhjxs1C)RnwaYzW3WO(5(mIstJ1WlaTHCbxTW(o8kokjqEJfBV3MlfpsNoD(h0sNottVnI9xkDmxm)40zIKL3YIFt6f0Ky6nmX6UzwXrbxsxLo7VtN9Jhln75CrWK4lKCrHxaijmry0V2zmJbca4RY8ehLEr6m7FrsFA0ggsN9EMEqUelZEjEQXBgrkRYTH)XCLU9rpUnFHY40zCd5NaA1VLda8E)0zbYT5OMe5bgMZ57Z8VSxwWi1AmLo73bf4jyLhwW3ggDmdOxWe7MX8)Iz6KyHrF3jTmrdtwzWQuCrZw)rwtYb49mRkPUcNnVCwbXK62TYaS1XvSbWxTmWektebWxFfIbHy4wneOGImp2BF2omuEklEjvazFzIE)HXf2Qif7Nh7JEoEINTHVXm6pxI2VuoaDujrLhhvAkJQuGiXNMN)RQUbWr7kGz)PRp)00Nr65prAzZ2prHHJx3tzE0yAYU3(S9gPifH855c74YYVYmt3enUDcZUrRvmtjJwZWecjQ8LYVgHG1PtbZCnlMQr3bO79WPUMrV7myAfHcq0DWd3r7EjtPOZzFmHLWkku0Ptn34j96zDED6KBSmLG6YfkwSU9(qgG4hLzUw6GroTg8HZCCgogwsnqjuDLw1luSSBK(LwPBr2DiXTv6SUDX1ujIF0yXapUT)bOC685S4s9uzhytho5vIvj3Ak0tscd537rUzWze3BiUNDLBrlaFGrJWs)50onMzOLmD44Xydr3cmB7h5ddhp98pbdMGL)jytmGuTaP8iUJg8VdV6Mx1RNT5jLTxbRYCJvZYeAUc2uQCXE4n4TY2GT5PSrfv3i7PaRwq1orUXGVmXuiOnn9Kr9w7nv2vVpP85Y7ruSgkqWQQ57C28coJ4UfmHPkBniw8VvRNhIfzdLrCtkYtGyjRfyNWw(kyZeWKVDHQQ0Bwg55HqUgaEbr2mqZq2gp7cn46VOD55XTOEX7GQ5huZb43mfe3I7Nrv54(N4MALrDVDrwFd6k71xgPV0CBghwNn7AruPHgfuuDxD0SvnPYvGB)em8lyz2yhJ)Iw7ytCS90n3EwkBxsDpbanUEQRD7RA5okA0TOytdTvvlHZwgmMTuUMDiLbpPKyjawGUQZiPDTnroEReu8OE8OTZom6euPzflc01QLhwWdWt8YxYWQCqfMnf1mf9WZKUM5Ah8sjqSth4O24mc)fY4PGpb(yWqh3HxHhqfARqqJ(pOojuFboI8R9iFfefpeo8(4HNJNTLffMX2BN46o5sGn4G84YeoVowzdASjGNFwy8iWXWUuq5wy5yUTaROphh1wHKm4QHdDWj44XQbbx6m0KaWMJdMvluXq8v5fTfsbdfYskxC4uxCQ8dJE00IlY7E)h9zlFvO69eGcP)6C70F07Ly9BOBGRm3erUxY0IhkMIly5S52s51Vieko(P9Tk39Sa7vl40hHnssn3Deec4BUoj8IsYDX(ragBnQcVqPAdQT31Kh58y(3tN9XeAqSjxW1OSWIUF3tED3x6rwd(Pt7JxiI3)d