Compare commits

...

3 Commits

Author SHA1 Message Date
5712114eb8 Fix Charged point support in ComboPointsBar 2022-11-16 21:14:51 -06:00
2a0db2eb01 Show charged combo point in Numeric mode 2022-11-16 21:09:44 -06:00
7d32b6d8c6 Fix player castbar flashes
There are controls on the player castbar module for flashing when a spell succeeds or fails, and separate controls for flashing when an instant cast completes. Those were broken (flashing never happened), but now work again.

UpdateBar() was necessary in MyOnUpdate() in the event that no other spell has been cast (in order to set the alpha so that the bottom text displays). The spellId is being passed along so that spells that aren't currently being cast can have their name and icon displayed appropriately, and so the early-out for "no known spell" doesn't trigger (which allows the Flash to actually work). The self.current reset fixes instant casts after a normal cast (we were only clearing the "current" spell conditionally when we only meant to filter StopBar, so if it wasn't cleared, future successful casts thought they were for a different spell than was currently being cast.
2022-11-16 13:09:58 -06:00
5 changed files with 83 additions and 23 deletions

View File

@ -393,6 +393,8 @@ function IceCastBar.prototype:MyOnUpdate()
return
end
self:UpdateBar(1, self:GetCurrentCastingColor())
if (self.action == IceCastBar.Actions.Failure) then
self:FlashBar("CastFail", 1-scale, self.actionMessage, "CastFail")
else
@ -478,7 +480,7 @@ function IceCastBar.prototype:FlashBar(color, alpha, text, textColor)
end
function IceCastBar.prototype:StartBar(action, message)
function IceCastBar.prototype:StartBar(action, message, spellId)
local spell, rank, displayName, icon, startTime, endTime, isTradeSkill, numStages
if IceHUD.SpellFunctionsReturnRank then
spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(self.unit)
@ -493,6 +495,10 @@ function IceCastBar.prototype:StartBar(action, message)
end
end
if spellId and not spell then
spell, rank, icon = GetSpellInfo(spellId)
end
local isChargeSpell = numStages and numStages > 0
if isChargeSpell then
self.NumStages = numStages
@ -514,7 +520,7 @@ function IceCastBar.prototype:StartBar(action, message)
if LibClassicCasterino and not spell then
self:StopBar()
elseif not spell then
return
return
end
if icon ~= nil then
@ -590,7 +596,7 @@ function IceCastBar.prototype:SpellCastStart(event, unit, castGuid, spellId)
IceHUD:Debug("SpellCastStart", unit, castGuid, spellId)
--UnitCastingInfo(unit)
self:StartBar(IceCastBar.Actions.Cast)
self:StartBar(IceCastBar.Actions.Cast, nil, spellId)
self.current = castGuid
end
@ -609,8 +615,9 @@ function IceCastBar.prototype:SpellCastStop(event, unit, castGuid, spellId)
self.action ~= IceCastBar.Actions.ReverseChannel)
then
self:StopBar()
self.current = nil
end
self.current = nil
end
@ -639,7 +646,7 @@ function IceCastBar.prototype:SpellCastFailed(event, unit, castGuid, spellId)
end
end
self:StartBar(IceCastBar.Actions.Failure, "Failed")
self:StartBar(IceCastBar.Actions.Failure, "Failed", nil, spellId)
end
function IceCastBar.prototype:SpellCastInterrupted(event, unit, castGuid, spellId)
@ -653,7 +660,7 @@ function IceCastBar.prototype:SpellCastInterrupted(event, unit, castGuid, spellI
self.current = nil
self:StartBar(IceCastBar.Actions.Failure, "Interrupted")
self:StartBar(IceCastBar.Actions.Failure, "Interrupted", spellId)
end
function IceCastBar.prototype:SpellCastDelayed(event, unit, castGuid, spellId)
@ -687,7 +694,7 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
-- show after normal successfull cast
if (self.action == IceCastBar.Actions.Cast) then
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank))
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
return
end
@ -700,7 +707,7 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
end
end
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank))
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
end

View File

@ -1,5 +1,11 @@
# Changelog
v1.14.5:
- Fix castbar flashing. There are controls on the player castbar module for flashing when a spell succeeds or fails, and separate controls for flashing when an instant cast completes. Those were broken, but now work again.
- Add "@" after the number when the Combo Points module is in Numeric mode, "Show Charged points" is enabled, and the current combo point is charged.
- Fix Charged point support in the ComboPointsBar module.
v1.14.4:
- Update TOC for 10.0.2

View File

