ESO Lua File v100013

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
--------------------------------------------
-- 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)
        VOICE_CHAT_GAMEPAD:SetupOptions({speakerData = speakerData, channel = selectedData.channel})
    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 = {}
        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