initial commit
This commit is contained in:
111
Modules/DataBars/Honor.lua
Normal file
111
Modules/DataBars/Honor.lua
Normal file
@@ -0,0 +1,111 @@
|
||||
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
|
||||
Reference in New Issue
Block a user