Files
ice-hud/modules/PlayerAlternatePower.lua
2023-01-22 15:56:41 -06:00

148 lines
3.6 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)
else
self.wantToShow = true
end
if self.moduleSettings.hideBlizz then
self:HideBlizz()
end
end
function PlayerAlternatePower.prototype:PowerBarShow(event, unit)
if unit ~= self.unit then
return
end
self.wantToShow = true
self:Show(true)
self:Update(self.unit)
end
function PlayerAlternatePower.prototype:PowerBarHide(event, unit)
if unit ~= self.unit then
return
end
self.wantToShow = false
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
if IceHUD.DragonridingVigor and IceHUD.DragonridingVigor.bIsVisible then
self:Show(false)
elseif self.wantToShow then
self:Show(true)
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