Add coloring to riochecker

This commit is contained in:
2024-06-05 17:29:21 +02:00
parent 69278e7736
commit 312cff3f68
3 changed files with 139 additions and 11 deletions

View File

@@ -1,13 +1,13 @@
-- CHAT_MSG_SYSTEM
function(e, msg)
-- if e == "OPTIONS" then
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Return to Karazhan: Lower / isDPS / +++5 / 8m29s / 59.1 ")
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Cathedral of Eternal Night / isDPS / +++2 / 9m41s / 23.4 ")
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Seat of the Triumvirate / isDPS / +++14 / 14m54s / 165.5 ")
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Return to Karazhan: Upper / isDPS / +++11 / 10m23s / 128.0 ")
-- WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")
-- end
if e == "OPTIONS" then
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Return to Karazhan: Lower / isDPS / +++5 / 8m29s / 59.1 ")
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Cathedral of Eternal Night / isDPS / +++2 / 9m41s / 23.4 ")
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Seat of the Triumvirate / isDPS / +++14 / 14m54s / 165.5 ")
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "-> Return to Karazhan: Upper / isDPS / +++11 / 10m23s / 128.0 ")
WeakAuras.ScanEvents("CHAT_MSG_SYSTEM", "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")
end
if not msg then return end
if string.byte(msg, 1) + string.byte(msg, 6) == 77 then
aura_env.reading = not aura_env.reading

View File

