ESO Lua File v100012

ingame/voicechat/console/zo_voicechatparticipantoptions_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
--------------------------------------------
-- VoiceChat Participant Options
--------------------------------------------
local ICON_MUTED_PLAYER = "EsoUI/Art/VOIP/Gamepad/gp_VOIP_muted.dds"
local function IsNameLocalPlayer(displayName)
    return displayName == GetDisplayName()
end
ZO_VoiceChatParticipantOptionsGamepad = ZO_Gamepad_ParametricList_Screen:Subclass()
function ZO_VoiceChatParticipantOptionsGamepad:New(...)
     local object = ZO_Object.New(self)
     object:Initialize(...)
     return object
end
function ZO_VoiceChatParticipantOptionsGamepad:Initialize(control)
    ZO_Gamepad_ParametricList_Screen.Initialize(self, control)
    self.control = control
    self.channel = nil
end
function ZO_VoiceChatParticipantOptionsGamepad:InitializeHeader()
    local headerData = {titleText = GetString(SI_GAMEPAD_VOICECHAT_PARTICIPANT_OPTIONS_TITLE)}
end
function ZO_VoiceChatParticipantOptionsGamepad:InitializeFragment(control)
    GAMEPAD_VOICECHAT_PARTICIPANT_OPTIONS_FRAGMENT = ZO_FadeSceneFragment:New(control)
    self.fragment = GAMEPAD_VOICECHAT_PARTICIPANT_OPTIONS_FRAGMENT
    self.fragment:RegisterCallback("StateChange", function(oldState, newState)
        ZO_Gamepad_ParametricList_Screen.OnStateChanged(self, oldState, newState)
    end)
end
function ZO_VoiceChatParticipantOptionsGamepad:InitializeEvents()
    VOICE_CHAT_MANAGER:RegisterCallback("MuteUpdate", function() self:Update() end)
end
function ZO_VoiceChatParticipantOptionsGamepad:SetChannel(channel)
    self.channel = channel
end
function ZO_VoiceChatParticipantOptionsGamepad:IsHidden()
    return self.control:IsControlHidden()
end
--ZO_Gamepad_ParametricList_Screen overrides
function ZO_VoiceChatParticipantOptionsGamepad:SetupList(list)
    self.list = list
end
function ZO_VoiceChatParticipantOptionsGamepad:OnSelectionChanged(list, selectedData, oldSelectedData)
    if selectedData then
        local speakerData = selectedData.speakerData
        local displayName = speakerData.displayName
        local channelName = selectedData.channelName
        local lastTimeSpoken = speakerData.lastTimeSpoken
        GAMEPAD_TOOLTIPS:ClearStatusLabel(GAMEPAD_LEFT_TOOLTIP)
        GAMEPAD_TOOLTIPS:LayoutVoiceChatParticipantHistory(GAMEPAD_LEFT_TOOLTIP, displayName, channelName, lastTimeSpoken)
    end
end
function ZO_VoiceChatParticipantOptionsGamepad:OnShowing()
    self:PerformUpdate()
end
do
    local function RequestDelayEnabled()
        return VOICE_CHAT_MANAGER:AreRequestsAllowed()
    end
    function ZO_VoiceChatParticipantOptionsGamepad:InitializeKeybindStripDescriptors()
        self.keybindStripDescriptor =
        {
            alignment = KEYBIND_STRIP_ALIGN_LEFT,
            {
                keybind = "UI_SHORTCUT_PRIMARY",
                name = GetString(SI_GAMEPAD_SELECT_OPTION),
                callback = 
                    function()
                        local data = self.list:GetTargetData()
                        VOICE_CHAT_GAMEPAD:SetupOptions({speakerData = data.speakerData, channel = data.channel})
                        VOICE_CHAT_GAMEPAD:ShowOptionsDialog()
                    end,
                visible =
                    function()
                        local entry = self.list:GetTargetData()
                        if not entry then
                            return false
                        end
    
                        return true
                    end,
            },
        }
        ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON)
    end
end
function ZO_VoiceChatParticipantOptionsGamepad:PerformUpdate()
    self.dirty = false
    self.list:Clear()
    local channel = self.channel
    if not channel then
        return
    end
    local participantDataList = VOICE_CHAT_MANAGER:GetParticipantDataList(channel)
    --Populate list
    for i = 1, #participantDataList do
        local speakerData = participantDataList[i]
        local displayName = speakerData.displayName
        if not IsNameLocalPlayer(displayName) then
            local newEntry = ZO_GamepadEntryData:New(ZO_FormatUserFacingDisplayName(displayName), speakerData.isMuted and ICON_MUTED_PLAYER)
            newEntry.speakerData = speakerData
            newEntry.channelName = channel.fullName or channel.name
            newEntry.channel = channel
            self.list:AddEntry("ZO_VoiceChatParticipantOptionsEntryGamepad", newEntry)
        end
    end
    
    self.list:Commit()
end