Back to Home

ESO Lua File v101041

ingame/groupfinder/groupfinder_applicationlist_manager.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
GROUP_FINDER_APPLICATIONS_LIST_ENTRY_SORT_KEYS =
{
    --Sort keys correspond to functions from ZO_GroupFinderPendingApplicationData
    ["GetDisplayName"] = { },
    ["GetCharacterName"] = { },
    ["GetClassId"] = { tiebreaker = "GetDisplayName" },
    ["GetChampionPoints"] = { tiebreaker = "GetDisplayName", isNumeric = true},
    ["GetLevel"] = { tiebreaker = "GetChampionPoints", isNumeric = true },
    ["GetRole"] = { tiebreaker = "GetDisplayName" },
    ["GetEndTimeSeconds"] = { tiebreaker = "GetDisplayName", isNumeric = true },
}
ZO_GroupFinder_ApplicationsList_Manager = ZO_InitializingCallbackObject:Subclass()
function ZO_GroupFinder_ApplicationsList_Manager:Initialize()
    self.applicationsData = {}
end
function ZO_GroupFinder_ApplicationsList_Manager:RegisterForEvents()
    --TODO GroupFinder: Verify which additional events we need to listen for
    EVENT_MANAGER:RegisterForEvent("GroupFinder_ApplicationsList_Manager", EVENT_GROUP_FINDER_CREATE_GROUP_LISTING_RESULT, function() self:RefreshApplicationsData() end)
    EVENT_MANAGER:RegisterForEvent("GroupFinder_ApplicationsList_Manager", EVENT_GROUP_FINDER_REMOVE_GROUP_LISTING_RESULT, function() self:RefreshApplicationsData() end)
    EVENT_MANAGER:RegisterForEvent("GroupFinder_ApplicationsList_Manager", EVENT_GROUP_FINDER_UPDATE_APPLICATIONS, function() self:RefreshApplicationsData() end)
    EVENT_MANAGER:RegisterForEvent("GroupFinder_ApplicationsList_Manager", EVENT_PLAYER_ACTIVATED, function() self:RefreshApplicationsData() end)
end
do
    local function GetNextApplicationCharacterIdIter(_, lastApplicationCharacterId)
        return GetNextGroupListingApplicationCharacterId(lastApplicationCharacterId)
    end
    function ZO_GroupFinder_ApplicationsList_Manager:RefreshApplicationsData()
        ZO_ClearNumericallyIndexedTable(self.applicationsData)
        --If we haven't created a group listing we shouldn't have any application data
        if HasGroupListingForUserType(GROUP_FINDER_GROUP_LISTING_USER_TYPE_CREATED_GROUP_LISTING) then
            for characterId in GetNextApplicationCharacterIdIter do
                table.insert(self.applicationsData, ZO_GroupFinderPendingApplicationData:New(characterId))
            end
        end
        self:FireCallbacks("ApplicationsListUpdated")
    end
end
function ZO_GroupFinder_ApplicationsList_Manager:GetApplicationsData(optionalSortFunction)
    if optionalSortFunction then
        local sortedApplicationsData = ZO_ShallowTableCopy(self.applicationsData)
        table.sort(sortedApplicationsData, optionalSortFunction)
        return sortedApplicationsData
    else
        return self.applicationsData
    end
end
GROUP_FINDER_APPLICATIONS_LIST_MANAGER = ZO_GroupFinder_ApplicationsList_Manager:New()