diff --git a/esoui/ingame/campaign/gamepad/campaignbrowser_gamepad.lua b/esoui/ingame/campaign/gamepad/campaignbrowser_gamepad.lua
index 0188d33..0559e4b 100755
--- a/esoui/ingame/campaign/gamepad/campaignbrowser_gamepad.lua
+++ b/esoui/ingame/campaign/gamepad/campaignbrowser_gamepad.lua
@@ -46,6 +46,7 @@ function ZO_CampaignBrowser_Gamepad:Initialize(control)
ZO_Gamepad_ParametricList_Screen.Initialize(self, control, ZO_GAMEPAD_HEADER_TABBAR_DONT_CREATE, ACTIVATE_LIST_ON_SHOW)
self.currentMode = CAMPAIGN_BROWSER_MODES.CAMPAIGNS
+ self.campaignBrowser = ZO_CampaignBrowser_Shared:New()
GAMEPAD_AVA_ROOT_SCENE = ZO_Scene:New(GAMEPAD_GUILD_HUB_SCENE_NAME, SCENE_MANAGER)
GAMEPAD_AVA_ROOT_SCENE:RegisterCallback("StateChange", function(oldState, newState)
@@ -170,18 +171,31 @@ local function GetPopulationIcon(population)
return POPULATION_ICONS[population]
end
-local function SetupPopulationIcon(statsControl, nameString, population)
- local allianceControl = statsControl:GetNamedChild(nameString)
- allianceControl.populationControl:SetTexture(GetPopulationIcon(population))
+local function SetupPopulationIcon(control, data)
+ control.populationControl:SetTexture(GetPopulationIcon(data.population))
+
+ local isFull = data.population == CAMPAIGN_POP_FULL
+ control.lockedIconControl:SetHidden(not isFull)
+ control.fullTextControl:SetHidden(not isFull)
- local isFull = population == CAMPAIGN_POP_FULL
- allianceControl.lockedIconControl:SetHidden(not isFull)
- allianceControl.fullTextControl:SetHidden(not isFull)
+ local queueWaitSeconds = GetSelectionCampaignQueueWaitTime(data.campaignId)
+ if data.alliance == GetUnitAlliance("player") and queueWaitSeconds > 0 then
+ --We don't want to show an estimate for seconds
+ if queueWaitSeconds < 60 then
+ queueWaitSeconds = 60
+ end
+ queueWaitMs = queueWaitSeconds * 1000
+ local textEstimatedTime = ZO_GetSimplifiedTimeEstimateText(queueWaitMs, TIME_FORMAT_STYLE_SHOW_LARGEST_UNIT, nil, ZO_TIME_ESTIMATE_STYLE.ARITHMETIC)
+ control.estimatedWaitValueControl:SetText(textEstimatedTime)
+ control.estimatedWaitControl:SetHidden(false)
+ else
+ control.estimatedWaitControl:SetHidden(true)
+ end
if(isFull) then
- allianceControl.factionControl:SetAlpha(0.5)
+ control.factionControl:SetAlpha(0.5)
else
- allianceControl.factionControl:SetAlpha(1.0)
+ control.factionControl:SetAlpha(1.0)
end
end
@@ -211,14 +225,15 @@ end
function ZO_CampaignBrowser_Gamepad:RefreshCampaignInfoContent()
local selectedData = self.campaignList:GetTargetData()
- if (selectedData) then
+ if selectedData then
self:UpdateQueueMessages(self.campaignQueueMessage, self.campaignQueueMessageIcon, self.groupCampaignQueueMessage, self.groupCampaignQueueMessageIcon, selectedData)
self.campaignInfoRules:SetText(GetCampaignRulesetDescription(selectedData.rulesetId))
- SetupPopulationIcon(self.campaignInfoStats, "AldmeriDominion", selectedData.alliancePopulation1)
- SetupPopulationIcon(self.campaignInfoStats, "EbonheartPact", selectedData.alliancePopulation2)
- SetupPopulationIcon(self.campaignInfoStats, "DaggerfallCovenant", selectedData.alliancePopulation3)
+ local campaignId = selectedData.id
+ SetupPopulationIcon(self.campaignInfoStats:GetNamedChild("AldmeriDominion"), {population = selectedData.alliancePopulation1, campaignId = campaignId, alliance = ALLIANCE_ALDMERI_DOMINION})
+ SetupPopulationIcon(self.campaignInfoStats:GetNamedChild("EbonheartPact"), {population = selectedData.alliancePopulation2, campaignId = campaignId, alliance = ALLIANCE_EBONHEART_PACT})
+ SetupPopulationIcon(self.campaignInfoStats:GetNamedChild("DaggerfallCovenant"), {population = selectedData.alliancePopulation3, campaignId = campaignId, alliance = ALLIANCE_DAGGERFALL_COVENANT})
end
end
@@ -242,7 +257,6 @@ function ZO_CampaignBrowser_Gamepad:PerformDeferredInitialization()
self.groupCampaignQueueMessage = campaignRules:GetNamedChild("GroupQueueMessage")
self.groupCampaignQueueMessageIcon = campaignRules:GetNamedChild("GroupQueueMessageIcon")
- self.campaignBrowser = ZO_CampaignBrowser_Shared:New()
self.dataRegistration = ZO_CampaignDataRegistration:New("CampaignSelectorData", function() return GAMEPAD_AVA_ROOT_SCENE:IsShowing() end)
ZO_CampaignDialogGamepad_Initialize(self)
@@ -452,11 +466,8 @@ function ZO_CampaignBrowser_Gamepad:InitializeKeybindStripDescriptors()
if(selectedData.entryType == ENTRY_TYPES.ENTER_CAMPAIGN and self:CanQueue(selectedData)) then
self:DoQueue(selectedData)
elseif(selectedData.entryType == ENTRY_TYPES.TRAVEL_TO_CAMPAIGN and self:CanEnter(selectedData)) then
- local data = {
- campaignId = selectedData.id,
- isGroup = selectedData.isGroup or selectedData.queuedGroupState == CAMPAIGN_QUEUE_REQUEST_STATE_CONFIRMING,
- }
- ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_QUEUE_READY_DIALOG, data, { mainTextParams = { selectedData.name } })
+ local isGroup = selectedData.isGroup or selectedData.queuedGroupState == CAMPAIGN_QUEUE_REQUEST_STATE_CONFIRMING
+ self.campaignBrowser:ShowCampaignQueueReadyDialog(selectedData.id, isGroup, selectedData.name)
elseif(selectedData.entryType == ENTRY_TYPES.LEAVE_QUEUE and self:IsQueued(selectedData)) then
self:DoLeave(selectedData)
elseif(selectedData.entryType == ENTRY_TYPES.SET_HOME) then
@@ -563,8 +574,7 @@ end
function ZO_CampaignBrowser_Gamepad:RegisterEvents()
self.control:SetHandler("OnUpdate", function(control, seconds) self:OnUpdate(control, seconds) end)
- self.updateIntervalLastUpdate = 0
- self.updateIntervalSecs = 1
+ self.nextUpdateTimeSeconds = 0
EVENT_MANAGER:RegisterForEvent("ZO_CampaignBrowser_Gamepad", EVENT_CAMPAIGN_SELECTION_DATA_CHANGED, function() self:Update() end)
EVENT_MANAGER:RegisterForEvent("ZO_CampaignBrowser_Gamepad", EVENT_ASSIGNED_CAMPAIGN_CHANGED, function() self:Update() end)
@@ -589,8 +599,8 @@ end
function ZO_CampaignBrowser_Gamepad:OnUpdate(control, seconds)
- if(seconds > self.updateIntervalLastUpdate + self.updateIntervalSecs) then
- self.updateIntervalLastUpdate = seconds
+ if(seconds > self.nextUpdateTimeSeconds) then
+ self.nextUpdateTimeSeconds = zo_floor(seconds + 1) -- Update on the second boundary
local listUpdateRequired = false
for i = 1, #self.assignedCampaignData do
@@ -676,21 +686,16 @@ function ZO_CampaignBrowser_Gamepad:DoLeave(data)
end
end
+function ZO_CampaignBrowser_Gamepad:GetCampaignBrowser()
+ return self.campaignBrowser
+end
+
function ZO_CampaignBrowser_Gamepad:CanQueue(data)
return self.campaignBrowser:CanQueue(data)
end
function ZO_CampaignBrowser_Gamepad:DoQueue(data)
- if data then
- local canQueueIndividual, canQueueGroup = self:CanQueue(data)
- if(canQueueIndividual and canQueueGroup) then
- ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_QUEUE_DIALOG, data, { mainTextParams = { data.name } })
- elseif(canQueueIndividual) then
- QueueForCampaign(data.id, CAMPAIGN_QUEUE_INDIVIDUAL)
- else
- QueueForCampaign(data.id, CAMPAIGN_QUEUE_GROUP)
- end
- end
+ self.campaignBrowser:DoQueue(data.dataSource)
end
local DEFAULT_GAMEPAD_CAMPAIGN_ITEM_SORT =
@@ -926,6 +931,8 @@ function ZO_AvAFactionPopulation_Gamepad_OnInitialize(control, alliance)
control.allianceNameControl = control:GetNamedChild("AllianceName")
control.lockedIconControl = control:GetNamedChild("LockedIcon")
control.fullTextControl = control:GetNamedChild("FullText")
+ control.estimatedWaitControl = control:GetNamedChild("EstimatedWait")
+ control.estimatedWaitValueControl = control.estimatedWaitControl:GetNamedChild("Value")
local r,g,b,a = GetInterfaceColor(INTERFACE_COLOR_TYPE_ALLIANCE, alliance)
control.populationControl:SetColor(r,g,b,a)