mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 06:40:13 -05:00
- ticket #116: first attempt at an honest-to-goodness alternate power bar. i don't raid, so i've only tested this against the alternate power in The Maw of Madness in Twilight Highlands...
This commit is contained in:
@ -78,6 +78,7 @@ modules\HolyPower.lua
|
|||||||
modules\Shards.lua
|
modules\Shards.lua
|
||||||
modules\EclipseBar.lua
|
modules\EclipseBar.lua
|
||||||
modules\Vengeance.lua
|
modules\Vengeance.lua
|
||||||
|
modules\PlayerAlternatePower.lua
|
||||||
|
|
||||||
#@do-not-package@
|
#@do-not-package@
|
||||||
IceHUD_Options\Options.lua
|
IceHUD_Options\Options.lua
|
||||||
|
133
modules/PlayerAlternatePower.lua
Normal file
133
modules/PlayerAlternatePower.lua
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||||
|
local PlayerAlternatePower = IceCore_CreateClass(IceUnitBar)
|
||||||
|
|
||||||
|
-- Constructor --
|
||||||
|
function PlayerAlternatePower.prototype:init(moduleName, unit)
|
||||||
|
if not moduleName or not unit then
|
||||||
|
PlayerAlternatePower.super.prototype.init(self, "PlayerAlternatePower", "player")
|
||||||
|
else
|
||||||
|
PlayerAlternatePower.super.prototype.init(self, moduleName, unit)
|
||||||
|
end
|
||||||
|
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)
|
||||||
|
self.bTreatEmptyAsFull = true
|
||||||
|
PlayerAlternatePower.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
|
self:RegisterEvent("UNIT_POWER", "UpdateEvent")
|
||||||
|
self:RegisterEvent("UNIT_MAXPOWER", "UpdateEvent")
|
||||||
|
self:RegisterEvent("UNIT_POWER_BAR_SHOW", "PowerBarShow")
|
||||||
|
self:RegisterEvent("UNIT_POWER_BAR_HIDE", "PowerBarHide")
|
||||||
|
|
||||||
|
self.power = 0
|
||||||
|
self.maxPower = 0
|
||||||
|
self.powerPercent = 0
|
||||||
|
|
||||||
|
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, ALTERNATE_POWER_INDEX)
|
||||||
|
self.power = UnitPower(self.unit, ALTERNATE_POWER_INDEX)
|
||||||
|
if self.maxPower > 0 then
|
||||||
|
self.powerPercent = self.power / self.maxPower
|
||||||
|
else
|
||||||
|
self.powerPercent = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
self:UpdateBar(self.powerPercent)
|
||||||
|
|
||||||
|
local texture, r, g, b = UnitAlternatePowerTextureInfo(self.unit, ALT_POWER_TEX_FILL)
|
||||||
|
self.barFrame.bar:SetVertexColor(r, g, 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["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
|
||||||
|
IceHUD.PlayerAlternatePower = PlayerAlternatePower:new()
|
Reference in New Issue
Block a user