Compare commits

...

5 Commits

Author SHA1 Message Date
59f2792ce8 Update changelog 2022-11-25 17:02:25 -06:00
a80daface7 Unify low flash and low color thresholds
Low Flash was using >= while Low Color was using >, so they would activate at ever-so-slightly different values (0.4 vs 0.39999, for example).
2022-11-25 15:31:26 -06:00
f6db2f3b7c Fix Low Threshold and Color By Health % to work together
If Low Threshold was checked, then scaling by health/mana % was getting overridden and forced to the Max Health/Mana Color after being set to the scaled value.
2022-11-25 15:30:05 -06:00
5d09cad6cb Update changelog
v1.14.0 got posted again as if it were the newest version, so this small update remedies that.
2022-11-23 22:37:41 -06:00
8fc2e326aa Add option to scale absorb bar by health
By user request.
2022-11-23 18:50:52 -06:00
4 changed files with 53 additions and 7 deletions

View File

@ -278,14 +278,14 @@ function IceUnitBar.prototype:Update()
-- This looks slightly quirky. Basically the easiest way for me to achieve this is to have lowThresholdColor override
-- the scaled color. You'll need to switch them both on to get things to work.
if( self.moduleSettings.lowThresholdColor ) then
if( self.healthPercentage < self.moduleSettings.lowThreshold ) then
if( self.healthPercentage <= self.moduleSettings.lowThreshold ) then
self.settings.colors[ "ScaledHealthColor" ] = self.settings.colors[ "MinHealthColor" ]
else
elseif not self.moduleSettings.scaleHealthColor then
self.settings.colors[ "ScaledHealthColor" ] = self.settings.colors[ "MaxHealthColor" ]
end
if( self.manaPercentage < self.moduleSettings.lowThreshold ) then
if( self.manaPercentage <= self.moduleSettings.lowThreshold ) then
self.settings.colors[ "ScaledManaColor" ] = self.settings.colors[ "MinManaColor" ]
else
elseif not self.moduleSettings.scaleManaColor then
self.settings.colors[ "ScaledManaColor" ] = self.settings.colors[ "MaxManaColor" ]
end
end

View File

@ -1,5 +1,14 @@
# Changelog
v1.14.8:
- Fix Color By Health % to work with Low Threshold Color option. Previously, if Low Threshold was set, the color was always either MaxHealth/MaxMana or MinHealth/MinMana, it would never be colored by health %. Now if both are set, it will scale by health % until it reaches the low threshold, at which point it will switch to the Min color.
- Fix Low Threshold color and flashing to work at the same percentage. Previously these were slightly different such that it would start flashing at 40% but not turn to the Min color until 39.9999%, for example.
v1.14.7:
- Add option to scale absorb bar by the unit's maximum health.
v1.14.6:
- Add ability for buff/debuff watchers to only display when the specified buff/debuff is missing. This also adds the ability to require that the given unit exists. So if you had Unit set to Target, Display mode set to Missing, and Only if unit exists checked, you'd show the bar if you have a target and they don't have the given buff/debuff.

View File

@ -1,3 +1,4 @@
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
IceTargetAbsorb = IceCore_CreateClass(IceUnitBar)
IceTargetAbsorb.prototype.highestAbsorbSinceLastZero = 0
@ -29,6 +30,28 @@ function IceTargetAbsorb.prototype:GetDefaultSettings()
return settings
end
function IceTargetAbsorb.prototype:GetOptions()
local opts = IceTargetAbsorb.super.prototype.GetOptions(self)
opts["scaleToUnitHealth"] = {
type = 'toggle',
name = L["Scale to health"],
desc = L["Whether the bar's maximum value should be set to the unit's maximum health or not. If set, any absorb above that amount will not be shown."],
get = function()
return self.moduleSettings.scaleToUnitHealth
end,
set = function(info, v)
self.moduleSettings.scaleToUnitHealth = v
self:Update()
end,
disabled = function()
return not self.moduleSettings.enabled
end
}
return opts
end
function IceTargetAbsorb.prototype:Enable(core)
IceTargetAbsorb.super.prototype.Enable(self, core)
@ -47,6 +70,7 @@ function IceTargetAbsorb.prototype:MyUnregisterCustomEvents()
end
function IceTargetAbsorb.prototype:Update()
IceTargetAbsorb.super.prototype.Update(self)
self:UpdateAbsorbAmount()
end
@ -63,13 +87,17 @@ function IceTargetAbsorb.prototype:UpdateAbsorbAmount(event, unit)
self.highestAbsorbSinceLastZero = absorbAmount
end
self.absorbPercent = self.highestAbsorbSinceLastZero ~= 0 and absorbAmount / self.highestAbsorbSinceLastZero or 0
local maxAbsorb = self.highestAbsorbSinceLastZero
if self.moduleSettings.scaleToUnitHealth then
maxAbsorb = self.maxHealth
end
self.absorbPercent = maxAbsorb ~= 0 and IceHUD:Clamp(absorbAmount / maxAbsorb, 0, 1) or 0
if absorbAmount <= 0 or self.highestAbsorbSinceLastZero <= 0 then
if absorbAmount <= 0 or maxAbsorb <= 0 then
self:Show(false)
else
self:Show(true)
self:UpdateBar(absorbAmount / self.highestAbsorbSinceLastZero, self.ColorName)
self:UpdateBar(self.absorbPercent, self.ColorName)
end
if not IceHUD.IceCore:ShouldUseDogTags() and self.frame:IsVisible() then

View File

@ -1,5 +1,14 @@
# Changelog
v1.14.8:
- Fix Color By Health % to work with Low Threshold Color option. Previously, if Low Threshold was set, the color was always either MaxHealth/MaxMana or MinHealth/MinMana, it would never be colored by health %. Now if both are set, it will scale by health % until it reaches the low threshold, at which point it will switch to the Min color.
- Fix Low Threshold color and flashing to work at the same percentage. Previously these were slightly different such that it would start flashing at 40% but not turn to the Min color until 39.9999%, for example.
v1.14.7:
- Add option to scale absorb bar by the unit's maximum health.
v1.14.6:
- Add ability for buff/debuff watchers to only display when the specified buff/debuff is missing. This also adds the ability to require that the given unit exists. So if you had Unit set to Target, Display mode set to Missing, and Only if unit exists checked, you'd show the bar if you have a target and they don't have the given buff/debuff.