add custom tags to PowerBar

This commit is contained in:
Sumsebrum 2022-03-25 00:01:18 +01:00
parent 1a8cd81f7a
commit c6c3d23074
4 changed files with 217 additions and 139 deletions

View File

@ -111,6 +111,7 @@ local deletedOptions = { -- backwards compatibility
trinketPos = true, trinketPos = true,
padding = true, padding = true,
growUp = true, growUp = true,
powerBarFontSize = true,
} }
local function checkIsDeletedOption(k, str, msg, errorFound, errorMsg) local function checkIsDeletedOption(k, str, msg, errorFound, errorMsg)

View File

@ -28,7 +28,6 @@ local Healthbar = Gladdy:NewModule("Health Bar", 100, {
healthFrameStrata = "MEDIUM", healthFrameStrata = "MEDIUM",
healthFrameLevel = 1, healthFrameLevel = 1,
healthCustomTagsEnabled = false, healthCustomTagsEnabled = false,
healthTextRight = "[percent|status]",
healthTextLeft = "[name]", healthTextLeft = "[name]",
healthTextRight = "[percent|status]", healthTextRight = "[percent|status]",
healthTextLeftOutline = false, healthTextLeftOutline = false,
@ -122,12 +121,13 @@ function Healthbar.OnEvent(self, event, unit)
self.hp:SetMinMaxValues(0, healthMax) self.hp:SetMinMaxValues(0, healthMax)
self.hp:SetValue(health) self.hp:SetValue(health)
self.hp.current = health self.hp.current = health
self.hp.max = healthMax
Healthbar:SetText(unit, health, healthMax) Healthbar:SetText(unit, health, healthMax)
--Healthbar:SetHealthText(self, health, healthMax) --Healthbar:SetHealthText(self, health, healthMax)
elseif event == "UNIT_NAME_UPDATE" then elseif event == "UNIT_NAME_UPDATE" then
local name = UnitName(unit) local name = UnitName(unit)
Gladdy.buttons[unit].name = name Gladdy.buttons[unit].name = name
Healthbar:SetText(unit, self.hp.current, 100) Healthbar:SetText(unit, self.hp.current, self.hp.max)
end end
if not Gladdy.buttons[unit].class then if not Gladdy.buttons[unit].class then
Gladdy:SpotEnemy(unit, true) Gladdy:SpotEnemy(unit, true)
@ -245,6 +245,7 @@ function Healthbar:Test(unit)
--self:JOINED_ARENA() --self:JOINED_ARENA()
Gladdy:SendMessage("UNIT_HEALTH", unit, button.health, button.healthMax) Gladdy:SendMessage("UNIT_HEALTH", unit, button.health, button.healthMax)
healthBar.hp.current = button.health healthBar.hp.current = button.health
healthBar.hp.max = button.healthMax
self:ENEMY_SPOTTED(unit) self:ENEMY_SPOTTED(unit)
self:SetText(unit, button.health, button.healthMax) self:SetText(unit, button.health, button.healthMax)
healthBar.hp:SetValue(button.health) healthBar.hp:SetValue(button.health)
@ -259,7 +260,7 @@ function Healthbar:UNIT_SPEC(unit)
if not button then if not button then
return return
end end
self:SetText(unit, button.healthBar.hp.current, 100) self:SetText(unit, button.healthBar.hp.current, button.healthBar.hp.max)
--button.healthBar.nameText:SetText(Gladdy:SetTag(unit, Gladdy.db.healthTextLeft, button.health, button.healthMax)) --button.healthBar.nameText:SetText(Gladdy:SetTag(unit, Gladdy.db.healthTextLeft, button.health, button.healthMax))
end end
@ -282,6 +283,7 @@ function Healthbar:ENEMY_SPOTTED(unit)
healthBar.hp:SetMinMaxValues(0, healthMax) healthBar.hp:SetMinMaxValues(0, healthMax)
healthBar.hp:SetValue(health) healthBar.hp:SetValue(health)
healthBar.hp.current = health healthBar.hp.current = health
healthBar.hp.max = healthMax
Healthbar:SetText(unit, health, healthMax) Healthbar:SetText(unit, health, healthMax)
--Healthbar:SetHealthText(healthBar, health, healthMax) --Healthbar:SetHealthText(healthBar, health, healthMax)
end end
@ -310,8 +312,7 @@ function Healthbar:UNIT_DESTROYED(unit)
healthBar.hp:SetValue(0) healthBar.hp:SetValue(0)
healthBar.hp.current = 0 healthBar.hp.current = 0
healthBar.healthText:SetText(L["LEAVE"]) Healthbar:SetText(unit, 0, 100, L["LEAVE"])
healthBar.nameText:SetText("")
end end
local function option(params) local function option(params)
@ -455,7 +456,7 @@ function Healthbar:GetOptions()
max = 20, max = 20,
width = "full", width = "full",
}), }),
headerLeftText = { headerOffsets = {
type = "header", type = "header",
name = L["Offsets"], name = L["Offsets"],
order = 30, order = 30,

View File

@ -16,7 +16,8 @@ local Powerbar = Gladdy:NewModule("Power Bar", 90, {
powerBarBorderColor = { r = 0, g = 0, b = 0, a = 1 }, powerBarBorderColor = { r = 0, g = 0, b = 0, a = 1 },
powerBarFontColor = { r = 1, g = 1, b = 1, a = 1 }, powerBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
powerBarBgColor = { r = 0.3, g = 0.3, b = 0.3, a = 0.7 }, powerBarBgColor = { r = 0.3, g = 0.3, b = 0.3, a = 0.7 },
powerBarFontSize = 10, powerBarRaceFontSize = 10,
powerBarPowerFontSize = 10,
powerShowSpec = true, powerShowSpec = true,
powerShowRace = true, powerShowRace = true,
powerActual = true, powerActual = true,
@ -24,6 +25,15 @@ local Powerbar = Gladdy:NewModule("Power Bar", 90, {
powerPercentage = false, powerPercentage = false,
powerFrameStrata = "MEDIUM", powerFrameStrata = "MEDIUM",
powerFrameLevel = 1, powerFrameLevel = 1,
powerCustomTagsEnabled = false,
powerTextLeft = "[spec] [race]",
powerTextRight = "[current]/[max]",
powerTextLeftOutline = false,
powerTextRightOutline = false,
powerTextLeftVOffset = 1,
powerTextLeftHOffset = 5,
powerTextRightVOffset = 1,
powerTextRightHOffset = -5,
}) })
function Powerbar:Initialize() function Powerbar:Initialize()
@ -72,85 +82,31 @@ function Powerbar:CreateFrame(unit)
powerBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.powerBarBgColor)) powerBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.powerBarBgColor))
powerBar.raceText = powerBar:CreateFontString(nil, "LOW") powerBar.raceText = powerBar:CreateFontString(nil, "LOW")
powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarFontSize) powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarRaceFontSize, Gladdy.db.powerTextLeftOutline and "OUTLINE")
powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.raceText:SetShadowOffset(1, -1) powerBar.raceText:SetShadowOffset(1, -1)
powerBar.raceText:SetShadowColor(0, 0, 0, 1) powerBar.raceText:SetShadowColor(0, 0, 0, 1)
powerBar.raceText:SetJustifyH("CENTER") powerBar.raceText:SetJustifyH("CENTER")
powerBar.raceText:SetPoint("LEFT", 5, 1) powerBar.raceText:SetPoint("LEFT", Gladdy.db.powerTextLeftHOffset, Gladdy.db.powerTextLeftVOffset)
powerBar.powerText = powerBar:CreateFontString(nil, "LOW") powerBar.powerText = powerBar:CreateFontString(nil, "LOW")
powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarFontSize) powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarPowerFontSize, Gladdy.db.powerTextRightOutline and "OUTLINE")
powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.powerText:SetShadowOffset(1, -1) powerBar.powerText:SetShadowOffset(1, -1)
powerBar.powerText:SetShadowColor(0, 0, 0, 1) powerBar.powerText:SetShadowColor(0, 0, 0, 1)
powerBar.powerText:SetJustifyH("CENTER") powerBar.powerText:SetJustifyH("CENTER")
powerBar.powerText:SetPoint("RIGHT", -5, 1) powerBar.powerText:SetPoint("RIGHT", Gladdy.db.powerTextRightHOffset, Gladdy.db.powerTextRightVOffset)
button.powerBar = powerBar button.powerBar = powerBar
self.frames[unit] = powerBar self.frames[unit] = powerBar
self:ResetUnit(unit) self:ResetUnit(unit)
powerBar.unit = unit
powerBar:RegisterUnitEvent("UNIT_POWER_UPDATE", unit) powerBar:RegisterUnitEvent("UNIT_POWER_UPDATE", unit)
powerBar:RegisterUnitEvent("UNIT_MAXPOWER", unit) powerBar:RegisterUnitEvent("UNIT_MAXPOWER", unit)
powerBar:RegisterUnitEvent("UNIT_DISPLAYPOWER", unit) powerBar:RegisterUnitEvent("UNIT_DISPLAYPOWER", unit)
powerBar:SetScript("OnEvent", Powerbar.OnEvent) powerBar:SetScript("OnEvent", Powerbar.OnEvent)
end end
function Powerbar.OnEvent(powerBar, event, unit)
if event == "UNIT_POWER_UPDATE" then
Powerbar:SetPower(powerBar, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
elseif event == "UNIT_MAXPOWER" then
Powerbar:SetPower(powerBar, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
elseif event == "UNIT_DISPLAYPOWER" then
Powerbar:SetPower(powerBar, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
end
end
function Powerbar:SetPower(powerBar, power, powerMax, powerType)
local powerPercentage = floor(power * 100 / powerMax)
local powerText
if (Gladdy.db.powerActual) then
powerText = powerMax > 999 and ("%.1fk"):format(power / 1000) or power
end
if (Gladdy.db.powerMax) then
local text = powerMax > 999 and ("%.1fk"):format(powerMax / 1000) or powerMax
if (powerText) then
powerText = ("%s/%s"):format(powerText, text)
else
powerText = text
end
end
if (Gladdy.db.powerPercentage) then
if (powerText) then
powerText = ("%s (%d%%)"):format(powerText, powerPercentage)
else
powerText = ("%d%%"):format(powerPercentage)
end
end
if (powerType == 1 and powerBar.powerType ~= powerType) then
powerBar.energy:SetStatusBarColor(1, 0, 0, 1)
powerBar.powerColor = {r = 1, g = 0, b = 0}
powerBar.powerType = powerType
elseif (powerType == 3 and powerBar.powerType ~= powerType) then
powerBar.energy:SetStatusBarColor(1, 1, 0, 1)
powerBar.powerColor = {r = 1, g = 1, b = 0}
powerBar.powerType = powerType
elseif powerBar.powerType ~= powerType then
powerBar.energy:SetStatusBarColor(.18, .44, .75, 1)
powerBar.powerColor = {r = .18, g = .44, b = .75}
powerBar.powerType = powerType
end
powerBar.powerText:SetText(powerText)
powerBar.energy:SetMinMaxValues(0, powerMax)
powerBar.energy:SetValue(power)
end
function Powerbar:UpdateFrame(unit) function Powerbar:UpdateFrame(unit)
local powerBar = self.frames[unit] local powerBar = self.frames[unit]
if (not powerBar) then if (not powerBar) then
@ -182,7 +138,7 @@ function Powerbar:UpdateFrame(unit)
powerBar:SetPoint("TOPLEFT", healthBar, "BOTTOMLEFT", 0, -1) powerBar:SetPoint("TOPLEFT", healthBar, "BOTTOMLEFT", 0, -1)
powerBar:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "powerBarBorderStyle"), powerBar:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "powerBarBorderStyle"),
edgeSize = Gladdy.db.powerBarBorderSize }) edgeSize = Gladdy.db.powerBarBorderSize })
powerBar:SetBackdropBorderColor(Gladdy:SetColor(Gladdy.db.powerBarBorderColor)) powerBar:SetBackdropBorderColor(Gladdy:SetColor(Gladdy.db.powerBarBorderColor))
powerBar.energy:SetStatusBarTexture(Gladdy:SMFetch("statusbar", "powerBarTexture")) powerBar.energy:SetStatusBarTexture(Gladdy:SMFetch("statusbar", "powerBarTexture"))
@ -190,10 +146,13 @@ function Powerbar:UpdateFrame(unit)
powerBar.energy:SetPoint("TOPLEFT", powerBar, "TOPLEFT", (Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset), -(Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset)) powerBar.energy:SetPoint("TOPLEFT", powerBar, "TOPLEFT", (Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset), -(Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset))
powerBar.energy:SetPoint("BOTTOMRIGHT", powerBar, "BOTTOMRIGHT", -(Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset), (Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset)) powerBar.energy:SetPoint("BOTTOMRIGHT", powerBar, "BOTTOMRIGHT", -(Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset), (Gladdy.db.powerBarBorderSize/Gladdy.db.statusbarBorderOffset))
powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarFontSize) powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarRaceFontSize, Gladdy.db.powerTextLeftOutline and "OUTLINE")
powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarFontSize) powerBar.raceText:SetPoint("LEFT", Gladdy.db.powerTextLeftHOffset, Gladdy.db.powerTextLeftVOffset)
powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarPowerFontSize, Gladdy.db.powerTextRightOutline and "OUTLINE")
powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.powerText:SetPoint("RIGHT", Gladdy.db.powerTextRightHOffset, Gladdy.db.powerTextRightVOffset)
powerBar:SetFrameStrata(Gladdy.db.powerFrameStrata) powerBar:SetFrameStrata(Gladdy.db.powerFrameStrata)
powerBar:SetFrameLevel(Gladdy.db.powerFrameLevel) powerBar:SetFrameLevel(Gladdy.db.powerFrameLevel)
@ -201,6 +160,83 @@ function Powerbar:UpdateFrame(unit)
powerBar.energy:SetFrameLevel(Gladdy.db.powerFrameLevel - 1) powerBar.energy:SetFrameLevel(Gladdy.db.powerFrameLevel - 1)
end end
function Powerbar.OnEvent(powerBar, event, unit)
if event == "UNIT_POWER_UPDATE" then
Powerbar:SetPower(powerBar, unit, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
elseif event == "UNIT_MAXPOWER" then
Powerbar:SetPower(powerBar, unit, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
elseif event == "UNIT_DISPLAYPOWER" then
Powerbar:SetPower(powerBar, unit, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
end
end
function Powerbar:SetText(unit, power, powerMax, status)
local button = Gladdy.buttons[unit]
if not Gladdy.buttons[unit] then
return
end
local powerBar = button.powerBar
if Gladdy.db.powerCustomTagsEnabled then
powerBar.powerText:SetText(Gladdy:SetTag(unit, Gladdy.db.powerTextRight, power, powerMax, status))
powerBar.raceText:SetText(Gladdy:SetTag(unit, Gladdy.db.powerTextLeft, power, powerMax, status))
else
if power then
local powerPercentage = floor(power * 100 / powerMax)
local powerText
if (Gladdy.db.powerActual) then
powerText = powerMax > 999 and ("%.1fk"):format(power / 1000) or power
end
if (Gladdy.db.powerMax) then
local text = powerMax > 999 and ("%.1fk"):format(powerMax / 1000) or powerMax
if (powerText) then
powerText = ("%s/%s"):format(powerText, text)
else
powerText = text
end
end
if (Gladdy.db.powerPercentage) then
if (powerText) then
powerText = ("%s (%d%%)"):format(powerText, powerPercentage)
else
powerText = ("%d%%"):format(powerPercentage)
end
end
powerBar.powerText:SetText(powerText)
end
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
if (button.spec and Gladdy.db.powerShowSpec) then
raceText = button.spec .. " " .. raceText
end
powerBar.raceText:SetText(raceText)
end
end
function Powerbar:SetPower(powerBar, unit, power, powerMax, powerType, status)
Powerbar:SetText(unit, power, powerMax, status)
powerBar.energy.current = power
powerBar.energy.max = powerMax
powerBar.energy.powerType = powerType
if (powerType == 1 and powerBar.powerType ~= powerType) then
powerBar.energy:SetStatusBarColor(1, 0, 0, 1)
powerBar.powerColor = {r = 1, g = 0, b = 0}
powerBar.powerType = powerType
elseif (powerType == 3 and powerBar.powerType ~= powerType) then
powerBar.energy:SetStatusBarColor(1, 1, 0, 1)
powerBar.powerColor = {r = 1, g = 1, b = 0}
powerBar.powerType = powerType
elseif powerBar.powerType ~= powerType then
powerBar.energy:SetStatusBarColor(.18, .44, .75, 1)
powerBar.powerColor = {r = .18, g = .44, b = .75}
powerBar.powerType = powerType
end
powerBar.energy:SetMinMaxValues(0, powerMax)
powerBar.energy:SetValue(power)
end
function Powerbar:ResetUnit(unit) function Powerbar:ResetUnit(unit)
local powerBar = self.frames[unit] local powerBar = self.frames[unit]
if (not powerBar) then if (not powerBar) then
@ -222,8 +258,14 @@ function Powerbar:Test(unit)
return return
end end
powerBar.energy.current = button.power
powerBar.energy.max = button.powerMax
powerBar.energy.powerType = button.powerType
self:ENEMY_SPOTTED(unit) self:ENEMY_SPOTTED(unit)
self:UNIT_POWER(unit, button.power, button.powerMax, button.powerType) self:UNIT_POWER(unit, button.power, button.powerMax, button.powerType)
if unit == "arena1" then
self:UNIT_DEATH(unit)
end
end end
function Powerbar:ENEMY_SPOTTED(unit) function Powerbar:ENEMY_SPOTTED(unit)
@ -233,13 +275,6 @@ function Powerbar:ENEMY_SPOTTED(unit)
return return
end end
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
if (button.spec and Gladdy.db.powerShowSpec) then
raceText = button.spec .. " " .. raceText
end
powerBar.raceText:SetText(raceText)
if UnitExists(unit) then if UnitExists(unit) then
Powerbar:SetPower(powerBar, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit)) Powerbar:SetPower(powerBar, UnitPower(unit, UnitPowerType(unit), true), UnitPowerMax(unit, UnitPowerType(unit), true), UnitPowerType(unit))
end end
@ -251,13 +286,10 @@ function Powerbar:UNIT_SPEC(unit, spec)
if (not powerBar or not button) then if (not powerBar or not button) then
return return
end end
local raceText = Gladdy.db.powerShowRace and button.raceLoc or ""
if (button.spec and Gladdy.db.powerShowSpec) then if UnitExists(unit) then
raceText = spec .. " " .. raceText Powerbar:SetPower(powerBar, unit, powerBar.energy.current, powerBar.energy.max, powerBar.energy.powerType)
end end
powerBar.raceText:SetText(raceText)
end end
function Powerbar:UNIT_POWER(unit, power, powerMax, powerType) function Powerbar:UNIT_POWER(unit, power, powerMax, powerType)
@ -269,44 +301,7 @@ function Powerbar:UNIT_POWER(unit, power, powerMax, powerType)
if not Gladdy.buttons[unit].class then if not Gladdy.buttons[unit].class then
Gladdy:SpotEnemy(unit, true) Gladdy:SpotEnemy(unit, true)
end end
Powerbar:SetPower(powerBar, unit, power, powerMax, powerType)
local powerPercentage = floor(power * 100 / powerMax)
local powerText
if (Gladdy.db.powerActual) then
powerText = powerMax > 999 and ("%.1fk"):format(power / 1000) or power
end
if (Gladdy.db.powerMax) then
local text = powerMax > 999 and ("%.1fk"):format(powerMax / 1000) or powerMax
if (powerText) then
powerText = ("%s/%s"):format(powerText, text)
else
powerText = text
end
end
if (Gladdy.db.powerPercentage) then
if (powerText) then
powerText = ("%s (%d%%)"):format(powerText, powerPercentage)
else
powerText = ("%d%%"):format(powerPercentage)
end
end
if (powerType == 1) then
powerBar.energy:SetStatusBarColor(1, 0, 0, 1)
powerBar.powerColor = {r = 1, g = 0, b = 0}
elseif (powerType == 3) then
powerBar.energy:SetStatusBarColor(1, 1, 0, 1)
powerBar.powerColor = {r = 1, g = 1, b = 0}
else
powerBar.energy:SetStatusBarColor(.18, .44, .75, 1)
powerBar.powerColor = {r = .18, g = .44, b = .75}
end
powerBar.powerText:SetText(powerText)
powerBar.energy:SetValue(powerPercentage)
end end
function Powerbar:UNIT_DEATH(unit) function Powerbar:UNIT_DEATH(unit)
@ -314,9 +309,7 @@ function Powerbar:UNIT_DEATH(unit)
if (not powerBar) then if (not powerBar) then
return return
end end
Powerbar:SetPower(powerBar, unit, 0, powerBar.energy.max, powerBar.energy.powerType, L["DEAD"])
powerBar.energy:SetValue(0)
powerBar.powerText:SetText("0%")
end end
function Powerbar:UNIT_DESTROYED(unit) function Powerbar:UNIT_DESTROYED(unit)
@ -324,8 +317,7 @@ function Powerbar:UNIT_DESTROYED(unit)
if (not powerBar) then if (not powerBar) then
return return
end end
powerBar.energy:SetValue(0) Powerbar:SetPower(powerBar, unit, 0, powerBar.energy.max, powerBar.energy.powerType, L["LEAVE"])
powerBar.powerText:SetText("0%")
end end
local function option(params) local function option(params)
@ -341,8 +333,10 @@ local function option(params)
if Gladdy.db.powerBarBorderSize > Gladdy.db.powerBarHeight/2 then if Gladdy.db.powerBarBorderSize > Gladdy.db.powerBarHeight/2 then
Gladdy.db.powerBarBorderSize = Gladdy.db.powerBarHeight/2 Gladdy.db.powerBarBorderSize = Gladdy.db.powerBarHeight/2
end end
for i=1,Gladdy.curBracket do if Gladdy.frame.testing then
Powerbar:Test("arena" .. i) for i=1,Gladdy.curBracket do
Powerbar:Test("arena" .. i)
end
end end
Gladdy:UpdateFrame() Gladdy:UpdateFrame()
end, end,
@ -436,16 +430,84 @@ function Powerbar:GetOptions()
order = 12, order = 12,
hasAlpha = true, hasAlpha = true,
}), }),
powerBarFontSize = option({ powerTextLeftOutline = option({
type = "range", type = "toggle",
name = L["Font size"], name = L["Left Font Outline"],
desc = L["Size of the text"],
order = 13, order = 13,
width = "full",
}),
powerTextRightOutline = option({
type = "toggle",
name = L["Right Font Outline"],
order = 14,
width = "full",
}),
headerSize = {
type = "header",
name = L["Size"],
order = 20,
},
powerBarRaceFontSize = option({
type = "range",
name = L["Race font size"],
desc = L["Size of the race text"],
order = 21,
step = 0.1, step = 0.1,
min = 1, min = 0,
max = 20, max = 20,
width = "full", width = "full",
}), }),
powerBarPowerFontSize = option({
type = "range",
name = L["Power font size"],
desc = L["Size of the power text"],
order = 22,
step = 0.1,
min = 0,
max = 20,
width = "full",
}),
headerOffsets = {
type = "header",
name = L["Offsets"],
order = 30,
},
powerTextLeftVOffset = option({
type = "range",
name = L["Left Text Vertical Offset"],
order = 31,
step = 0.1,
min = -200,
max = 200,
width = "full",
}),
powerTextLeftHOffset = option({
type = "range",
name = L["Left Text Horizontal Offset"],
order = 32,
step = 0.1,
min = -200,
max = 200,
width = "full",
}),
powerTextRightVOffset = option({
type = "range",
name = L["Right Text Vertical Offset"],
order = 33,
step = 0.1,
min = -200,
max = 200,
width = "full",
}),
powerTextRightHOffset = option({
type = "range",
name = L["Right Text Horizontal Offset"],
order = 34,
step = 0.1,
min = -200,
max = 200,
width = "full",
}),
}, },
}, },
border = { border = {
@ -528,31 +590,44 @@ function Powerbar:GetOptions()
name = L["Show race"], name = L["Show race"],
desc = L["Show race"], desc = L["Show race"],
order = 2, order = 2,
disabled = function() return Gladdy.db.powerCustomTagsEnabled end,
}), }),
powerShowSpec= option({ powerShowSpec= option({
type = "toggle", type = "toggle",
name = L["Show spec"], name = L["Show spec"],
desc = L["Show spec"], desc = L["Show spec"],
order = 3, order = 3,
disabled = function() return Gladdy.db.powerCustomTagsEnabled end,
}), }),
powerActual = option({ powerActual = option({
type = "toggle", type = "toggle",
name = L["Show the actual power"], name = L["Show the actual power"],
desc = L["Show the actual power on the power bar"], desc = L["Show the actual power on the power bar"],
order = 31, order = 4,
disabled = function() return Gladdy.db.powerCustomTagsEnabled end,
}), }),
powerMax = option({ powerMax = option({
type = "toggle", type = "toggle",
name = L["Show max power"], name = L["Show max power"],
desc = L["Show max power on the power bar"], desc = L["Show max power on the power bar"],
order = 32, order = 5,
disabled = function() return Gladdy.db.powerCustomTagsEnabled end,
}), }),
powerPercentage = option({ powerPercentage = option({
type = "toggle", type = "toggle",
name = L["Show power percentage"], name = L["Show power percentage"],
desc = L["Show power percentage on the power bar"], desc = L["Show power percentage on the power bar"],
order = 33, order = 6,
disabled = function() return Gladdy.db.powerCustomTagsEnabled end,
}), }),
header = {
type = "header",
name = L["Custom Tags"],
order = 10,
},
powerCustomTagsEnabled = Gladdy:GetTagOption(L["Custom Tags Enabled"], 11, nil, option, true),
powerTextLeft = Gladdy:GetTagOption(L["Left Text"], 12, "powerCustomTagsEnabled", option),
powerTextRight = Gladdy:GetTagOption(L["Right Text"], 13, "powerCustomTagsEnabled", option),
}, },
}, },
}, },

