Skip to content

Commit

Permalink
player alternate powerbar support
Browse files Browse the repository at this point in the history
  • Loading branch information
bbeny123 committed Jan 5, 2024
1 parent 3a9d80d commit 82b9644
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 10 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
### v1.1.2:

* Player Alternate PowerBar support

### v1.1.1:

* Bugfixes
Expand Down
4 changes: 2 additions & 2 deletions ChireTweaks.lua
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ local function OnEnableOrProfileChange(startup)
ct.SetupHideables(unitData, startup)

if (not ns.NoneStatusText()) then
ct:StatusBarFormatHooks()
ct:StatusBarFormatHooks(unitData)
ct:SetStatusBarsFormats(unitData, startup)
end

Expand Down Expand Up @@ -121,7 +121,7 @@ function ct:SetCVarHook(cVar, _)
ns.CacheStatusTextCVar()

local hide = ns.NoneStatusText()
ct:StatusBarFormatHooks(hide)
ct:StatusBarFormatHooks(nil, hide)

for _, unitData in pairs(ns.UNIT_DATA) do
ct:SetStatusBarsFormats(unitData, false, hide)
Expand Down
2 changes: 1 addition & 1 deletion ChireTweaks.toc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Interface: 100200
## Title: Chire Tweaks
## Author: Chire
## Version: 1.1.1
## Version: 1.1.2
## IconTexture: Interface\AddOns\ChireTweaks\Media\icon.blp
## SavedVariables: ChireTweaksDB
## OptionalDeps: Ace3, LibSharedMedia-3.0
Expand Down
1 change: 1 addition & 0 deletions Data/UnitData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ ns.UNIT_DATA = {
portrait = playerFrame.portrait,
HealthBar = playerFrame.healthbar,
ManaBar = playerFrame.manabar,
AlternatePowerBar = function() return playerFrame.activeAlternatePowerBar end,
Name = playerFrame.name,
NamePointDefault = function() return "TOPLEFT", playerFrame.state == "vehicle" and 96 or 88, -27 end,
NamePointCentered = function() return "TOPLEFT", 99, -27 end,
Expand Down
36 changes: 29 additions & 7 deletions StatusBars.lua
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,14 @@ end
function ct.SetStatusBarFormat(unitData, type, key, disable)
local StatusBar = type == ns.TYPE.HEALTH and unitData.HealthBar or unitData.ManaBar
local powerType = type == ns.TYPE.POWER and POWER_TYPE.SECONDARY or POWER_TYPE.PRIMARY
local alternatePowerBar = type ~= ns.TYPE.HEALTH and unitData.AlternatePowerBar and unitData.AlternatePowerBar()

local Handler = function (statusBar)
CacheStatusBarConfig(statusBar, unitData.unit, type, powerType, key, disable)
if (alternatePowerBar) then
CacheStatusBarConfig(alternatePowerBar, unitData.unit, type, powerType, key, disable)
TextStatusBar_UpdateTextString(alternatePowerBar)
end
end

if (unitData.totFrame) then
Expand All @@ -140,13 +145,30 @@ function ct.SetStatusBarFormat(unitData, type, key, disable)
end)
end

function ct:StatusBarFormatHooks(unhook)
if (unhook) then
self:Unhook("TextStatusBar_UpdateTextStringWithValues")
self:Unhook("TextStatusBar_UpdateTextString")
else
self:HookSafe("TextStatusBar_UpdateTextStringWithValues", UpdateTextStringWithValues)
self:HookSafe("TextStatusBar_UpdateTextString", UpdateToTTextString)
local function SetPlayerAlternatePowerBarHooks(unitData, hook)
local Handler = function(alternatePowerBar)
local playerAlternatePowerBar = unitData.AlternatePowerBar()
local clear = not playerAlternatePowerBar or playerAlternatePowerBar ~= alternatePowerBar

CacheStatusBarConfig(alternatePowerBar, ns.UNIT.PLAYER, ns.TYPE.MANA, POWER_TYPE.PRIMARY, nil, clear)
CacheStatusBarConfig(alternatePowerBar, ns.UNIT.PLAYER, ns.TYPE.POWER, POWER_TYPE.SECONDARY, nil, clear)

if (playerAlternatePowerBar) then
TextStatusBar_UpdateTextString(alternatePowerBar)
end
end

ct:RehookOrUnhook(hook, "PlayerFrame_OnAlternatePowerBarEnabled", Handler)
ct:RehookOrUnhook(hook, "PlayerFrame_OnAlternatePowerBarDisabled", Handler)
end

function ct:StatusBarFormatHooks(unitData, unhook)
local hook = not unhook
self:RehookOrUnhook(hook, "TextStatusBar_UpdateTextStringWithValues", UpdateTextStringWithValues)
self:RehookOrUnhook(hook, "TextStatusBar_UpdateTextString", UpdateToTTextString)

if (not unitData or unitData.unit == ns.UNIT.PLAYER) then
SetPlayerAlternatePowerBarHooks(unitData, hook)
end
end

Expand Down

0 comments on commit 82b9644

Please sign in to comment.