vanilla-wow-addons – Rev 1
?pathlinks?
local abacus = AbacusLib:GetInstance('1.0')
local babbleZone = BabbleLib:GetInstance('Zone 1.1')
local compost = CompostLib:GetInstance('compost-1')
local crayon = CrayonLib:GetInstance('1.0')
local dewdrop = DewdropLib:GetInstance('1.0')
local glory = GloryLib:GetInstance('1.0')
local metro = Metrognome:GetInstance('1')
local tablet = TabletLib:GetInstance('1.0')
local bfNum, bfAlpha
BattlegroundFu = FuBarPlugin:GetInstance("1.2"):new({
name = BattlegroundFuLocals.NAME,
description = BattlegroundFuLocals.DESCRIPTION,
version = "1.1.5",
releaseDate = "05-27-2006",
aceCompatible = 103,
author = "Mynithrosil of Feathermoon",
email = "hyperactiveChipmunk@gmail.com",
website = "http://hyperactiveChipmunk.wowinterface.com",
category = "others",
db = AceDatabase:new("BattlegroundFuDB"),
defaults = {
hideMinimapButton = false,
invertQueueProgress = false,
clickShowsScoreboard = false,
showTeamSizes = true,
showTeamScores = true,
showNumBases = true,
showResourceTTV = true,
showBattlefieldObjectiveStatus = true,
showUncontestedObjectives = true,
showCTFFlagCarriers = true,
showBattlefieldPlayerStatistics = true,
showBattlefieldQueues = true,
hideQueueText = {},
},
cmd = AceChatCmd:new(BattlegroundFuLocals.COMMANDS, BattlegroundFuLocals.CMD_OPTIONS),
hasIcon = true,
clickableTooltip = true,
loc = BattlegroundFuLocals,
updateTime = 1,
FACTION_ICON_PATH = "Interface\\GroupFrame\\UI-Group-PVP-",
})
--User Options Methods=========================================================
function BattlegroundFu:IsHidingMinimapButton()
return self.data.hideMinimapButton
end
function BattlegroundFu:ToggleHidingMinimapButton(loud)
self.data.hideMinimapButton = not self.data.hideMinimapButton
if loud then
self.cmd:status(self.loc.ARGUMENT_HIDEMINIMAPBUTTON, self.data.hideMinimapButton and 1 or 0, FuBarLocals.MAP_ONOFF)
end
if self.data.hideMinimapButton then
MiniMapBattlefieldFrame:Hide()
else
MiniMapBattlefieldFrame:Show()
end
return self.data.hideMinimapButton
end
function BattlegroundFu:IsInvertQueueProgress()
return self.data.invertQueueProgress
end
function BattlegroundFu:ToggleInvertQueueProgress(loud)
self.data.invertQueueProgress = not self.data.invertQueueProgress
if loud then
self.cmd:status(self.loc.ARGUMENT_INVERTQUEUEPROGRESS, self.data.invertQueueProgress and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateDisplay()
return self.data.invertQueueProgress
end
function BattlegroundFu:IsClickShowsScoreboard()
return self.data.clickShowsScoreboard
end
function BattlegroundFu:ToggleClickShowsScoreboard(loud)
self.data.clickShowsScoreboard = not self.data.clickShowsScoreboard
if loud then
self.cmd:status(self.loc.ARGUMENT_CLICKSHOWSSCOREBOARD, self.data.clickShowsScoreboard and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateDisplay()
end
function BattlegroundFu:IsShowingTeamSizes()
return self.data.showTeamSizes
end
function BattlegroundFu:ToggleShowingTeamSizes(loud)
self.data.showTeamSizes = not self.data.showTeamSizes
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWTEAMSIZES, self.data.showTeamSizes and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showTeamSizes
end
function BattlegroundFu:IsShowingTeamScores()
return self.data.showTeamScores
end
function BattlegroundFu:ToggleShowingTeamScores(loud)
self.data.showTeamScores = not self.data.showTeamScores
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWTEAMSCORES, self.data.showTeamScores and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showTeamScores
end
function BattlegroundFu:IsShowingNumBases()
return self.data.showNumBases
end
function BattlegroundFu:ToggleShowingNumBases(loud)
self.data.showNumBases = not self.data.showNumBases
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWNUMBASES, self.data.showNumBases and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showNumBases
end
function BattlegroundFu:IsShowingResourceTTV()
return self.data.showResourceTTV
end
function BattlegroundFu:ToggleShowingResourceTTV(loud)
self.data.showResourceTTV = not self.data.showResourceTTV
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWRESOURCETTV, self.data.showResourceTTV and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showResourceTTV
end
function BattlegroundFu:IsShowingBattlefieldPlayerStatistics()
return self.data.showBattlefieldPlayerStatistics
end
function BattlegroundFu:ToggleShowingBattlefieldPlayerStatistics(loud)
self.data.showBattlefieldPlayerStatistics = not self.data.showBattlefieldPlayerStatistics
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWBATTLEFIELDSTATS, self.data.showBattlefieldPlayerStatistics and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showBattlefieldPlayerStatistics
end
function BattlegroundFu:IsShowingBattlefieldObjectiveStatus()
return self.data.showBattlefieldObjectiveStatus
end
function BattlegroundFu:ToggleShowingBattlefieldObjectiveStatus(loud)
self.data.showBattlefieldObjectiveStatus = not self.data.showBattlefieldObjectiveStatus
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWOBJECTIVESTATUS, self.data.showBattlefieldObjectiveStatus and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showBattlefieldObjectiveStatus
end
function BattlegroundFu:IsShowingUncontestedObjectives()
return self.data.showUncontestedObjectives
end
function BattlegroundFu:ToggleShowingUncontestedObjectives(loud)
self.data.showUncontestedObjectives = not self.data.showUncontestedObjectives
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWUNCONTESTED, self.data.showUncontestedObjectives and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showUncontestedObjectives
end
function BattlegroundFu:IsShowingCTFFlagCarriers()
return self.data.showCTFFlagCarriers
end
function BattlegroundFu:ToggleShowingCTFFlagCarriers(loud)
self.data.showCTFFlagCarriers = not self.data.showCTFFlagCarriers
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWCTFFLAGCARRIERS, self.data.showCTFFlagCarriers and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showCTFFlagCarriers
end
function BattlegroundFu:IsShowingBattlefieldQueues()
return self.data.showBattlefieldQueues
end
function BattlegroundFu:ToggleShowingBattlefieldQueues(loud)
self.data.showBattlefieldQueues = not self.data.showBattlefieldQueues
if loud then
self.cmd:status(self.loc.ARGUMENT_SHOWBATTLEFIELDQUEUES, self.data.showBattlefieldQueues and 1 or 0, FuBarLocals.MAP_ONOFF)
end
self:UpdateTooltip()
return self.data.showBattlefieldQueues
end
function BattlegroundFu:IsHidingQueueText(q)
return self.data.hideQueueText[q]
end
function BattlegroundFu:ToggleHidingQueueText(q)
self.data.hideQueueText[q] = not self.data.hideQueueText[q]
self:UpdateText()
return self.data.hideQueueText[q]
end
--End User Options Methods=====================================================
--FuBar Standard Methods=======================================================
function BattlegroundFu:Initialize()
local defaults = {}
for index,value in defaults do
if self.data[index] == nil then
self.data[index] = value
end
end
self.j = 1
self.numActiveBattlefields = {}
end
function BattlegroundFu:Enable()
self:RegisterEvent("UPDATE_BATTLEFIELD_STATUS", "OnUpdateBattlefieldStatus")
self:RegisterEvent("UPDATE_WORLD_STATES", "UpdateTooltip")
self.playerFaction = UnitFactionGroup("player")
metro:Register(self.name, self.Update, 1, self)
metro:Start(self.name)
-- metro:Register("BatFu_numActiveBattlefields", self.UpdateNumActiveBattlefields, 1, self)
end
function BattlegroundFu:Disable()
glory:UnregisterAll(self)
metro:Unregister(self.name)
-- metro:Unregister("BatFu_numActiveBattlefields")
end
function BattlegroundFu:Report()
local report = compost:Acquire(
compost:AcquireHash(
'text', self.loc.ARGUMENT_HIDEMINIMAPBUTTON,
'val', self:IsHidingMinimapButton() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_INVERTQUEUEPROGRESS,
'val', self:IsInvertQueueProgress() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_CLICKSHOWSSCOREBOARD,
'val', self:IsClickShowsScoreboard() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWTEAMSIZES,
'val', self:IsShowingTeamSizes() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWTEAMSCORES,
'val', self:IsShowingTeamScores() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWNUMBASES,
'val', self:IsShowingNumBases() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWRESOURCETTV,
'val', self:IsShowingResourceTTV() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWBATTLEFIELDSTATS,
'val', self:IsShowingBattlefieldPlayerStatistics() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWOBJECTIVESTATUS,
'val', self:IsShowingBattlefieldObjectiveStatus() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWUNCONTESTED,
'val', self:IsShowingUncontestedObjectives() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWCTFFLAGCARRIERS,
'val', self:IsShowingCTFFlagCarriers() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
),
compost:AcquireHash(
'text', self.loc.ARGUMENT_SHOWBATTLEFIELDQUEUES,
'val', self:IsShowingBattlefieldQueues() and 1 or 0,
'map', FuBarLocals.MAP_ONOFF
)
)
self.cmd:report(report)
compost:Reclaim(report, 1)
end
------MenuSettings=============================================================
function BattlegroundFu:MenuSettings(level, value, inTooltip)
if level == 1 then
self:MenuSettings_BattlefieldDropDown() --Rewrite of the Battlefield Minimap Button Dropdown; see below
dewdrop:AddLine()
if not inTooltip then
dewdrop:AddLine(
'text', self.loc.MENU_HIDE_MINIMAP_BUTTON,
'arg1', self,
'func', "ToggleHidingMinimapButton",
'checked', self:IsHidingMinimapButton()
)
dewdrop:AddLine(
'text', self.loc.MENU_INVERT_QUEUE_PROGRESS_TIMERS,
'arg1', self,
'func', "ToggleInvertQueueProgress",
'checked', self:IsInvertQueueProgress()
)
dewdrop:AddLine(
'text', self.loc.MENU_CLICK_SHOWS_SCOREBOARD,
'arg1', self,
'func', "ToggleClickShowsScoreboard",
'checked', self:IsClickShowsScoreboard()
)
dewdrop:AddLine()
dewdrop:AddLine(
'text', self.loc.MENU_TOOLTIP_DISPLAY,
'hasArrow', true,
'value', "ttdisplay"
)
else
self:MenuSettings_TooltipDisplay()
end
elseif level == 2 and not inTooltip then
if value == "ttdisplay" then
self:MenuSettings_TooltipDisplay()
end
end
end
----------MenuSettings Component Methods=======================================
function BattlegroundFu:MenuSettings_BattlefieldDropDown()
local status, mapName
for i = 1, MAX_BATTLEFIELD_QUEUES do
local i = i
local mapName = mapName
status, mapName = GetBattlefieldStatus(i)
if status == "queued" or status == "confirm" then
dewdrop:AddLine()
dewdrop:AddLine(
'text', mapName,
'textR', 1,
'textG', 0.843,
'textB', 0,
'arg1', self,
'arg2', mapName,
'func', "ToggleHidingQueueText",
'checked', not self:IsHidingQueueText(mapName)
)
if status == "queued" then
dewdrop:AddLine(
'text', CHANGE_INSTANCE,
'func', function ()
ShowBattlefieldList(i)
end
)
elseif status == "confirm" then
dewdrop:AddLine(
'text', ENTER_BATTLE,
'func', function ()
AcceptBattlefieldPort(i, 1)
end
)
end
dewdrop:AddLine(
'text', LEAVE_QUEUE,
'func', function ()
AcceptBattlefieldPort(i)
if not IsShiftKeyDown() then
dewdrop:Close(1)
end
end
)
end
end
end
function BattlegroundFu:MenuSettings_TooltipDisplay()
dewdrop:AddLine(
'text', self.loc.MENU_TEAM_SIZES,
'arg1', self,
'func', "ToggleShowingTeamSizes",
'checked', self:IsShowingTeamSizes()
)
dewdrop:AddLine(
'text', self.loc.MENU_TEAM_SCORES,
'arg1', self,
'func', "ToggleShowingTeamScores",
'checked', self:IsShowingTeamScores()
)
dewdrop:AddLine(
'text', self.loc.MENU_NUM_BASES_HELD,
'arg1', self,
'func', "ToggleShowingNumBases",
'checked', self:IsShowingNumBases()
)
dewdrop:AddLine(
'text', self.loc.MENU_RESOURCE_TTV,
'arg1', self,
'func', "ToggleShowingResourceTTV",
'checked', self:IsShowingResourceTTV()
)
dewdrop:AddLine(
'text', self.loc.MENU_BATTLEFIELD_STATS,
'arg1', self,
'func', "ToggleShowingBattlefieldPlayerStatistics",
'checked', self:IsShowingBattlefieldPlayerStatistics()
)
dewdrop:AddLine(
'text', self.loc.MENU_OBJECTIVE_STATUS,
'arg1', self,
'func', "ToggleShowingBattlefieldObjectiveStatus",
'checked', self:IsShowingBattlefieldObjectiveStatus()
)
dewdrop:AddLine(
'text', self.loc.MENU_SHOW_UNCONTESTED,
'arg1', self,
'func', "ToggleShowingUncontestedObjectives",
'checked', self:IsShowingUncontestedObjectives(),
'disabled', not self:IsShowingBattlefieldObjectiveStatus()
)
dewdrop:AddLine(
'text', self.loc.MENU_CTF_FLAG_CARRIERS,
'arg1', self,
'func', "ToggleShowingCTFFlagCarriers",
'checked', self:IsShowingCTFFlagCarriers()
)
dewdrop:AddLine(
'text', self.loc.MENU_BATTLEFIELD_QUEUES,
'arg1', self,
'func', "ToggleShowingBattlefieldQueues",
'checked', self:IsShowingBattlefieldQueues()
)
end
----------End MenuSettings Component Methods===================================
------End MenuSettings=========================================================
function BattlegroundFu:OnClick()
if glory:IsInBattlegrounds() and self:IsClickShowsScoreboard() then
if WorldStateScoreFrame:IsVisible() then
HideUIPanel(WorldStateScoreFrame)
else
ShowUIPanel(WorldStateScoreFrame)
end
elseif GetBattlefieldStatus(self.j) == "active" then
ShowUIPanel(WorldStateScoreFrame)
self.j = self.j + 1
elseif GetBattlefieldStatus(self.j) == "queued" or GetBattlefieldStatus(self.j) == "confirm" then
HideUIPanel(WorldStateScoreFrame)
ShowBattlefieldList(self.j)
self.j = self.j + 1
else
HideUIPanel(WorldStateScoreFrame)
HideUIPanel(BattlefieldFrame)
self.j = 1
end
end
------UpdateData===============================================================
function BattlegroundFu:UpdateData()
if glory:IsInBattlegrounds() then
RequestBattlefieldScoreData()
end
end
------End UpdateData===========================================================
------UpdateText===============================================================
function BattlegroundFu:UpdateText()
self:SetIcon(self.FACTION_ICON_PATH .. self.playerFaction)
if glory:IsInBattlegrounds() then
self:UpdateText_BattlefieldPlayerStatistics()
else
self:UpdateText_QueuedBattlefields()
end
end
----------UpdateText Component Methods=========================================
function BattlegroundFu:UpdateText_BattlefieldPlayerStatistics()
local red, green, white = crayon.COLOR_HEX_RED, crayon.COLOR_HEX_GREEN, crayon.COLOR_HEX_WHITE
if glory:GetStanding() then
self:SetText(format("#: |cff%s%s|r KB: |cff%s%s|r K: |cff%s%s|r D: |cff%s%s|r H: |cff%s%s|r", white, glory:GetStanding(), green, glory:GetKillingBlows(), green, glory:GetHonorableKills(), red, glory:GetDeaths(), white, glory:GetBonusHonor()))
end
end
function BattlegroundFu:UpdateText_QueuedBattlefields()
local status, mapName, progress, usingDefaultText, bgTimeQueued, bgEstimatedTime, timeColor
local queueText = self.loc.TEXT_NO_QUEUES
local numQueues = 0
for i = 1, MAX_BATTLEFIELD_QUEUES do
status, mapName = GetBattlefieldStatus(i)
if status == "queued" then
numQueues = numQueues + 1
if not self:IsHidingQueueText(mapName) then
bgTimeQueued = GetBattlefieldTimeWaited(i)/1000
bgEstimatedTime = GetBattlefieldEstimatedWaitTime(i)/1000
timeColor = crayon:GetThresholdHexColor(1-bgTimeQueued/bgEstimatedTime, -0.25, -0.1, 0.1, 0.5, 0.9)
if self:IsInvertQueueProgress() then
progress = format("|cff%s%s|r/%s", timeColor, abacus:FormatDurationFull(bgEstimatedTime - bgTimeQueued, nil, 1), abacus:FormatDurationFull(bgEstimatedTime, nil, 1))
else
progress = format("|cff%s%s|r/%s", timeColor, abacus:FormatDurationFull(bgTimeQueued, nil, 1), abacus:FormatDurationFull(bgEstimatedTime, nil, 1))
end
if usingDefaultText or queueText == self.loc.TEXT_NO_QUEUES then
queueText = glory:GetBGAcronym(mapName) .. ": " .. progress
else
queueText = queueText .. " || " .. glory:GetBGAcronym(mapName) .. ": " .. progress
end
usingDefaultText = nil
end
if usingDefaultText or queueText == self.loc.TEXT_NO_QUEUES then
queueText = format("%d %s", numQueues, self.loc.TEXT_QUEUES)
usingDefaultText = true
end
end
end
self:SetText(queueText)
end
----------End UpdateText Component Methods=====================================
------End UpdateText===========================================================
------UpdateTooltip============================================================
function BattlegroundFu:UpdateTooltip()
if glory:IsInBattlegrounds() and self:IsClickShowsScoreboard() then
tablet:SetHint(self.loc.TEXT_HINT_CLICKSHOWSSCOREBOARD)
else
tablet:SetHint(self.loc.TEXT_HINT_NORMAL)
end
local status, mapName, instanceID
if glory:IsInBattlegrounds() then
tablet:AddCategory():AddLine('text', glory:GetActiveBattlefieldUniqueID(), 'textR', 1, 'textG', 1, 'textB', 1)
if self:IsShowingTeamSizes() then
self:UpdateTooltip_BattlefieldMatchInfo(self.loc.TEXT_PLAYERS, glory:GetNumAlliancePlayers(), glory:GetNumHordePlayers())
end
if self:IsShowingTeamScores() and GetWorldStateUIInfo(1) then
self:UpdateTooltip_BattlefieldMatchInfo(self.loc.TEXT_SCORE, glory:GetAllianceScoreString(), glory:GetHordeScoreString())
end
if self:IsShowingNumBases() and GetWorldStateUIInfo(1) and string.find(GetWorldStateUIInfo(1), self.loc.TEXT_BASES) then
self:UpdateTooltip_BattlefieldMatchInfo(self.loc.TEXT_BASES, glory:GetNumAllianceBases(), glory:GetNumHordeBases())
end
if self:IsShowingResourceTTV() and GetWorldStateUIInfo(1) and string.find(GetWorldStateUIInfo(1), self.loc.TEXT_RESOURCES) then
self:UpdateTooltip_BattlefieldMatchInfo(self.loc.TEXT_TTV, abacus:FormatDurationCondensed(glory:GetAllianceTTV()), abacus:FormatDurationCondensed(glory:GetHordeTTV()))
end
if self:IsShowingBattlefieldPlayerStatistics() then
self:UpdateTooltip_BattlefieldPlayerStatistics()
end
if GetNumMapLandmarks() > 0 and self:IsShowingBattlefieldObjectiveStatus() then
self:UpdateTooltip_BattlefieldObjectiveTimers()
end
if self:IsShowingCTFFlagCarriers() and glory:GetActiveBattlefieldZone() == babbleZone:GetLocalized("WARSONG_GULCH") then
self:UpdateTooltip_CTFFlagCarriers()
end
end
if self:IsShowingBattlefieldQueues() then
for i=1, MAX_BATTLEFIELD_QUEUES do
status = GetBattlefieldStatus(i)
if status == "queued" or status == "confirm" then
self:UpdateTooltip_BGQueues()
break
end
end
end
end
----------UpdateTooltip ComponeMethods=========================================
function BattlegroundFu:UpdateTooltip_BattlefieldMatchInfo(label, textA, textH)
local aR, aG, aB = glory:GetFactionColor(FACTION_ALLIANCE)
local hR, hG, hB = glory:GetFactionColor(FACTION_HORDE)
local cat = tablet:AddCategory(
'hideBlankLine', true,
-- 'text', glory:GetActiveBattlefieldUniqueID(),
'columns', 3,
'child_textR', aR,
'child_textG', aG,
'child_textB', aB,
'child_text2R', 1,
'child_text2G', 1,
'child_text2B', 1,
'child_text3R', hR,
'child_text3G', hG,
'child_text3B', hB
)
cat:AddLine(
'text', textA,
'text2', label,
'text3', textH
)
end
function BattlegroundFu:UpdateTooltip_BattlefieldPlayerStatistics()
local cat = tablet:AddCategory(
'columns', 2,
'text', self.loc.TEXT_PLAYER_STATS,
'child_textR', 1,
'child_textG', 0.843,
'child_textB', 0
)
cat:AddLine(
'text', self.loc.TEXT_STANDING,
'text2', glory:GetStanding(),
'text2R', 1,
'text2G', 1,
'text2B', 1
)
cat:AddLine(
'text', self.loc.TEXT_KILLING_BLOWS,
'text2', glory:GetKillingBlows(),
'text2R', 0,
'text2G', 1,
'text2B', 0
)
cat:AddLine(
'text', self.loc.TEXT_KILLS,
'text2', glory:GetHonorableKills(),
'text2R', 0,
'text2G', 1,
'text2B', 0
)
cat:AddLine(
'text', self.loc.TEXT_DEATHS,
'text2', glory:GetDeaths(),
'text2R', 1,
'text2G', 0,
'text2B', 0
)
cat:AddLine(
'text', self.loc.TEXT_BONUS_HONOR,
'text2', glory:GetBonusHonor(),
'text2R', 1,
'text2G', 1,
'text2B', 1
)
end
function BattlegroundFu:UpdateTooltip_BattlefieldObjectiveTimers()
local node, status, lR, lG, lB, rR, rG, rB
if glory.battlefieldObjectiveStatus and next(glory.battlefieldObjectiveStatus) then
local cat = tablet:AddCategory(
'columns', 2,
'text', self.loc.TEXT_BASE,
'text2', self.loc.TEXT_STATUS
)
for _, poi in glory:IterateSortedObjectiveNodes() do
lR, lG, lB = glory:GetFactionColor(glory:GetDefender(poi))
rR, rG, rB = glory:GetFactionColor(glory:GetDefender(poi))
node = glory:GetName(poi)
if glory:IsInConflict(poi) then
rR, rG, rB = glory:GetFactionColor(glory:GetAttacker(poi))
if glory:GetTimeAttacked(poi) then
status = abacus:FormatDurationCondensed(glory:GetTimeToCapture(poi))
else --when joining a battlefield where the node is already under attack
status = self.loc.TEXT_BGOBJECTIVE_INCONFLICT
end
elseif glory:IsDestroyed(poi) then
status = self.loc.TEXT_BGOBJECTIVE_DESTROYED
else
status = glory:GetDefender(poi)
end
if self:IsShowingUncontestedObjectives() or glory:IsInConflict(poi) then
cat:AddLine(
'text', node,
'text2', status,
'textR', lR,
'textG', lG,
'textB', lB,
'text2R', rR,
'text2G', rG,
'text2B', rB
)
end
end
end
end
function BattlegroundFu:UpdateTooltip_CTFFlagCarriers()
local aR, aG, aB = glory:GetFactionColor(FACTION_ALLIANCE)
local hR, hG, hB = glory:GetFactionColor(FACTION_HORDE)
local rR, rG, rB, carrier
local cat = tablet:AddCategory(
'columns', 2,
'text', self.loc.TEXT_FLAG,
'text2', self.loc.TEXT_CARRIER
)
carrier = glory:GetHordeFlagCarrier()
if carrier then
rR, rG, rB = glory:GetFactionColor(FACTION_HORDE)
else
rR, rG, rB = glory:GetFactionColor(FACTION_ALLIANCE)
end
cat:AddLine(
'text', FACTION_ALLIANCE,
'text2', carrier or self.loc.TEXT_NA,
'textR', aR,
'textG', aG,
'textB', aB,
'text2R', rR,
'text2G', rG,
'text2B', rB,
'func', function()
glory:TargetHordeFlagCarrier()
end
)
carrier = glory:GetAllianceFlagCarrier()
if carrier then
rR, rG, rB = glory:GetFactionColor(FACTION_ALLIANCE)
else
rR, rG, rB = glory:GetFactionColor(FACTION_HORDE)
end
cat:AddLine(
'text', FACTION_HORDE,
'text2', carrier or self.loc.TEXT_NA,
'textR', hR,
'textG', hG,
'textB', hB,
'text2R', rR,
'text2G', rG,
'text2B', rB,
'func', function()
glory:TargetAllianceFlagCarrier()
end
)
end
function BattlegroundFu:UpdateTooltip_BGQueues()
local status, mapName, progress, bgTimeQueued, bgEstimatedTime, timeR, timeG, timeB, bgPortExpiration
local cat = tablet:AddCategory(
'columns', 2,
'text', self.loc.TEXT_BGQUEUES,
'text2', self:IsInvertQueueProgress() and self.loc.TEXT_INVERT_QUEUE_PROGRESS or self.loc.TEXT_QUEUE_PROGRESS,
'child_textG', 0.843,
'child_teøt1B', 0
)
for i = 1, MAX_BATTLEFIELD_QUEUES do
local i = i
status, mapName = GetBattlefieldStatus(i)
if self.numActiveBattlefields[i] then
mapName = format("(%d) %s", self.numActiveBattlefields[i], mapName)
end
if status == "queued" then
bgTimeQueued = GetBattlefieldTimeWaited(i)/1000
bgEstimatedTime = GetBattlefieldEstimatedWaitTime(i)/1000
timeR, timeG, timeB = crayon:GetThresholdColor(1-bgTimeQueued/bgEstimatedTime, -0.25, -0.1, 0.1, 0.5, 0.9)
if self:IsInvertQueueProgress() then
progress = abacus:FormatDurationCondensed(bgEstimatedTime - bgTimeQueued) .. "|r|cffffd700/" .. abacus:FormatDurationCondensed(bgEstimatedTime)
else
progress = abacus:FormatDurationCondensed(bgTimeQueued) .. "|r|cffffd700/" .. abacus:FormatDurationCondensed(bgEstimatedTime)
end
cat:AddLine(
'text', mapName,
'text2', progress,
'text2R', timeR,
'text2G', timeG,
'text2B', timeB,
'func', function ()
if not BattlefieldFrame:IsVisible() or self.ttOpenBattlefieldFrame ~= i then
ShowBattlefieldList(i)
self.ttOpenBattlefieldFrame = i
else
HideUIPanel(BattlefieldFrame)
end
end
)
end
if status == "confirm" then
bgPortExpiration = GetBattlefieldPortExpiration(i)/1000
timeR, timeG, timeB = crayon:GetThresholdColor(bgPortExpiration/120)
progress = self.loc.TEXT_CONFIRM .. ": " .. abacus:FormatDurationCondensed(bgPortExpiration)
cat:AddLine(
'text', mapName,
'text2', progress,
'text2R', timeR,
'text2G', timeG,
'text2B', timeB,
'func', function ()
if not BattlefieldFrame:IsVisible() or self.ttOpenBattlefieldFrame ~= i then
ShowBattlefieldList(i)
self.ttOpenBattlefieldFrame = i
else
HideUIPanel(BattlefieldFrame)
end
end
)
end
end
end
----------End UpdateTooltip Component Methods==================================
------End UpdateTooltip========================================================
--End FuBar Standard Methods===================================================
--Game Events==================================================================
function BattlegroundFu:OnUpdateBattlefieldStatus()
if self:IsHidingMinimapButton() and MiniMapBattlefieldFrame:IsVisible() then
MiniMapBattlefieldFrame:Hide()
end
self:UpdateDisplay()
if BattlefieldFrame:GetAlpha() ~= 1 and BattlefieldFrame:GetAlpha() ~= 0 then
bfAlpha = BattlefieldFrame:GetAlpha()
end
-- metro:Start("BatFu_numActiveBattlefields")
end
--[[ function BattlegroundFu:UpdateNumActiveBattlefields()
if BattlefieldFrame:IsVisible() and BattlefieldFrame:GetAlpha() > 0 then return end
bfNum = bfNum or 1
if bfNum <= MAX_BATTLEFIELD_QUEUES + 1 then
if bfNum ~= 1 then
self.numActiveBattlefields[bfNum - 1] = GetNumBattlefields()
end
BattlefieldFrame:SetAlpha(0)
ShowBattlefieldList(bfNum)
bfNum = bfNum + 1
else
HideUIPanel(BattlefieldFrame)
BattlefieldFrame:SetAlpha(bfAlpha or 1)
metro:Stop("BatFu_numActiveBattlefields")
bfNum = 1
end
end]]--
--End Game Events==============================================================
BattlegroundFu:RegisterForLoad()