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()