Files
ice-hud/modules/PlayerAltMana.lua
Parnic a4d7b3302f Initial dump of BfA compatibility
Updated for:
- SPELL_POWER_* constants becoming Enum.PowerType.*
- Rank no longer existing in return values for UnitAura, UnitBuff, UnitDebuff, UnitCastingInfo, UnitChannelInfo
- UNIT_POWER event becoming UNIT_POWER_UPDATE
- UnitPopupFrames no longer existing
- Removed events: PLAYER_PET_CHANGED, UNIT_MAXPOWER, PET_BAR_CHANGED, UNIT_DYNAMIC_FLAGS
- Texture return value from UnitAura type changing (name -> id)
- All Warlock specializations using soul shards
- Death Knight rune changes

Haven't tested all classes/specializations yet, so I'm sure I missed some stuff.
Probably need to add support for the new circular cooldown wipe flourish added in the base client.
Saw a problem with cooldown flashes being delayed on DK runes becoming available that probably need to be fixed.
2018-06-06 22:57:35 -05:00

114 lines
3.5 KiB
Lua

local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
local PlayerAltMana = IceCore_CreateClass(IceUnitBar)
PlayerAltMana.prototype.PlayerAltMana = nil
PlayerAltMana.prototype.PlayerAltManaMax = nil
local _, unitClass = UnitClass("player")
local SPELL_POWER_MANA = SPELL_POWER_MANA
local SPELL_POWER_INSANITY = SPELL_POWER_INSANITY
if IceHUD.WowVer >= 80000 then
SPELL_POWER_MANA = Enum.PowerType.Mana
SPELL_POWER_INSANITY = Enum.PowerType.Insanity
end
-- Constructor --
function PlayerAltMana.prototype:init()
PlayerAltMana.super.prototype.init(self, "PlayerAltMana", "player")
self.side = IceCore.Side.Right
self.offset = 0
self:SetDefaultColor("PlayerAltMana", 87, 82, 141)
end
function PlayerAltMana.prototype:GetDefaultSettings()
local settings = PlayerAltMana.super.prototype.GetDefaultSettings(self)
settings["side"] = IceCore.Side.Right
settings["offset"] = 0
settings["textVisible"] = {upper = true, lower = false}
settings["upperText"] = "[PercentMana:Round]"
settings["lowerText"] = "[FractionalMana:Color('3071bf'):Bracket]"
return settings
end
function GetEventsToRegister()
return {"UNIT_DISPLAYPOWER"}
--[[ if unitClass == "PRIEST" then
return {"PLAYER_SPECIALIZATION_CHANGED"}
elseif unitClass == "SHAMAN" then
return {"PLAYER_SPECIALIZATION_CHANGED"}
elseif unitClass == "DRUID" then
return {"UPDATE_SHAPESHIFT_FORM"}
end
]]-- probably not necessary, but could use as a fallback
end
function PlayerAltMana.prototype:Enable(core)
PlayerAltMana.super.prototype.Enable(self, core)
local eventsToRegister = GetEventsToRegister()
for i = 1, #eventsToRegister do
self:RegisterEvent(eventsToRegister[i], "Update")
end
self:RegisterEvent("UNIT_POWER_FREQUENT", "Update")
self:RegisterEvent("UNIT_MAXPOWER", "Update")
end
function PlayerAltMana.prototype:Disable(core)
PlayerAltMana.super.prototype.Disable(self, core)
end
function ShouldShow(unit)
if unitClass == "MONK" then
return GetSpecialization() == SPEC_MONK_MISTWEAVER
end
return UnitPowerType(unit) ~= SPELL_POWER_MANA
--[[ if unitClass == "PRIEST" then
return UnitPowerType(unit) == SPELL_POWER_INSANITY
elseif unitClass == "SHAMAN" then
return GetSpecialization() ~= SPEC_SHAMAN_RESTORATION
elseif unitClass == "DRUID" then
return UnitPowerType(unit) ~= SPELL_POWER_MANA
end
]]-- probably not necessary, but could use as a fallback
end
function PlayerAltMana.prototype:Update()
PlayerAltMana.super.prototype.Update(self)
self.PlayerAltMana = UnitPower(self.unit, SPELL_POWER_MANA)
self.PlayerAltManaMax = UnitPowerMax(self.unit, SPELL_POWER_MANA)
self.PlayerAltManaPercentage = self.PlayerAltManaMax ~= 0 and (self.PlayerAltMana/self.PlayerAltManaMax) or 0
if (not self.alive or not ShouldShow(self.unit) or not self.PlayerAltMana or not self.PlayerAltManaMax or self.PlayerAltManaMax == 0) then
self:Show(false)
return
else
self:Show(true)
end
if not IceHUD.IceCore:ShouldUseDogTags() and self.frame:IsVisible() then
self:SetBottomText1(math.floor(self.PlayerAltManaPercentage * 100))
if (self.PlayerAltManaMax ~= 100) then
self:SetBottomText2(self:GetFormattedText(self:Round(self.PlayerAltMana), self:Round(self.PlayerAltManaMax)), "PlayerMana")
else
self:SetBottomText2()
end
end
self:UpdateBar(self.PlayerAltManaMax ~= 0 and self.PlayerAltMana / self.PlayerAltManaMax or 0, "PlayerAltMana")
end
if (unitClass == "PRIEST" and IceHUD.WowVer >= 70000)
or (unitClass == "DRUID")
or (unitClass == "SHAMAN" and IceHUD.WowVer >= 70000)
or (unitClass == "MONK" and IceHUD.WowVer < 70000) then
IceHUD.PlayerAltMana = PlayerAltMana:new()
end