
Healthbased colorfading
Reported by Aiiane | December 11th, 2008 @ 01:53 AM
Submitter: BubbleCow
As I'm normally using fully-filled squares, the 4-step coloring from full to low is sometimes too inaccurate for me. This sample code provides a gradient fading from one threshold color to another.
Notes:
- 
in this sample it would always be enabled 
- 
not working on invert-bars 
- 
i'm new to lua so it's ... well a sample :) 
- 
ticketsystem seems to strip some things ... 
- 
SquaredUnitFrame.lua @ 295 (v2.7.2) 
function SquaredUnitFrame:SetHealthFillColor()
    local hpPercent = self.curval / self.maxval * 100
    if not Squared.GetSetting("invert-bars") then
        if hpPercent <= Squared.GetSetting("hp-low") then
            WindowSetTintColor(self:GetName().."ForeFill", unpack(Squared.GetSetting("colorgroup-hplow")))
        elseif hpPercent <= Squared.GetSetting("hp-medium") then
            local ratio = self:GetRelativeRatio(Squared.GetSetting("hp-medium"), Squared.GetSetting("hp-low"), hpPercent)
            local myColor = self:GetGradientColor(Squared.GetSetting("colorgroup-hpmedium"), Squared.GetSetting("colorgroup-hplow"), ratio)
            WindowSetTintColor(self:GetName().."ForeFill", unpack(myColor))
        elseif hpPercent <= Squared.GetSetting("hp-high") then
            local ratio = self:GetRelativeRatio(Squared.GetSetting("hp-high"), Squared.GetSetting("hp-medium"), hpPercent)
            local myColor = self:GetGradientColor(Squared.GetSetting("colorgroup-hphigh"), Squared.GetSetting("colorgroup-hpmedium"), ratio)
            WindowSetTintColor(self:GetName().."ForeFill", unpack(myColor))
        else
            local ratio = self:GetRelativeRatio(100, Squared.GetSetting("hp-high"), hpPercent)
            local myColor = self:GetGradientColor(self.fgcolor Squared.GetSetting("colorgroup-hphigh"), ratio)
            WindowSetTintColor(self:GetName().."ForeFill", unpack(myColor))
        end
    else
        if hpPercent <= Squared.GetSetting("hp-low") then
            WindowSetTintColor(self:GetName().."BackFill", unpack(Squared.GetSetting("colorgroup-hplow")))
        elseif hpPercent <= Squared.GetSetting("hp-medium") then
            WindowSetTintColor(self:GetName().."BackFill", unpack(Squared.GetSetting("colorgroup-hpmedium")))
        elseif hpPercent <= Squared.GetSetting("hp-high") then
            WindowSetTintColor(self:GetName().."BackFill", unpack(Squared.GetSetting("colorgroup-hphigh")))
        else
            WindowSetTintColor(self:GetName().."BackFill", unpack(self.fgcolor
        end
    end
end
function SquaredUnitFrame:GetRelativeRatio(windowStart, windowStop, absolutePercent)
  local windowSize = windowStop - windowStart
  local localPosition = absolutePercent - windowStart
  return (localPosition/windowSize) or 1
end
function SquaredUnitFrame:GetGradientColor(startColor, stopColor, ratio)
  local gradientColor = {0, 0, 0}
  gradientColor[1] = startColor[1] + ((stopColor[1] - startColor[1]) * (ratio))
  gradientColor[2] = startColor[2] + ((stopColor[2] - startColor[2]) * (ratio))
  gradientColor[3] = startColor[3] + ((stopColor[3] - startColor[3]) * (ratio))
  return gradientColor
end
Comments and changes to this ticket
- 
         Aiiane January 3rd, 2009 @ 11:24 AM- State changed from new to hold
 
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
Squared is a compact unit-frame addon for Warhammer Online.
 Create new ticket
                    Create new ticket
 Aiiane
      Aiiane