View File

@ -43,9 +43,9 @@ local function getTagText(unit, tag, current, max, status)
if str_find(tag, "percent") then if str_find(tag, "percent") then
return current and max and floor(current * 100 / max) .. "%%" or "" return current and max and floor(current * 100 / max) .. "%%" or ""
elseif str_find(tag, "current") then elseif str_find(tag, "current") then
return current or "" return current and max > 999 and ("%.1fk"):format(current / 1000) or current or ""
elseif str_find(tag, "max") then elseif str_find(tag, "max") then
return max or "" return max and max > 999 and ("%.1fk"):format(max / 1000) or max or ""
elseif str_find(tag, "status") then elseif str_find(tag, "status") then
if str_find(tag, "%|") and status == nil then if str_find(tag, "%|") and status == nil then
return nil return nil
@ -55,11 +55,12 @@ local function getTagText(unit, tag, current, max, status)
elseif str_find(tag, "name") then elseif str_find(tag, "name") then
return button.name or "" return button.name or ""
elseif str_find(tag, "class") then elseif str_find(tag, "class") then
return button.classLoc or "" return button.classLoc or ""
elseif str_find(tag, "race") then elseif str_find(tag, "race") then
return button.raceLoc or "" return button.raceLoc or ""
elseif str_find(tag, "arena") then elseif str_find(tag, "arena") then
return str_gsub(unit, "arena", "") local str,found = str_gsub(unit, "arena", "")
return found == 1 and str or ""
elseif str_find(tag, "spec") then elseif str_find(tag, "spec") then
if str_find(tag, "%|") and button.spec == nil then if str_find(tag, "%|") and button.spec == nil then
return nil return nil