forked from wow/OmicronFrames
Make status colors configurable
The aura based status colors can now be configured in frames.lua. This is important in TBC where some healers don't care about e.g. magic debuffs.
This commit is contained in:
1 parent
4567bea3f9
commit
0569c100a1
2 files changed
+65
-21
No files matched your search
@@ -26,6 +26,8 @@ local colors = {
|
|||||||
disease = { 0.4, 0.2, 0.0 },
|
disease = { 0.4, 0.2, 0.0 },
|
||||||
poison = { 0.0, 0.7, 0.7 },
|
poison = { 0.0, 0.7, 0.7 },
|
||||||
curse = { 0.7, 0.0, 0.7 },
|
curse = { 0.7, 0.0, 0.7 },
|
||||||
|
immune = { 0.0, 0.2, 0.4 },
|
||||||
|
bomb = { 1.0, 0.7, 0.7 },
|
||||||
red = { 1, 0, 0 },
|
red = { 1, 0, 0 },
|
||||||
blue = { 0.4, 0.4, 1 },
|
blue = { 0.4, 0.4, 1 },
|
||||||
light_blue = { 0.7, 0.7, 1 },
|
light_blue = { 0.7, 0.7, 1 },
|
||||||
@@ -833,6 +835,51 @@ local function TriggerConfig()
|
|||||||
return triggers
|
return triggers
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function StatusColorClassConfig()
|
||||||
|
local _, class = UnitClass("player")
|
||||||
|
if class == "DRUID" then
|
||||||
|
return {
|
||||||
|
{ status = "Curse", color = colors.curse },
|
||||||
|
{ status = "Poison", color = colors.poison },
|
||||||
|
}
|
||||||
|
elseif class == "MAGE" then
|
||||||
|
return {
|
||||||
|
{ status = "Curse", color = colors.curse },
|
||||||
|
}
|
||||||
|
elseif class == "PALADIN" then
|
||||||
|
return {
|
||||||
|
{ status = "Magic", color = colors.magic },
|
||||||
|
{ status = "Poison", color = colors.poison },
|
||||||
|
{ status = "Disease", color = colors.disease },
|
||||||
|
}
|
||||||
|
elseif class == "PRIEST" then
|
||||||
|
return {
|
||||||
|
{ status = "Magic", color = colors.magic },
|
||||||
|
{ status = "Disease", color = colors.disease },
|
||||||
|
}
|
||||||
|
elseif class == "SHAMAN" then
|
||||||
|
return {
|
||||||
|
{ status = "Poison", color = colors.poison },
|
||||||
|
{ status = "Disease", color = colors.disease },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function StatusColorConfig()
|
||||||
|
local statusColors = {
|
||||||
|
{ status = "Immune", color = colors.immune },
|
||||||
|
{ status = "Bomb", color = colors.bomb },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, entry in ipairs(StatusColorClassConfig()) do
|
||||||
|
table.insert(statusColors, entry)
|
||||||
|
end
|
||||||
|
|
||||||
|
return statusColors
|
||||||
|
end
|
||||||
|
|
||||||
local types = omif.GetModule("types")
|
local types = omif.GetModule("types")
|
||||||
local UnitFrame = types.UnitFrame
|
local UnitFrame = types.UnitFrame
|
||||||
local UnitGroup = types.UnitGroup
|
local UnitGroup = types.UnitGroup
|
||||||
|
|||||||
+18
-21
@@ -50,12 +50,6 @@ local colors = {
|
|||||||
low = { 1.0, 0.0, 0 },
|
low = { 1.0, 0.0, 0 },
|
||||||
offline = { 0.7, 0.7, 0.7 },
|
offline = { 0.7, 0.7, 0.7 },
|
||||||
dead = { 0.7, 0.7, 0.7 },
|
dead = { 0.7, 0.7, 0.7 },
|
||||||
magic = { 0.4, 0.4, 1.0 },
|
|
||||||
disease = { 0.4, 0.2, 0.0 },
|
|
||||||
poison = { 0.0, 0.7, 0.7 },
|
|
||||||
curse = { 0.7, 0.0, 0.7 },
|
|
||||||
immune = { 0.0, 0.2, 0.4 },
|
|
||||||
bomb = { 1.0, 0.7, 0.7 },
|
|
||||||
cyan = { 0.0, 0.8, 0.8 },
|
cyan = { 0.0, 0.8, 0.8 },
|
||||||
white = { 1.0, 1.0, 1.0 },
|
white = { 1.0, 1.0, 1.0 },
|
||||||
shield = { 0.85, 0.95, 1.0 },
|
shield = { 0.85, 0.95, 1.0 },
|
||||||
@@ -90,6 +84,8 @@ function UnitFrame:Init(unit, config)
|
|||||||
self.rangeEnemy = config.range.enemy
|
self.rangeEnemy = config.range.enemy
|
||||||
self.rangeFade = config.range.fade
|
self.rangeFade = config.range.fade
|
||||||
|
|
||||||
|
self.statusColors = config.statusColors
|
||||||
|
|
||||||
local secure = self:CreateSecureFrame(width, height)
|
local secure = self:CreateSecureFrame(width, height)
|
||||||
secure:Hide()
|
secure:Hide()
|
||||||
|
|
||||||
@@ -662,23 +658,24 @@ function UnitFrame:UpdateHealthColor()
|
|||||||
|
|
||||||
if not isFriend then
|
if not isFriend then
|
||||||
self.hp:SetColor(unpack(colors.hostile))
|
self.hp:SetColor(unpack(colors.hostile))
|
||||||
elseif self.auras.statusCount["Immune"] then
|
return
|
||||||
self.hp:SetColor(unpack(colors.immune))
|
end
|
||||||
elseif self.auras.statusCount["Bomb"] then
|
|
||||||
self.hp:SetColor(unpack(colors.bomb))
|
local statusColor = nil
|
||||||
elseif self.auras.statusCount["Magic"] then
|
for _, entry in ipairs(self.statusColors) do
|
||||||
self.hp:SetColor(unpack(colors.magic))
|
if self.auras.statusCount[entry.status] then
|
||||||
elseif self.auras.statusCount["Curse"] then
|
statusColor = entry.color
|
||||||
self.hp:SetColor(unpack(colors.curse))
|
break
|
||||||
elseif self.auras.statusCount["Poison"] then
|
end
|
||||||
self.hp:SetColor(unpack(colors.poison))
|
end
|
||||||
elseif self.auras.statusCount["Disease"] then
|
|
||||||
self.hp:SetColor(unpack(colors.disease))
|
if statusColor then
|
||||||
elseif isFriend and UnitIsDead(unit) then
|
self.hp:SetColor(unpack(statusColor))
|
||||||
|
elseif UnitIsDead(unit) then
|
||||||
self.hp:SetColor(unpack(colors.dead))
|
self.hp:SetColor(unpack(colors.dead))
|
||||||
elseif isFriend and pct >= 0.90 then
|
elseif pct >= 0.90 then
|
||||||
self.hp:SetColor(unpack(colors.healthy))
|
self.hp:SetColor(unpack(colors.healthy))
|
||||||
elseif isFriend and pct >= 0.75 then
|
elseif pct >= 0.75 then
|
||||||
local progress = (pct - 0.75) / (0.90 - 0.75)
|
local progress = (pct - 0.75) / (0.90 - 0.75)
|
||||||
self.hp:SetInterpolatedColor(colors.mid, colors.high, progress)
|
self.hp:SetInterpolatedColor(colors.mid, colors.high, progress)
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in new issue
Block a user