@ -545,6 +545,9 @@ function ComboPoints.prototype:UpdateComboPoints(...)
self.frame.numeric:SetTextColor(r, g, b, 0.7)
local pointsText = tostring(points)
if self.moduleSettings.bShowCharged and self:IsChargedPoint(points) then
pointsText = pointsText.."@"
end
if anticipate > 0 then
pointsText = pointsText.."+"..tostring(anticipate)
end

View File

@ -11,6 +11,7 @@ function ComboPointsBar.prototype:init()
self:SetDefaultColor("ComboPointsBarMin", 1, 1, 0)
self:SetDefaultColor("ComboPointsBarMax", 0, 1, 0)
self:SetDefaultColor("ChargedComboPointBar", 0.3137254901960784, 0.3725490196078432, 1)
self.bTreatEmptyAsFull = true
end
@ -52,6 +53,26 @@ function ComboPointsBar.prototype:GetOptions()
end,
}
opts["bShowCharged"] = {
type = 'toggle',
width = 'double',
name = L["Show Charged points"],
desc = L["Whether or not to color a charged combo point a separate color and append an @ sign to the number. Set the ChargedComboPointBar color to the color you would like it to be."],
get = function()
return self.moduleSettings.bShowCharged
end,
set = function(info, v)
self.moduleSettings.bShowCharged = v
self:UpdateComboPoints()
end,
disabled = function()
return not self.moduleSettings.enabled
end,
hidden = function()
return not GetUnitChargedPowerPoints
end,
}
return opts
end
@ -62,6 +83,7 @@ function ComboPointsBar.prototype:GetDefaultSettings()
defaults.alwaysDisplay = false
defaults.desiredLerpTime = 0.05
defaults.bShowWithNoTarget = true
defaults.bShowCharged = true
return defaults
end
@ -84,17 +106,7 @@ function ComboPointsBar.prototype:Enable(core)
end
if GetUnitChargedPowerPoints then
self:RegisterEvent("UNIT_POWER_POINT_CHARGE", "UpdateChargedComboPoints")
end
self:UpdateChargedComboPoints()
end
function ComboPointsBar.prototype:UpdateChargedComboPoints()
if GetUnitChargedPowerPoints then
local chargedPowerPoints = GetUnitChargedPowerPoints("player")
self.chargedPowerPointIndex = chargedPowerPoints and chargedPowerPoints[1]
self:UpdateComboPoints()
self:RegisterEvent("UNIT_POWER_POINT_CHARGE", "UpdateComboPoints")
end
end
@ -131,20 +143,46 @@ function ComboPointsBar.prototype:UpdateComboPoints(...)
points = nil
end
local isCharged = self:IsChargedPoint(points) and self.moduleSettings.bShowCharged
if points == nil or points == 0 or (not UnitExists("target") and not self.moduleSettings.bShowWithNoTarget) then
self:Show(self.moduleSettings.alwaysDisplay)
self:UpdateBar(0, "undef")
else
self:Show(true)
self:SetScaledColor(color, (points - 1) / 4.0, self.settings.colors["ComboPointsBarMax"], self.settings.colors["ComboPointsBarMin"])
if isCharged then
color.r, color.g, color.b = self:GetColor("ChargedComboPointBar")
else
self:SetScaledColor(color, (points - 1) / 4.0, self.settings.colors["ComboPointsBarMax"], self.settings.colors["ComboPointsBarMin"])
end
self:UpdateBar(points / UnitPowerMax("player", SPELL_POWER_COMBO_POINTS), "undef")
self.barFrame.bar:SetVertexColor(color.r, color.g, color.b, self.alpha)
end
self:SetBottomText1(points or "0")
if self.chargedPowerPointIndex then
self:SetBottomText2(self.chargedPowerPointIndex)
local pointsText = tostring(points or 0)
if isCharged then
pointsText = pointsText .. "@"
end
self:SetBottomText1(pointsText or "0")
end
function ComboPointsBar.prototype:IsChargedPoint(point)
if not GetUnitChargedPowerPoints or not point then
return false
end
local chargedPoints = GetUnitChargedPowerPoints("player")
if not chargedPoints then
return false
end
for i=1, #chargedPoints do
if chargedPoints[i] == point then
return true
end
end
return false
end
function ComboPointsBar.prototype:Update()

View File

@ -1,5 +1,11 @@
# Changelog
v1.14.5:
- Fix castbar flashing. There are controls on the player castbar module for flashing when a spell succeeds or fails, and separate controls for flashing when an instant cast completes. Those were broken, but now work again.
- Add "@" after the number when the Combo Points module is in Numeric mode, "Show Charged points" is enabled, and the current combo point is charged.
- Fix Charged point support in the ComboPointsBar module.
v1.14.4:
- Update TOC for 10.0.2