ESO Lua File v100011

ingame/contacts/gamepad/contacts_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
-----------------
--Contacts Manager
-----------------
local ZO_GamepadContactsManager = ZO_Object:Subclass()
function ZO_GamepadContactsManager:New(control)
    local manager = ZO_Object.New(self)
    manager:Initialize(control)
    return manager
end
function ZO_GamepadContactsManager:Initialize(control)
    self.control = control
    -- Setup the friends list screen
    local friendsList = control:GetNamedChild("Main"):GetNamedChild("FriendsContainer"):GetNamedChild("FriendsList")
    self.friendsList = ZO_GamepadFriendsListPanel:New(friendsList)
    -- Setup the ignore list screen
    local ignoreList = control:GetNamedChild("Main"):GetNamedChild("IgnoreContainer"):GetNamedChild("IgnoreList")
    self.ignoreList = ZO_GamepadIgnoreListPanel:New(ignoreList)
 
    -- Setup the screen header
    self.header = control:GetNamedChild("HeaderBar"):GetNamedChild("HeaderContainer"):GetNamedChild("Header")
    self.headerData = {
         tabBarEntries = {
              { text = GetString(SI_GAMEPAD_CONTACTS_FRIENDS_LIST_TITLE), callback = function() self:SwitchToFriendsList() end },
            { text = GetString(SI_GAMEPAD_CONTACTS_IGNORED_LIST_TITLE), callback = function() self:SwitchToIgnoreList() end}, 
         },
    }
    -- Setup the content header
    self.contentHeader = control:GetNamedChild("ContentHeaderBar"):GetNamedChild("HeaderContainer"):GetNamedChild("Header")
    ZO_GamepadGenericHeader_Initialize(self.contentHeader, false)
    self.contentHeaderData = {
         titleText = GetDisplayName(),
    }
    self.friendsList:SetHeader(self.contentHeader, self.contentHeaderData)
    self.ignoreList:SetHeader(self.contentHeader, self.contentHeaderData)
    -- Setup the footer
    self.footerData = {
        data1HeaderText = GetString(SI_GAMEPAD_CONTACTS_HEADER_FRIENDS_ONLINE),
    }
    GAMEPAD_FRIENDS_LIST_SCENE = ZO_Scene:New("gamepad_contacts_root", SCENE_MANAGER)
    GAMEPAD_FRIENDS_LIST_SCENE:RegisterCallback("StateChange",  function(oldState, newState)
                                                            if(newState == SCENE_SHOWING) then        
                                                                ZO_GamepadGenericHeader_Activate(self.header)
                                                                self:RefreshHeader()
                                                                self:RefreshFooter()
                                                                self:PerformDeferredInitialization()
                                                            elseif(newState == SCENE_HIDDEN) then 
                                                                ZO_GamepadGenericHeader_Deactivate(self.header)
                                                            end
                                                        end)
end
function ZO_GamepadContactsManager:PerformDeferredInitialization()
    if self.initialized then return end
    self.initialized = true
    self:UpdateOnline()
end
local function SwitchToFragment(self, scene, fragment)
    if fragment == self.currFragment then
        return 
    end
    if self.currFragment then
        scene:RemoveFragment(self.currFragment)
    end
    self.currFragment = fragment
    if self.currFragment then
        scene:AddFragment(fragment)
    end
end
function ZO_GamepadContactsManager:SwitchToFriendsList()
    SwitchToFragment(self, GAMEPAD_FRIENDS_LIST_SCENE, GAMEPAD_FRIENDS_LIST_FRIENDS_LIST_FRAGMENT)
end
function ZO_GamepadContactsManager:SwitchToIgnoreList()
    SwitchToFragment(self, GAMEPAD_FRIENDS_LIST_SCENE, GAMEPAD_FRIENDS_LIST_IGNORE_LIST_FRAGMENT)
end
function ZO_GamepadContactsManager:UpdateOnline()
    if not self.control:IsControlHidden() then
        self:RefreshFooter()
    end
end
function ZO_GamepadContactsManager:RefreshHeader()
     ZO_GamepadGenericHeader_Refresh(self.contentHeader, self.contentHeaderData)
end
function ZO_GamepadContactsManager:RefreshFooter()
    self.footerData.data1Text = zo_strformat(SI_GAMEPAD_CONTACTS_HEADER_FRIENDS_ONLINE_FORMAT, FRIENDS_LIST_MANAGER:GetNumOnline(), GetNumFriends())
    GAMEPAD_GENERIC_FOOTER:Refresh(self.footerData)
end
    GAMEPAD_CONTACTS = ZO_GamepadContactsManager:New(self)
end