mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-15 22:30:13 -05:00
This has been tested on Classic PTR and Retail, but only with a Rogue character. Don't have a ton of time to do more exhaustive tests right now. Fixes #11
114 lines
3.5 KiB
Lua
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 Enum and Enum.PowerType 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
|