ESO Lua File v100010

ingame/group/gamepad/zo_grouprolemenu_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
--------------------------------------------
-- GroupRoleMenuManager Gamepad
--------------------------------------------
local ZO_GroupRoleMenuManager_Gamepad = ZO_Gamepad_ParametricList_Screen:Subclass()
function ZO_GroupRoleMenuManager_Gamepad:New(...)
    return ZO_Gamepad_ParametricList_Screen.New(self, ...)
end
function ZO_GroupRoleMenuManager_Gamepad:Initialize(control)
    self.tip = control:GetNamedChild("Tip")
    self.roles = {}
    self.rolesChangedCallback = nil
    --Initialize scene
    GAMEPAD_GROUP_ROLE_OPTIONS_SCENE = ZO_Scene:New("gamepad_group_role_options", SCENE_MANAGER)
    local ACTIVE_ON_SHOW = true
    ZO_Gamepad_ParametricList_Screen.Initialize(self, control, ZO_GAMEPAD_HEADER_TABBAR_DONT_CREATE, ACTIVE_ON_SHOW, GAMEPAD_GROUP_ROLE_OPTIONS_SCENE)
    CALLBACK_MANAGER:RegisterCallback("OnGroupStatusChange", function() self:RefreshHeader() end)
end
function ZO_GroupRoleMenuManager_Gamepad:InitializeKeybindStripDescriptors()
    self.keybindStripDescriptor = {}
    ZO_Gamepad_AddForwardNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON, function() self:SelectOption() end)
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON)
    ZO_Gamepad_AddListTriggerKeybindDescriptors(self.keybindStripDescriptor, self.optionsList)
end
function ZO_GroupRoleMenuManager_Gamepad:OnShowing()
    self:RefreshHeader()
end
function ZO_GroupRoleMenuManager_Gamepad:OnHidden()
end
function ZO_GroupRoleMenuManager_Gamepad:RefreshHeader()
    ZO_GamepadGenericHeader_RefreshData(self.header, GAMEPAD_GROUP_HEADER_DATA.headerData)
end
local function RoleEntryTemplateSetup(control, entry, selected, selectedDuringRebuild, enabled, activated)
    ZO_SharedGamepadEntry_OnSetup(control, entry, selected, selectedDuringRebuild, enabled, activated)
    control:GetNamedChild("SelectedIcon"):SetHidden(not entry.currentValue)
end
function ZO_GroupRoleMenuManager_Gamepad:SetupList(list)
    self.optionsList = list
end
function ZO_GroupRoleMenuManager_Gamepad:OnSelectionChanged(list, selectedData)
    self.tip:GetNamedChild("Title"):SetText(selectedData.name)
    self.tip:GetNamedChild("Text"):SetText(selectedData.tooltip)
end
function ZO_GroupRoleMenuManager_Gamepad:SelectOption()
    local selectedOptionData = self.optionsList:GetSelectedData()
    
    if selectedOptionData then
        local role = selectedOptionData.role
        if self.rolesChangedCallback then
            local newRoleValue = not self.roles[role]
            if self.rolesChangedCallback(role, newRoleValue) ~= false then
                self.roles[role] = newRoleValue
                self:UpdateOptionMenu()
                PlaySound(SOUNDS.DEFAULT_CLICK)
            end
        end
    end
end
function ZO_GroupRoleMenuManager_Gamepad:SetupForShow(isDPS, isHeal, isTank, callback)
    local roles = self.roles
    roles[LFG_ROLE_DPS] = isDPS
    roles[LFG_ROLE_HEAL] = isHeal
    roles[LFG_ROLE_TANK] = isTank
end
function ZO_GroupRoleMenuManager_Gamepad:GetNumberSelectedRoles()
    local roles = self.roles
    local count = 0
    for roleType, isSelected in pairs(roles) do
        if isSelected then
            count = count + 1
        end
    end
    return count
end
local ROLE_TO_SORT_VALUE = {
    [LFG_ROLE_TANK] = 1,
    [LFG_ROLE_HEAL] = 2,
    [LFG_ROLE_DPS] = 3,
}
local function RolesSort(entry1, entry2)
    local role1 = entry1.role
    local role2 = entry2.role
    return ROLE_TO_SORT_VALUE[role1] < ROLE_TO_SORT_VALUE[role2]
end
function ZO_GroupRoleMenuManager_Gamepad:UpdateOptionMenu()
    self.optionsList:Clear()
    for key, optionInfo in pairs(GAMEPAD_LFG_OPTION_INFO) do
        local newEntry = ZO_GamepadEntryData:New(optionInfo.optionName, optionInfo.icon)
        newEntry.role = optionInfo.role
        newEntry.tooltip = optionInfo.tooltip
        newEntry.currentValue = self.roles[key]
        newEntry:SetIconTintOnSelection(true)
        self.optionsList:AddEntry("ZO_GroupRoleMenuEntry_Gamepad", newEntry)
    end
    table.sort(self.optionsList.dataList, RolesSort)
    self.optionsList:Commit()
end
    GAMEPAD_GROUP_ROLE_MENU = ZO_GroupRoleMenuManager_Gamepad:New(control)
end