@@ -0,0 +1 @@
!TV1dtTnUs8plxA7mjhbtsiqlDA7CuU0wOqGbhoMB4vNO4OK4IJDgj7uOT4p7VDLK)BSnM3rVoZBAHAKTK(P9FA3vXBmABmWqFHH(e8xOPRVNTLd1qFWho8GpE6fdo(W(9m0N664PB9vQr)27AO75AUIY4wUog9FERTB1YqN47n3LD6sp4HCaipapl(sBYTdO3a38mtdDtFUN7c59t9DmXXwVrWrbJK)WOE(mNGreFgzi1zLMcbDpMLZSGJOoavE7PtNYPEg972bwwgDgaYGBxcuSNayo1E6zUwoqZd61FqVZH1112Lb0u)2IF7iUUT4Ax8Qxss7ILtiEaA(Q)cmM7cINL5Lwt8MBOVpCp8uZqgvN7ryEso2YXcBPpXDOeqJ3gcncKIRwqdg96GrxadUpzbTEnKhPSAGKiAmmkzcYZ4aNsS50e9n132(ekNtMjb6B3LOZ0ImS7A1aj8rBU5M)HPnHZdgbYdg9auMqzYoMArTNemsiNGb4rgBtFLJ)IXuwZGrIH(MuJCmqFxVeLYzg(BsqkPwhbHgRQbScgDc5AGd4(mA8AtCYcpX(lKBH)oNScgN3CCkeugkxXGrUtdgrDagMY)TGr)vVZ)7GrhEYzNE(G97p43sTM)HhyPuidgoWqAjnjh(Z3advrFT02Tdm7zjVzC0nbJURjUMbJEpJEBjW0Uz4JML5EjyTJr6Y5wE0sPO2XuuwCALIIOoLHtgsQLw3UjyUx88yOERTF5u0UDtiJ60obm7TDmmN5ZwAtFasPwA70mxE7ugXz2ddPojrsRJKSEisNxKaG2ATskDS(6xjSjzLtjXpLXUWKtScTBHx7iUUT4AxX1D2bV(CX19G)PalLv(scJSiy0kcUOH7tsnIqxTctFajhl7VZvUzdh3HoEu2sxBWnO0puOlBbUnwxcz7AsSvBFczLyr2SOwX6SKe(9UnnZTkhoVPq6ymJyEn1lKsuYvL25BsdbCZLKoYGXuKfSImyEsUE10sP7M4UomH)ynnsD8Qeb4kcSRS(KWvNtXigB(i4YR68Pqg1QzvxH7Qc8WukEyqi5I7mK0A)4qAY1Qe7fbwfAoiItFqKTz(KH01)vXuo87N(FFnbs(bUIDcxXIGCktM7HaY6kBQntkSbmAemAlO3eGIMhRpQJkWW)AqpTcuxWQSKyX41JfEnk3qxWoxD9NkHJTbVk1x1mw6adVzmJ1OYA(qNyMXoXIhemNI8lsY3NOQ3XL2Rx5(tZ2hYRPDEsqhGO3SgfZqab(7G6RTqLbdC0gcY63XL)OucL7sLz3hP3EmDf1(hzwDrRXVYO7xz09Rm6QygDICneP1TJiRo8IO1Ey6DB)RC5(PKlxOVS)X5XLhqpE5Wvi6)CZF7Hqw)GYDlIe(xjVTIwT))mNTiU9x5R9OMVwWrOtehxGYUe23SpiV56qMqt0o42Rjkxg53L8d7tIuzGODYFs8kdQWbKeWSzsMk1qhr(zHrvs0bZ1o)oSLjjMtpEwfGfhpLqSobPH1tYms19XK5GLqJNMuZzaPj5CgqgsppRkR7znuSs2r4q)sARlKyBkjPMQfUPe(Mkqko2m(jDlqJt9wq9iIyQ1)MmIyHB2ho0Yzc9gXebryZYgPNlp(ZroIMX1TX9h5jKkLsIxlPxn5TvDYxN8WgEUsldbbOjKvVCbXZCE9ApBYgpTwdyJh6iSvE(EkYZSldGWJorCcv0hhRSdRNinQ6XStfegr7wf4xTScc)jHeuOn0KeD9AF3C60N1QZnr)FY3z1AMLP0ycprD2zN17AwCxvMCse0jjuJtSkpirtbblUpf2XQ9kRPWIIBLuzfAi9dwvzhzSEFQkEgvLKKZvvj76rrvPYxlRQYUIIMkQQc9qNrg8Sn3UfeA5zB(IexB3k8p1cPgLprr7mogfpt6D8HT9PrPPaNdA3LZmIOoHgw0i)XiJW8AvOM8htSPISv(JsgO51Qio5pMy)dXEiL8CK7WIuqyeKJYxqKmuB2WyZj85vkMqiaIqtqAZoMGHW3kwphlzsRStXOyaUABvRrLYDugKSOCfCHT3SC6oKUh7c0fXj5hK0cyQ0bURZ(nvWLJyiYLIKAKPLfjBy4PbY9GyrZtrNPNO89cx8mtyU(QxRWqDF5E1srzhvPJmMMMYjN3ecDWxSmdZRGZmf6wxjjrKG0tyOdBEcjz05azrVY7Io8JL80psaY9Cpakx9ebuqE6Qd3gMQt9vnYq(H3uYRypL5nGdAG(FCqluLhZy2lcLZyUMuopz9peF6uLWz9SH4fZ(l4ZsjaYREbkqGeJF55IMmYMmZlyrrMn4UnFt9RcUBRpTrJTkRH2gnEATCpd71QS9vWpJ7pUUKGa0FgFdm8qTAnEqteM2tlCEroPtorfZxRSfCTG8IzgkVkDQrUZtotLeU0jUM4xmtUkP10tTe17PJ)CyI)AWzrQFVA8cCMjK5L7ebnwV6jst24TzkAOAovk8GRxjH5LyCO6nYh5uik3GYDzEc)cnLsGiN5PQbPKUFIoyCWOTy(v5S0hH1b0ulhl(Crnbb3bkSzZOmUScKge9artrLlfwIqGof0boE6(tNADJH(Wd2xFWq9b7F(GWbnCU1eSwNaDewYwaPG(vm0BBOlMQH(bZjqed1g(ympJrfyQFwVJpoEjrw7GpS)GHNO)(H6)T(GENe7UQov6xjH8b1(OHiwyrNE2GdpTVETImfIewWHOio9qQGxVwMvty3UP4to5F5FZBF2dGKFtWOZdducPd8ri42xNtCEzWOJD)cgTElqAX)ZZ0fT2yJn2r04fl6Shx0AN90A)yqfhqaX)egUfhFXz9Gt94G303A2CV1jJoIg7TOBBjz0zBTUpgKHofT7CNQEJEdyw(lwzXeVXHS0q7UIwT7UyNUsQO9U7OTZpqDYflxMNoPDB5Q3ArNTvesNxGVVN)HeYpB75uE)IsJuKIq6KixBGQ4lJVfo1Sm6EB5hO56DSBdPJGN)8I8aKB9mkiL16j34mRp)Yd6uAnsUwmNuPQwiu5KOw1(CUlwzuv2kp25QNKptghJf1YPxBrHZYxsTTpCIQ4CfXe4q0I0wVrHzKbMuHu8DunuHDWdrOWXhl5vDzfScXJOJHqxYYX9d9o(S3DXXYbfhYddj2VtUHb5EepFGM850HYAeapbcwdTLgym3GGUotSKLOBrrafRYyiNGXN4orSk4te8ZBZYxrcaSAGZLJ2odhLx060b7d1ax0)Wbdbo599guPmaKXStmRmXR5U(mtAJC2(l75E9aKASIa9QcuUAZeRR5E3yXrFJEe2mQh4yQYZ8q(zIfRIZvLAB0hktCrvhn91xNeNb(EOOu1STCcvOmUtdMo(AZGCYu7uRxtZCoEOMrAAssbdyC5hoemlpVM8TI1m1Y0qTboVDMQ)8bkXglo98n1ZXEflo)plSAwH14UZTYsAFfDGCyITeYsJN4yo3LLPK6TCKzz8xHFna6SRH(Nbc0Aka1X9EhyU(fx2KlzKLg6xg1Yc4JZp80dMtnVg3yDty183cYAMbcdypeKnnU0Qf(D4tLEu0p48E96JPxFdDISC873b)Yh4JWA2T3UNw38DTmNHZ1AH0PqIk0xTb0Xf)(ne61qjp5u447GZrGhxqSCQ(OJY1VAJ3tOKox81wq5cf6AQ1SO2H(Te3B7seFTmaN3MIVPg(2EwH6qX7QBTNYXVMgzEON8BWHH(7GeYGdh464IhrycKIMykg6D0AVR22g6RarF3oOI34)(d

View File

@@ -3,6 +3,117 @@ aura_env.reading = false
aura_env.fullMessage = {}
aura_env.displayString = ""
---@class ScoreColorer
---@field colors table<number, Color>
---@field breakpoints table<number>
aura_env.ScoreColorer = {
--- 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 = 1, g = 0.2, b = 0.23 },
{ r = 0, g = 0.8, b = 1.0 }, -- Blizzard Blue
},
breakpoints = { 0, 100, 200, 300, 400, 550, 750, 9999 },
---@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, #aura_env.ScoreColorer.breakpoints do
if value < aura_env.ScoreColorer.breakpoints[i] then
bracket[2] = { i, aura_env.ScoreColorer.breakpoints[i] }
break
end
bracket[1] = { i, aura_env.ScoreColorer.breakpoints[i] }
end
---@type Color
local startColor = aura_env.ScoreColorer.colors[bracket[1][1]]
---@type Color
local endColor = aura_env.ScoreColorer.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] = aura_env.ScoreColorer.lerp(v, endColor[k], fraction)
end
return color, nil
end,
---@param a number
---@param b number
---@param t number
---@return number
lerp = function(a, b, t)
return a * (1 - t) + b * t
end
}
---@class KeyLevel
---@field colors table<number, Color>
---@field breakpoints table<number>
aura_env.KeyLevel = {
--- 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 = 1, g = 0.2, b = 0.23 },
{ r = 0, g = 0.8, b = 1.0 }, -- Blizzard Blue
},
breakpoints = { 1, 10, 15, 20, 25, 29, 33, 9999 },
---@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, #aura_env.KeyLevel.breakpoints do
if value < aura_env.KeyLevel.breakpoints[i] then
bracket[2] = { i, aura_env.KeyLevel.breakpoints[i] }
break
end
bracket[1] = { i, aura_env.KeyLevel.breakpoints[i] }
end
---@type Color
local startColor = aura_env.KeyLevel.colors[bracket[1][1]]
---@type Color
local endColor = aura_env.KeyLevel.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] = aura_env.KeyLevel.lerp(v, endColor[k], fraction)
end
return color, nil
end,
---@param a number
---@param b number
---@param t number
---@return number
lerp = function(a, b, t)
return a * (1 - t) + b * t
end
}
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
if not WeakAurasSaved.Cyka.MData then WeakAurasSaved.Cyka.MData = {} end
@@ -11,7 +122,7 @@ if not WeakAurasSaved.Cyka.MData then WeakAurasSaved.Cyka.MData = {} end
---@field role string
---@field level string
---@field time string
---@field score string
---@field score number
Key = {
---@return Key
---@param name string
@@ -23,14 +134,30 @@ Key = {
local self = setmetatable({}, {
__index = Key,
__tostring = function(self)
return string.format("%-30s %-8s %-8s %-10s %-10s", self.name, self.role, self.level, self.time, self.score)
local score = self.score
local keyLevel = tonumber(self.level:match("%d+$")) or 0
local formattedScore, err = aura_env.ScoreColorer.Interpolate(self.score)
if not err then
score = string.format("|cff%02x%02x%02x%d|r", formattedScore.r * 255, formattedScore.g * 255,
formattedScore.b * 255, self.score)
end
local formattedLevel, err = aura_env.KeyLevel.Interpolate(keyLevel)
if not err then
level = string.format("|cff%02x%02x%02x%s|r", formattedLevel.r * 255, formattedLevel.g * 255,
formattedLevel.b * 255, self.level)
end
return string.format("%-30s %-8s %-8s %-10s %-10s", self.name, self.role, level, self.time,
score)
end,
})
self.name = name
self.role = role
self.level = level
self.time = time
self.score = score
self.score = tonumber(score) or 0
return self
end,
---@return string