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.