Back to Home

ESO Lua File v101050

ingame/adventurezone/gamepad/adventurezonebosstree_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
143
144
145
ZO_AdventureZoneBossTree_Gamepad = ZO_Object.MultiSubclass(ZO_AdventureZoneBossTree_Shared, ZO_GamepadMultiFocusArea_Manager)
function ZO_AdventureZoneBossTree_Gamepad:Initialize(...)
    ZO_AdventureZoneBossTree_Shared.Initialize(self, ...)
    ZO_GamepadMultiFocusArea_Manager.Initialize(self, ...)
    local scene = self:GetScene()
    ADVENTURE_ZONE_BOSS_TREE_SCENE_GAMEPAD = scene
    SYSTEMS:RegisterGamepadRootScene("adventureZoneBossTree", scene)
end
function ZO_AdventureZoneBossTree_Gamepad:OnDeferredInitialize()
    ZO_AdventureZoneBossTree_Shared.OnDeferredInitialize(self)
end
function ZO_AdventureZoneBossTree_Gamepad:InitializeMultiFocusAreas()
    self.easyFocus = ZO_GamepadFocus:New(self.easyContainer, DEFAULT_MOVEMENT_CONTROLLER, MOVEMENT_CONTROLLER_DIRECTION_HORIZONTAL)
    self.mediumFocus = ZO_GamepadFocus:New(self.mediumContainer, DEFAULT_MOVEMENT_CONTROLLER, MOVEMENT_CONTROLLER_DIRECTION_HORIZONTAL)
    self.hardFocus = ZO_GamepadFocus:New(self.hardContainer, DEFAULT_MOVEMENT_CONTROLLER, MOVEMENT_CONTROLLER_DIRECTION_HORIZONTAL)
    -- Order matters for this loop
    for boss = ADVENTURE_ZONE_BOSS_ITERATION_BEGIN, ADVENTURE_ZONE_BOSS_ITERATION_END do
        local bossControl = self.bossControls[boss]
        local bossFocusData =
        {
            activate = function()
                self.selectedBoss = boss
                self:UpdateKeybinds()
                bossControl:GetNamedChild("SelectionBox"):SetAlpha(1)
                GAMEPAD_TOOLTIPS:LayoutAdventureZoneBossTooltip(GAMEPAD_RIGHT_TOOLTIP, boss)
                SCREEN_NARRATION_MANAGER:QueueCustomEntry("AdventureZoneBossTree")
            end,
            deactivate = function()
                self.previousBoss = self.selectedBoss
                self.selectedBoss = nil
                self:UpdateKeybinds()
                bossControl:GetNamedChild("SelectionBox"):SetAlpha(0)
                GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_RIGHT_TOOLTIP)
            end,
        }
        if boss < ADVENTURE_ZONE_BOSS_SKITTERING_INSTANCE_BOSS then
            self.easyFocus:AddEntry(bossFocusData)
        elseif boss < ADVENTURE_ZONE_BOSS_TRIAL_BOSS then
            self.mediumFocus:AddEntry(bossFocusData)
        else
            self.hardFocus:AddEntry(bossFocusData)
        end
    end
    local function EasyActivateCallback()
        self.easyFocus:Activate()
        local bossToSelect = self.easyFocus:GetFocus() or 1
        if self.previousBoss and self.previousBoss >= ADVENTURE_ZONE_BOSS_SKITTERING_INSTANCE_BOSS then
            bossToSelect = (self.previousBoss - 6) * 2 or ADVENTURE_ZONE_BOSS_SKITTERING_WORLD_BOSS_1
            -- Convert to Lua index.
            bossToSelect = bossToSelect + 1
        end
        self.easyFocus:SetFocusByIndex(bossToSelect)
    end
    local function EasyDeactivateCallback()
        self.easyFocus:Deactivate()
    end
    local function MediumActivateCallback()
        self.mediumFocus:Activate()
        local bossToSelect = self.mediumFocus:GetFocus() or 1
        if self.previousBoss and self.previousBoss < ADVENTURE_ZONE_BOSS_SKITTERING_INSTANCE_BOSS then
            bossToSelect = zo_floor((self.previousBoss / 2) + 1)
        end
        self.mediumFocus:SetFocusByIndex(bossToSelect)
    end
    local function MediumDeactivateCallback()
        self.mediumFocus:Deactivate()
    end
    local function HardActivateCallback()
        self.hardFocus:Activate()
    end
    local function HardDeactivateCallback()
        self.hardFocus:Deactivate()
    end
    self.easyFocusArea = ZO_GamepadMultiFocusArea_Base:New(self, EasyActivateCallback, EasyDeactivateCallback)
    self.mediumFocusArea = ZO_GamepadMultiFocusArea_Base:New(self, MediumActivateCallback, MediumDeactivateCallback)
    self.hardFocusArea = ZO_GamepadMultiFocusArea_Base:New(self, HardActivateCallback, HardDeactivateCallback)
    self:AddNextFocusArea(self.hardFocusArea)
    self:AddNextFocusArea(self.mediumFocusArea)
    self:AddNextFocusArea(self.easyFocusArea)
end
function ZO_AdventureZoneBossTree_Gamepad:InitializeNarrationInfo()
    local narrationInfo =
    {
        canNarrate = function()
            return self:IsShowing()
        end,
        headerNarrationFunction = function()
            return SCREEN_NARRATION_MANAGER:CreateNarratableObject(GetString(SI_ADVENTURE_ZONE_BOSS_TREE_TITLE))
        end,
        -- Selection narrated via tooltip
    }
    SCREEN_NARRATION_MANAGER:RegisterCustomObject("AdventureZoneBossTree", narrationInfo)
end
function ZO_AdventureZoneBossTree_Gamepad:OnShowing()
    ZO_AdventureZoneBossTree_Shared.OnShowing(self)
    if self:GetCurrentFocus() then
        self:ActivateCurrentFocus()
    else
        self:SelectFocusArea(self.easyFocusArea)
        self:ActivateFocusArea(self.easyFocusArea)
    end
    local NARRATE_HEADER = true
    SCREEN_NARRATION_MANAGER:QueueCustomEntry("AdventureZoneBossTree", NARRATE_HEADER)
    DIRECTIONAL_INPUT:Activate(self, self.control)
end
function ZO_AdventureZoneBossTree_Gamepad:OnHiding()
    ZO_AdventureZoneBossTree_Shared.OnHiding(self)
    self.previousBoss = nil
    DIRECTIONAL_INPUT:Deactivate(self)
end
function ZO_AdventureZoneBossTree_Gamepad:GetSceneName()
    return "adventureZoneBossTreeGamepad"
end
function ZO_AdventureZoneBossTree_Gamepad.OnControlInitialized(control)
    ADVENTURE_ZONE_BOSS_TREE_GAMEPAD = ZO_AdventureZoneBossTree_Gamepad:New(control)
end