diff --git a/ShaguTweaks-tbc.toc b/ShaguTweaks-tbc.toc index 07589d0..2dae8fe 100644 --- a/ShaguTweaks-tbc.toc +++ b/ShaguTweaks-tbc.toc @@ -52,6 +52,7 @@ mods\social-colors.lua mods\item-colors.lua mods\chat-links.lua mods\health-numbers.lua +mods\health-color.lua mods\auto-dismount.lua mods\auto-stance.lua mods\tooltip-details.lua diff --git a/ShaguTweaks.toc b/ShaguTweaks.toc index 90d0858..e1f562f 100644 --- a/ShaguTweaks.toc +++ b/ShaguTweaks.toc @@ -52,6 +52,7 @@ mods\social-colors.lua mods\item-colors.lua mods\chat-links.lua mods\health-numbers.lua +mods\health-color.lua mods\auto-dismount.lua mods\auto-stance.lua mods\tooltip-details.lua diff --git a/mods/health-color.lua b/mods/health-color.lua new file mode 100644 index 0000000..c57cc7b --- /dev/null +++ b/mods/health-color.lua @@ -0,0 +1,46 @@ +local _G = _G or getfenv(0) +local Abbreviate = ShaguTweaks.Abbreviate +local GetColorGradient = ShaguTweaks.GetColorGradient +local vanilla = ShaguTweaks.GetExpansion() == "vanilla" or nil + +local module = ShaguTweaks:register({ + title = "Unit Frame Health Colors", + description = "Change health text color based on its value.", + expansions = { ["vanilla"] = true, ["tbc"] = true }, + category = "Unit Frames", + enabled = nil, +}) + +module.enable = function(self) + local HookUnitFrame_UpdateManaType = UnitFrame_UpdateManaType + function UnitFrame_UpdateManaType(uf) + HookUnitFrame_UpdateManaType(uf) + if not uf then uf = this end + local string = uf.manabar and uf.manabar.TextString + if not string then return end + + if not strfind(uf.manabar:GetName(), "Health") then + local r, g, b = uf.manabar:GetStatusBarColor() + string:SetTextColor((r + 2) / 3, (g + 2) / 3, (b + 2) / 3, 1) + end + end + + local HookTextStatusBar_UpdateTextString = TextStatusBar_UpdateTextString + function TextStatusBar_UpdateTextString(sb) + if not sb then sb = this end + + HookTextStatusBar_UpdateTextString(sb) + local string = sb.TextString + + if string and sb.unit then + local min, max = sb:GetMinMaxValues() + local cur = sb:GetValue() + local percent = max > 0 and floor(cur/max*100) or 0 + + if strfind(sb:GetName(), "Health") then + local r, g, b = GetColorGradient(percent/100) + string:SetTextColor((r + 1) / 2, (g + 1) / 2, (b + 1) / 2, .75) + end + end + end +end diff --git a/mods/health-numbers.lua b/mods/health-numbers.lua index 9aef7f0..a7fee00 100644 --- a/mods/health-numbers.lua +++ b/mods/health-numbers.lua @@ -25,31 +25,18 @@ module.enable = function(self) PetFrameManaBar.TextString:SetPoint("CENTER", PetFrameManaBar, "CENTER", -2, -2) for _, frame in pairs( { TargetFrameHealthBar, TargetFrameManaBar, PlayerFrameHealthBar, PlayerFrameManaBar }) do - frame.TextString:SetFontObject("GameFontNormal") + frame.TextString:SetFontObject("GameFontWhite") frame.TextString:SetFont(STANDARD_TEXT_FONT, 10, "OUTLINE") frame.TextString:SetHeight(32) end for _, frame in pairs( { PetFrameHealthBar, PetFrameManaBar }) do - frame.TextString:SetFontObject("GameFontNormal") + frame.TextString:SetFontObject("GameFontWhite") frame.TextString:SetFont(STANDARD_TEXT_FONT, 9, "OUTLINE") frame.TextString:SetHeight(32) frame.TextString:SetJustifyH("LEFT") end - local HookUnitFrame_UpdateManaType = UnitFrame_UpdateManaType - function UnitFrame_UpdateManaType(uf) - HookUnitFrame_UpdateManaType(uf) - if not uf then uf = this end - local string = uf.manabar and uf.manabar.TextString - if not string then return end - - if not strfind(uf.manabar:GetName(), "Health") then - local r, g, b = uf.manabar:GetStatusBarColor() - string:SetTextColor((r + 2) / 3, (g + 2) / 3, (b + 2) / 3, 1) - end - end - local HookTextStatusBar_UpdateTextString = TextStatusBar_UpdateTextString function TextStatusBar_UpdateTextString(sb) if not sb then sb = this end @@ -82,11 +69,6 @@ module.enable = function(self) string:SetText(Abbreviate(cur)) end - if strfind(sb:GetName(), "Health") then - local r, g, b = GetColorGradient(percent/100) - string:SetTextColor((r + 1) / 2, (g + 1) / 2, (b + 1) / 2, .75) - end - if max == 0 then string:Hide() string:SetText("")