mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
This isn't used anywhere else, so there's no reason for it to pollute the global namespace. And being local now, it also doesn't need the IceHUD prefix on its name.
138 lines
3.4 KiB
Lua
138 lines
3.4 KiB
Lua
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
|
local PlayerAlternatePower = IceCore_CreateClass(IceUnitBar)
|
|
|
|
-- Constructor --
|
|
function PlayerAlternatePower.prototype:init(moduleName, unit)
|
|
PlayerAlternatePower.super.prototype.init(self, moduleName or "PlayerAlternatePower", "player")
|
|
|
|
self.bTreatEmptyAsFull = true
|
|
self.power = 0
|
|
self.maxPower = 0
|
|
self.powerPercent = 0
|
|
self.powerIndex = ALTERNATE_POWER_INDEX
|
|
self.powerName = "MANA"
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:GetDefaultSettings()
|
|
local settings = PlayerAlternatePower.super.prototype.GetDefaultSettings(self)
|
|
|
|
settings["side"] = IceCore.Side.Left
|
|
settings["offset"] = -1
|
|
settings["upperText"] = "[PercentAltP:Round]"
|
|
settings["lowerText"] = "[FractionalAltP]"
|
|
settings["hideBlizz"] = false
|
|
|
|
return settings
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:Enable(core)
|
|
PlayerAlternatePower.super.prototype.Enable(self, core)
|
|
|
|
self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateEvent")
|
|
if IceHUD.EventExistsUnitMaxPower then
|
|
self:RegisterEvent("UNIT_MAXPOWER", "UpdateEvent")
|
|
end
|
|
self:RegisterEvent("UNIT_POWER_BAR_SHOW", "PowerBarShow")
|
|
self:RegisterEvent("UNIT_POWER_BAR_HIDE", "PowerBarHide")
|
|
|
|
self:Update(self.unit)
|
|
|
|
if self.maxPower == 0 then
|
|
self:Show(false)
|
|
end
|
|
if self.moduleSettings.hideBlizz then
|
|
self:HideBlizz()
|
|
end
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:PowerBarShow(event, unit)
|
|
if unit ~= self.unit then
|
|
return
|
|
end
|
|
|
|
self:Show(true)
|
|
self:Update(self.unit)
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:PowerBarHide(event, unit)
|
|
if unit ~= self.unit then
|
|
return
|
|
end
|
|
|
|
self:Show(false)
|
|
self:Update(self.unit)
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:UpdateEvent(event, unit)
|
|
self:Update(unit)
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:Update(unit)
|
|
PlayerAlternatePower.super.prototype.Update(self)
|
|
if (unit and (unit ~= self.unit)) then
|
|
return
|
|
end
|
|
|
|
self.maxPower = UnitPowerMax(self.unit, self.powerIndex)
|
|
self.power = UnitPower(self.unit, self.powerIndex)
|
|
if self.maxPower > 0 then
|
|
self.powerPercent = self.power / self.maxPower
|
|
else
|
|
self.powerPercent = 0
|
|
end
|
|
|
|
self:UpdateBar(self.powerPercent)
|
|
|
|
local info = PowerBarColor[self.powerName];
|
|
self.barFrame.bar:SetVertexColor(info.r, info.g, info.b, self.alpha)
|
|
|
|
if not IceHUD.IceCore:ShouldUseDogTags() then
|
|
self:SetBottomText1(math.floor(self.powerPercent * 100))
|
|
self:SetBottomText2(self:GetFormattedText(self.power, self.maxPower), color)
|
|
end
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:GetOptions()
|
|
local opts = PlayerAlternatePower.super.prototype.GetOptions(self)
|
|
|
|
opts["lowThresholdColor"] = nil
|
|
|
|
opts["hideBlizz"] = {
|
|
type = "toggle",
|
|
name = L["Hide Blizzard Frame"],
|
|
desc = L["Hides Blizzard Player frame and disables all events related to it"],
|
|
get = function()
|
|
return self.moduleSettings.hideBlizz
|
|
end,
|
|
set = function(info, value)
|
|
self.moduleSettings.hideBlizz = value
|
|
if value then
|
|
self:HideBlizz()
|
|
else
|
|
self:ShowBlizz()
|
|
end
|
|
end,
|
|
disabled = function()
|
|
return not self.moduleSettings.enabled
|
|
end,
|
|
order = 51
|
|
}
|
|
|
|
return opts
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:ShowBlizz()
|
|
PlayerPowerBarAlt:GetScript("OnLoad")(PlayerPowerBarAlt)
|
|
end
|
|
|
|
function PlayerAlternatePower.prototype:HideBlizz()
|
|
PlayerPowerBarAlt:Hide()
|
|
|
|
PlayerPowerBarAlt:UnregisterAllEvents()
|
|
end
|
|
|
|
-- Load us up
|
|
if ALTERNATE_POWER_INDEX then
|
|
IceHUD.PlayerAlternatePower = PlayerAlternatePower:new()
|
|
end
|