Add files via upload
This commit is contained in:
@@ -69,6 +69,37 @@ function addon.Media.Brighten(factor, r, g, b, a)
|
||||
a
|
||||
end
|
||||
|
||||
-- ==================================================================
|
||||
-- Colour presets for the threat gradient (2.6)
|
||||
-- Each preset defines 4 stops: low (0%), medium (50%), high (80%), aggro (100%)
|
||||
-- ==================================================================
|
||||
addon.Media.COLOR_PRESETS = {
|
||||
kui = {
|
||||
low = { 0.33, 0.80, 0.33 },
|
||||
medium = { 1.00, 0.85, 0.00 },
|
||||
high = { 1.00, 0.50, 0.00 },
|
||||
aggro = { 1.00, 0.10, 0.10 },
|
||||
},
|
||||
cool = {
|
||||
low = { 0.20, 0.55, 1.00 },
|
||||
medium = { 0.55, 0.35, 1.00 },
|
||||
high = { 1.00, 0.35, 0.55 },
|
||||
aggro = { 1.00, 0.10, 0.10 },
|
||||
},
|
||||
mono = {
|
||||
low = { 0.55, 0.55, 0.55 },
|
||||
medium = { 0.80, 0.80, 0.80 },
|
||||
high = { 1.00, 1.00, 1.00 },
|
||||
aggro = { 1.00, 0.20, 0.20 },
|
||||
},
|
||||
warband = {
|
||||
low = { 0.20, 0.90, 0.90 },
|
||||
medium = { 0.60, 0.90, 0.30 },
|
||||
high = { 1.00, 0.80, 0.20 },
|
||||
aggro = { 1.00, 0.10, 0.10 },
|
||||
},
|
||||
}
|
||||
|
||||
-- ==================================================================
|
||||
-- Helper: get smooth interpolated threat colour
|
||||
-- ==================================================================
|
||||
@@ -76,25 +107,28 @@ function addon.Media.GetThreatColour(pct)
|
||||
pct = tonumber(pct) or 0
|
||||
pct = math.min(100, math.max(0, pct))
|
||||
|
||||
local c = addon.Media.COLOURS
|
||||
local presetName = (RelationshipsThreatPlatesDB and RelationshipsThreatPlatesDB.colorPreset) or "kui"
|
||||
local p = addon.Media.COLOR_PRESETS[presetName] or addon.Media.COLOR_PRESETS.kui
|
||||
local lo, md, hi, ag = p.low, p.medium, p.high, p.aggro
|
||||
local r, g, b
|
||||
|
||||
if pct < 50 then
|
||||
local t = pct / 50
|
||||
r = c.THREAT_LOW.r + (c.THREAT_MEDIUM.r - c.THREAT_LOW.r) * t
|
||||
g = c.THREAT_LOW.g + (c.THREAT_MEDIUM.g - c.THREAT_LOW.g) * t
|
||||
b = c.THREAT_LOW.b + (c.THREAT_MEDIUM.b - c.THREAT_LOW.b) * t
|
||||
r = lo[1] + (md[1] - lo[1]) * t
|
||||
g = lo[2] + (md[2] - lo[2]) * t
|
||||
b = lo[3] + (md[3] - lo[3]) * t
|
||||
elseif pct < 80 then
|
||||
local t = (pct - 50) / 30
|
||||
r = c.THREAT_MEDIUM.r + (c.THREAT_HIGH.r - c.THREAT_MEDIUM.r) * t
|
||||
g = c.THREAT_MEDIUM.g + (c.THREAT_HIGH.g - c.THREAT_MEDIUM.g) * t
|
||||
b = c.THREAT_MEDIUM.b + (c.THREAT_HIGH.b - c.THREAT_MEDIUM.b) * t
|
||||
r = md[1] + (hi[1] - md[1]) * t
|
||||
g = md[2] + (hi[2] - md[2]) * t
|
||||
b = md[3] + (hi[3] - md[3]) * t
|
||||
else
|
||||
local t = (pct - 80) / 20
|
||||
t = math.min(1, math.max(0, t))
|
||||
r = c.THREAT_HIGH.r + (c.THREAT_AGGRO.r - c.THREAT_HIGH.r) * t
|
||||
g = c.THREAT_HIGH.g + (c.THREAT_AGGRO.g - c.THREAT_HIGH.g) * t
|
||||
b = c.THREAT_HIGH.b + (c.THREAT_AGGRO.b - c.THREAT_HIGH.b) * t
|
||||
if t > 1 then t = 1 end
|
||||
if t < 0 then t = 0 end
|
||||
r = hi[1] + (ag[1] - hi[1]) * t
|
||||
g = hi[2] + (ag[2] - hi[2]) * t
|
||||
b = hi[3] + (ag[3] - hi[3]) * t
|
||||
end
|
||||
|
||||
return r, g, b
|
||||
|
||||
Reference in New Issue
Block a user