112 lines
3.8 KiB
Lua
112 lines
3.8 KiB
Lua
|
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||
|
local DB = E:GetModule('DataBars')
|
||
|
|
||
|
local _G = _G
|
||
|
local format = format
|
||
|
local UnitHonor = UnitHonor
|
||
|
local UnitHonorLevel = UnitHonorLevel
|
||
|
local IsPlayerAtEffectiveMaxLevel = IsPlayerAtEffectiveMaxLevel
|
||
|
local UnitHonorMax = UnitHonorMax
|
||
|
local TogglePVPUI = TogglePVPUI
|
||
|
local HONOR = HONOR
|
||
|
|
||
|
local CurrentHonor, MaxHonor, CurrentLevel, PercentHonor, RemainingHonor
|
||
|
|
||
|
function DB:HonorBar_Update(event, unit)
|
||
|
if event == 'PLAYER_FLAGS_CHANGED' and unit ~= 'player' then return end
|
||
|
|
||
|
local bar = DB.StatusBars.Honor
|
||
|
DB:SetVisibility(bar)
|
||
|
|
||
|
if not DB.db.honor.enable then return end
|
||
|
|
||
|
CurrentHonor, MaxHonor, CurrentLevel = UnitHonor('player'), UnitHonorMax('player'), UnitHonorLevel('player')
|
||
|
|
||
|
--Guard against division by zero, which appears to be an issue when zoning in/out of dungeons
|
||
|
if MaxHonor == 0 then MaxHonor = 1 end
|
||
|
|
||
|
PercentHonor, RemainingHonor = (CurrentHonor / MaxHonor) * 100, MaxHonor - CurrentHonor
|
||
|
|
||
|
local displayString, textFormat = '', DB.db.honor.textFormat
|
||
|
local color = DB.db.colors.honor
|
||
|
|
||
|
bar:SetMinMaxValues(0, MaxHonor)
|
||
|
bar:SetValue(CurrentHonor)
|
||
|
bar:SetStatusBarColor(color.r, color.g, color.b, color.a)
|
||
|
|
||
|
if textFormat == 'PERCENT' then
|
||
|
displayString = format('%d%% - [%s]', PercentHonor, CurrentLevel)
|
||
|
elseif textFormat == 'CURMAX' then
|
||
|
displayString = format('%s - %s - [%s]', E:ShortValue(CurrentHonor), E:ShortValue(MaxHonor), CurrentLevel)
|
||
|
elseif textFormat == 'CURPERC' then
|
||
|
displayString = format('%s - %d%% - [%s]', E:ShortValue(CurrentHonor), PercentHonor, CurrentLevel)
|
||
|
elseif textFormat == 'CUR' then
|
||
|
displayString = format('%s - [%s]', E:ShortValue(CurrentHonor), CurrentLevel)
|
||
|
elseif textFormat == 'REM' then
|
||
|
displayString = format('%s - [%s]', E:ShortValue(RemainingHonor), CurrentLevel)
|
||
|
elseif textFormat == 'CURREM' then
|
||
|
displayString = format('%s - %s - [%s]', E:ShortValue(CurrentHonor), E:ShortValue(RemainingHonor), CurrentLevel)
|
||
|
elseif textFormat == 'CURPERCREM' then
|
||
|
displayString = format('%s - %d%% (%s) - [%s]', E:ShortValue(CurrentHonor), CurrentHonor, E:ShortValue(RemainingHonor), CurrentLevel)
|
||
|
end
|
||
|
|
||
|
bar.text:SetText(displayString)
|
||
|
end
|
||
|
|
||
|
function DB:HonorBar_OnEnter()
|
||
|
if self.db.mouseover then
|
||
|
E:UIFrameFadeIn(self, .4, self:GetAlpha(), 1)
|
||
|
end
|
||
|
|
||
|
if _G.GameTooltip:IsForbidden() then return end
|
||
|
|
||
|
_G.GameTooltip:ClearLines()
|
||
|
_G.GameTooltip:SetOwner(self, 'ANCHOR_CURSOR')
|
||
|
|
||
|
_G.GameTooltip:AddLine(HONOR)
|
||
|
|
||
|
_G.GameTooltip:AddDoubleLine(L["Current Level:"], CurrentLevel, 1, 1, 1)
|
||
|
_G.GameTooltip:AddLine(' ')
|
||
|
|
||
|
_G.GameTooltip:AddDoubleLine(L["Honor XP:"], format(' %d / %d (%d%%)', CurrentHonor, MaxHonor, PercentHonor), 1, 1, 1)
|
||
|
_G.GameTooltip:AddDoubleLine(L["Honor Remaining:"], format(' %d (%d%% - %d '..L["Bars"]..')', RemainingHonor, (RemainingHonor) / MaxHonor * 100, 20 * (RemainingHonor) / MaxHonor), 1, 1, 1)
|
||
|
|
||
|
_G.GameTooltip:Show()
|
||
|
end
|
||
|
|
||
|
function DB:HonorBar_OnClick()
|
||
|
TogglePVPUI()
|
||
|
end
|
||
|
|
||
|
function DB:HonorBar_Toggle()
|
||
|
local bar = DB.StatusBars.Honor
|
||
|
bar.db = DB.db.honor
|
||
|
|
||
|
if bar.db.enable then
|
||
|
E:EnableMover(bar.holder.mover:GetName())
|
||
|
|
||
|
DB:RegisterEvent('HONOR_XP_UPDATE', 'HonorBar_Update')
|
||
|
DB:RegisterEvent('PLAYER_FLAGS_CHANGED', 'HonorBar_Update')
|
||
|
|
||
|
DB:HonorBar_Update()
|
||
|
else
|
||
|
E:DisableMover(bar.holder.mover:GetName())
|
||
|
|
||
|
DB:UnregisterEvent('HONOR_XP_UPDATE')
|
||
|
DB:UnregisterEvent('PLAYER_FLAGS_CHANGED')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function DB:HonorBar()
|
||
|
local Honor = DB:CreateBar('ElvUI_HonorBar', 'Honor', DB.HonorBar_Update, DB.HonorBar_OnEnter, DB.HonorBar_OnClick, {'TOPRIGHT', E.UIParent, 'TOPRIGHT', -3, -255})
|
||
|
DB:CreateBarBubbles(Honor)
|
||
|
|
||
|
Honor.ShouldHide = function()
|
||
|
return DB.db.honor.hideBelowMaxLevel and not IsPlayerAtEffectiveMaxLevel()
|
||
|
end
|
||
|
|
||
|
E:CreateMover(Honor.holder, 'HonorBarMover', L["Honor Bar"], nil, nil, nil, nil, nil, 'databars,honor')
|
||
|
|
||
|
DB:HonorBar_Toggle()
|
||
|
end
|