mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
Apparently other things are now using the game's UIWidgetPowerBarContainerFrame but we're forcing it to be hidden due to a variety of factors. This attempts to restrict the Hide behavior of that frame to only when we're Dragonriding.
182 lines
4.7 KiB
Lua
182 lines
4.7 KiB
Lua
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|
local DragonridingVigor = IceCore_CreateClass(IceClassPowerCounter)
|
|
|
|
local DragonridingBuffs = {
|
|
360954, -- Highland Drake
|
|
368896, -- Renewed Proto-Drake
|
|
368899, -- Windborn Velocidrake
|
|
368901, -- Cliffside Wylderdrake
|
|
368893, -- Winding Slitherdrake
|
|
412088, -- Grotto Netherwing Drake
|
|
}
|
|
|
|
local vigorWidgetSetID = 283
|
|
local vigorWidgetID = 4460
|
|
local knowsAlternateMountEnum = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
|
local unitPowerType = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
|
unitPowerType = unitPowerType or ALTERNATE_POWER_INDEX
|
|
|
|
function DragonridingVigor.prototype:init()
|
|
DragonridingVigor.super.prototype.init(self, "Vigor")
|
|
|
|
self:SetDefaultColor("VigorNumeric", 150, 150, 255)
|
|
|
|
self.unit = "player"
|
|
self.numericColor = "VigorNumeric"
|
|
self.unitPower = unitPowerType
|
|
self.minLevel = 0
|
|
self.bTreatEmptyAsFull = false
|
|
self.runeWidth = self.runeHeight
|
|
self.shouldRegisterDisplayPower = false
|
|
end
|
|
|
|
function DragonridingVigor.prototype:Enable(core)
|
|
self.numRunes = UnitPowerMax(self.unit, unitPowerType)
|
|
self.runeCoords = { }
|
|
for i = 1, self.numRunes do
|
|
self:SetupNewRune(i)
|
|
end
|
|
|
|
DragonridingVigor.super.prototype.Enable(self, core)
|
|
self:Show(false)
|
|
|
|
self:RegisterEvent("UNIT_AURA", "CheckShouldShow")
|
|
self:RegisterEvent("UPDATE_UI_WIDGET", "UpdateVigorRecharge")
|
|
end
|
|
|
|
function DragonridingVigor.prototype:EnteringWorld()
|
|
DragonridingVigor.super.prototype.EnteringWorld(self)
|
|
|
|
self:CheckShouldShow("PLAYER_ENTERING_WORLD", "player")
|
|
end
|
|
|
|
function DragonridingVigor.prototype:CheckShouldShow(event, unit, info)
|
|
if unit ~= "player" then
|
|
return
|
|
end
|
|
|
|
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(vigorWidgetID)
|
|
if not info or info.shownState == 0 then
|
|
self:Show(false)
|
|
self.suppressHideBlizz = true
|
|
if self.moduleSettings.hideBlizz then
|
|
self:ShowBlizz()
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
self:Show(true)
|
|
|
|
-- if knowsAlternateMountEnum and UnitPowerMax(self.unit, unitPowerType) > 0 then
|
|
-- self:Show(true)
|
|
-- elseif not knowsAlternateMountEnum and IceHUD:HasAnyBuff("player", DragonridingBuffs) then
|
|
-- self:Show(true)
|
|
-- else
|
|
-- self:Show(false)
|
|
-- if self.moduleSettings.hideBlizz then
|
|
-- self:ShowBlizz()
|
|
-- end
|
|
-- end
|
|
end
|
|
|
|
function DragonridingVigor.prototype:UpdateRunePower(event, arg1, arg2)
|
|
self:UpdateVigorRecharge("internal")
|
|
DragonridingVigor.super.prototype.UpdateRunePower(self, event, arg1, arg2)
|
|
end
|
|
|
|
function DragonridingVigor.prototype:UpdateVigorRecharge(event, widget)
|
|
self.partialReady = nil
|
|
self.partialReadyPercent = nil
|
|
if event ~= "internal" and (not widget or widget.widgetSetID ~= vigorWidgetSetID) then
|
|
return
|
|
end
|
|
|
|
self.suppressHideBlizz = false
|
|
|
|
if event ~= "internal" then
|
|
if self.moduleSettings.hideBlizz then
|
|
self:HideBlizz()
|
|
else
|
|
self:ShowBlizz()
|
|
end
|
|
end
|
|
|
|
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(vigorWidgetID)
|
|
if not info then
|
|
return
|
|
end
|
|
|
|
if info.numFullFrames == info.numTotalFrames then
|
|
return
|
|
end
|
|
if info.fillMax == 0 then
|
|
return
|
|
end
|
|
|
|
self.partialReady = IceHUD:Clamp(info.numFullFrames + 1, 0, info.numTotalFrames)
|
|
self.partialReadyPercent = info.fillValue / info.fillMax
|
|
if event ~= "internal" then
|
|
self:UpdateRunePower()
|
|
end
|
|
end
|
|
|
|
function DragonridingVigor.prototype:SetupNewRune(rune)
|
|
self.runeCoords[rune] = {0, 1, 0, 1}
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetDefaultSettings()
|
|
local defaults = DragonridingVigor.super.prototype.GetDefaultSettings(self)
|
|
|
|
defaults.pulseWhenFull = false
|
|
defaults.runeGap = 4
|
|
defaults.inactiveDisplayMode = "Shown"
|
|
defaults.hideBlizz = true
|
|
defaults.vpos = -25
|
|
|
|
return defaults
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetOptions()
|
|
local opts = DragonridingVigor.super.prototype.GetOptions(self)
|
|
|
|
opts.inactiveDisplayMode.hidden = function() return true end
|
|
|
|
return opts
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetRuneAtlas(rune)
|
|
return "dragonriding_vigor_fillfull"
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetShineAtlas(rune)
|
|
return "Mage-ArcaneCharge-SmallSpark"
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetFrameAtlas(rune)
|
|
return "dragonriding_vigor_frame"
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetBackgroundAtlas(rune)
|
|
return "dragonriding_vigor_background"
|
|
end
|
|
|
|
function DragonridingVigor.prototype:GetPartialRuneAtlas(rune)
|
|
return "dragonriding_vigor_fill"
|
|
end
|
|
|
|
function DragonridingVigor.prototype:ShowBlizz()
|
|
UIWidgetPowerBarContainerFrame:Show()
|
|
end
|
|
|
|
function DragonridingVigor.prototype:HideBlizz()
|
|
if not self.suppressHideBlizz then
|
|
UIWidgetPowerBarContainerFrame:Hide()
|
|
end
|
|
end
|
|
|
|
-- Load us up
|
|
if unitPowerType and C_UIWidgetManager and C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo then
|
|
IceHUD.DragonridingVigor = DragonridingVigor:new()
|
|
end
|