Back to Home

ESO Lua File v101050

ingame/promotionalevents/gamepad/promotionaleventslist_gamepad.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
ZO_PromotionalEventsList_Gamepad = ZO_Gamepad_ParametricList_Screen:Subclass()
function ZO_PromotionalEventsList_Gamepad:Initialize(control)
    local ACTIVATE_ON_SHOW = true
    local scene = ZO_Scene:New("PromotionalEventsListGamepad", SCENE_MANAGER)
    ZO_Gamepad_ParametricList_Screen.Initialize(self, control, ZO_DO_NOT_CREATE_TAB_BAR, ACTIVATE_ON_SHOW, scene)
    self.fragment = ZO_FadeSceneFragment:New(self.control)
end
function ZO_PromotionalEventsList_Gamepad:OnDeferredInitialize()
    self.headerData =
    {
        titleText = GetString(SI_ACTIVITY_FINDER_CATEGORY_PROMOTIONAL_EVENTS),
    }
    PROMOTIONAL_EVENTS_GAMEPAD:PerformDeferredInitialize()
end
function ZO_PromotionalEventsList_Gamepad:InitializeKeybindStripDescriptors()
    self.keybindStripDescriptor =
    {
        alignment = KEYBIND_STRIP_ALIGN_LEFT,
        -- Select
        {
            name = GetString(SI_GAMEPAD_SELECT_OPTION),
            keybind = "UI_SHORTCUT_PRIMARY",
            callback = function()
                self:DeactivateCurrentList()
                PROMOTIONAL_EVENTS_GAMEPAD:Activate()
            end,
        },
    }
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON)
end
function ZO_PromotionalEventsList_Gamepad:OnShowing()
    ZO_Gamepad_ParametricList_Screen.OnShowing(self)
    if self.queuedCampaignData then
        self:SelectCampaign(self.queuedCampaignData)
        self.queuedCampaignData = nil
    end
end
function ZO_PromotionalEventsList_Gamepad:SetupList(list)
    ZO_Gamepad_ParametricList_Screen.SetupList(self, list)
    list:SetDataTemplateSetupFunction("ZO_GamepadMenuEntryTemplate", function(control, data, selected, reselectingDuringRebuild, enabled, active)
        if data:AreAllRewardsClaimed() then
            local DEFAULT = nil
            data:SetNameColors(DEFAULT, DEFAULT)
        else
            data:SetNameColors(ZO_PROMOTIONAL_EVENT_SELECTED_COLOR, ZO_PROMOTIONAL_EVENT_UNSELECTED_COLOR)
        end
        data:ClearIcons()
        if not data.isReturningPlayerRewardsEntry and (not data:HasBeenSeen() or data:IsAnyRewardClaimable()) then
            data:AddIcon(ZO_GAMEPAD_NEW_ICON_64)
        end
        ZO_SharedGamepadEntry_OnSetup(control, data, selected, reselectingDuringRebuild, enabled, active)
    end)
    self.equalityFunction = function(leftData, rightData)
        local leftCampaignData = leftData.dataSource or leftData
        local rightCampaignData = rightData.dataSource or rightData
        return leftCampaignData:MatchesKeyWithCampaign(rightCampaignData)
    end
    list:SetEqualityFunction("ZO_GamepadMenuEntryTemplate", self.equalityFunction)
    self.list = list
end
function ZO_PromotionalEventsList_Gamepad:RegisterForEvents()
    local function RefreshVisible()
        if self:IsShowing() then
            self.list:RefreshVisible()
            self.list:Commit()
        end
    end
    PROMOTIONAL_EVENT_MANAGER:RegisterCallback("RewardsClaimed", RefreshVisible)
    PROMOTIONAL_EVENT_MANAGER:RegisterCallback("CampaignSeenStateChanged", RefreshVisible)
    local function Update()
        self:Update()
    end
    PROMOTIONAL_EVENT_MANAGER:RegisterCallback("CampaignsUpdated", Update)
end
function ZO_PromotionalEventsList_Gamepad:RefreshList()
    self.list:Clear()
    local shouldShowRewardsSummary = PROMOTIONAL_EVENT_PERSONAL_CAMPAIGN_MANAGER:IsReturningPlayer() and (PROMOTIONAL_EVENT_MANAGER:AreAnyReturningPlayerCampaignsIncomplete() or RETURNING_PLAYER_MANAGER:AreAnyDailyLoginRewardsUnclaimed())
    if shouldShowRewardsSummary then
        local campaignData = ZO_PromotionalEventCampaignData:New()
        campaignData.isReturningPlayerRewardsEntry = true
        local entryData = ZO_GamepadEntryData:New(GetString(SI_PROMOTIONAL_EVENT_RETURNING_PLAYER_REWARD_ENTRY_TITLE))
        entryData:SetDataSource(campaignData)
        self.list:AddEntry("ZO_GamepadMenuEntryTemplate", entryData)
    end
    local numActiveCampaigns = PROMOTIONAL_EVENT_MANAGER:GetNumActiveCampaigns()
    for i = 1, numActiveCampaigns do
        local campaignData = PROMOTIONAL_EVENT_MANAGER:GetCampaignDataByIndex(i)
        if campaignData:ShouldCampaignBeVisible() then
            local entryData = ZO_GamepadEntryData:New(campaignData:GetDisplayName())
            entryData:SetDataSource(campaignData)
            self.list:AddEntry("ZO_GamepadMenuEntryTemplate", entryData)
        end
    end
    self.list:SetDefaultSelectedIndex(shouldShowRewardsSummary and 2 or 1)
    self.list:Commit()
end
function ZO_PromotionalEventsList_Gamepad:OnTargetChanged(...)
    ZO_Gamepad_ParametricList_Screen.OnTargetChanged(self, ...)
    PROMOTIONAL_EVENTS_GAMEPAD:RefreshDisplay()
end
function ZO_PromotionalEventsList_Gamepad:PerformUpdate()
    self.dirty = false
    if PROMOTIONAL_EVENT_MANAGER:HasActiveCampaign() and not IsPromotionalEventSystemLocked() then
        self:RefreshList()
    else
        SCENE_MANAGER:HideCurrentScene()
    end
end
function ZO_PromotionalEventsList_Gamepad:SelectCampaign(campaignData)
    if self:IsShowing() then
        self.list:SetSelectedDataByEval(function(data) return self.equalityFunction(data, campaignData) end)
    else
        self.queuedCampaignData = campaignData
    end
end
function ZO_PromotionalEventsList_Gamepad:GetScene()
    return self.scene
end
function ZO_PromotionalEventsList_Gamepad:GetFragment()
    return self.fragment
end
function ZO_PromotionalEventsList_Gamepad.OnControlInitialized(control)
    PROMOTIONAL_EVENTS_LIST_GAMEPAD = ZO_PromotionalEventsList_Gamepad:New(control)
end