Back to Home

ESO Lua File v100034

common/gamepad/zo_gamepadmultifocusparametricscrolllistscreen.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
143
144
145
146
147
148
149
local GamepadInteractiveSortFilterFocus_ParametricList = ZO_GamepadMultiFocusArea_Base:Subclass()
function GamepadInteractiveSortFilterFocus_ParametricList:HandleMovement(horizontalResult, verticalResult)
    if verticalResult == MOVEMENT_CONTROLLER_MOVE_NEXT then
        self.manager:MoveNext()
        return true
    elseif verticalResult == MOVEMENT_CONTROLLER_MOVE_PREVIOUS then
        self.manager:MovePrevious()
        return true
    end
    return false
end
function GamepadInteractiveSortFilterFocus_ParametricList:HandleMovePrevious()
    local consumed = false
    if self.manager:AtTopOfList() then
        consumed = ZO_GamepadMultiFocusArea_Base.HandleMovePrevious(self)
    end
    return consumed
end
function GamepadInteractiveSortFilterFocus_ParametricList:HandleMoveNext()
    local consumed = false
    if self.manager:AtBottomOfList() then
        consumed = ZO_GamepadMultiFocusArea_Base.HandleMoveNext(self)
    end
    return consumed
end
ZO_Gamepad_MultiFocus_ParametricList_Screen = ZO_Object:MultiSubclass(ZO_GamepadMultiFocusArea_Manager, ZO_Gamepad_ParametricList_Screen)
function ZO_Gamepad_MultiFocus_ParametricList_Screen:New(...)
    return ZO_Gamepad_ParametricList_Screen.New(self, ...)
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:Initialize(control, createTabBar, activateOnShow, scene)
    ZO_Gamepad_ParametricList_Screen.Initialize(self, control, createTabBar, activateOnShow, scene)
     ZO_GamepadMultiFocusArea_Manager.Initialize(self)
      
     self:InitializeMultiFocusArea()
end
-- Multi Focus Area functions --
function ZO_Gamepad_MultiFocus_ParametricList_Screen:InitializeMultiFocusArea()
    local function ActivateCallback()
        self._currentList:Activate()
        self:OnListAreaActivate()
    end
    local function DeactivateCallback()
        self._currentList:Deactivate()
        self:OnListAreaDeactivate()
    end
    self.parametricListArea = GamepadInteractiveSortFilterFocus_ParametricList:New(self, ActivateCallback, DeactivateCallback)
    self.parametricListArea:SetKeybindDescriptor(self.keybindStripDescriptor)
    self:AddNextFocusArea(self.parametricListArea)
    self.currentFocalArea = self.parametricListArea
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:ResetFocusArea()
    self:SelectFocusArea(self.parametricListArea)
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:OnListAreaActivate()
    -- override in derived functions for desired behaviour
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:OnListAreaDeactivate()
    -- override in derived functions for desired behaviour
end
function ZO_Gamepad_ParametricList_Screen:MoveNext()
    self._currentList:MoveNext()
end
function ZO_Gamepad_ParametricList_Screen:MovePrevious()
    self._currentList:MovePrevious()
end
function ZO_Gamepad_ParametricList_Screen:AtTopOfList()
    return self._currentList:GetSelectedIndex() == 1 
end
function ZO_Gamepad_ParametricList_Screen:AtBottomOfList()
    return self._currentList:GetSelectedIndex() == self._currentList:GetNumItems()
end
-- Header functions --
function ZO_Gamepad_MultiFocus_ParametricList_Screen:SetupHeaderFocus(headerFocus)
    assert(false) -- Cannot use this function in this class
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:UpdateDirectionalInput()
    ZO_GamepadMultiFocusArea_Manager.UpdateDirectionalInput(self) -- explicitly state which base class function we want to use
end
-- Scene functions --
-- A function which should be called as the StateChanged callback for the scene.
function ZO_Gamepad_MultiFocus_ParametricList_Screen:OnStateChanged(oldState, newState)
    if newState == SCENE_SHOWING or newState == SCENE_GROUP_SHOWING then
        self:PerformDeferredInitialize()
        if self.activateOnShow then
            self:SetCurrentList(self:GetMainList())
        end
        
        SCENE_MANAGER:AddFragment(self.headerFragment)
        self:OnShowing()
    elseif newState == SCENE_HIDING then
        self:OnHiding()
    elseif newState == SCENE_HIDDEN or newState == SCENE_GROUP_HIDDEN then
        self:OnHide()
        self:Deactivate()
    elseif newState == SCENE_SHOWN or newState == SCENE_GROUP_SHOWN then
        self:OnShow()
    end
end
function ZO_Gamepad_MultiFocus_ParametricList_Screen:RefreshKeybinds()
end
-- A function called when the screen is being shown. This should call self:PerformUpdate() if self.dirty.
function ZO_Gamepad_MultiFocus_ParametricList_Screen:OnShowing()
    if self.dirty then
        self:PerformUpdate()
    end
    if not DIRECTIONAL_INPUT:IsListening(self) then
        self._currentList:SetDirectionalInputEnabled(false)
        DIRECTIONAL_INPUT:Activate(self, self.control)
    end
     
     self:ActivateCurrentFocus()
end
-- A function called when the screen is fully hidden. This may be overridden in a sub-class.
function ZO_Gamepad_MultiFocus_ParametricList_Screen:OnHide()
    if DIRECTIONAL_INPUT:IsListening(self) then
        DIRECTIONAL_INPUT:Deactivate(self)
    end
     
     self:DeactivateCurrentFocus()
end