Back to Home

ESO Lua File v101044

ingame/skills/keyboard/skillstyleselector_keyboard.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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
--------------------------
-- Skill Style Selector --
--------------------------
ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_SIZE = 96
ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_PADDING = -16
ZO_SKILL_STYLE_ICON_SELECTOR_ICON_KEYBOARD_SIZE = 64
ZO_SKILL_STYLE_ICON_SELECTOR_ICON_KEYBOARD_OFFSET_X = 16
ZO_SKILL_STYLE_ICON_SELECTOR_ICON_KEYBOARD_OFFSET_Y = 0
ZO_SkillStyleIconSelector_Keyboard = ZO_InitializingObject:Subclass()
function ZO_SkillStyleIconSelector_Keyboard:Initialize(control)
    self.control = control
    --[[ Expected Attributes for Skill Style Selector Icon
gridListClass - The class object from which self.skillStyleSelectorGridList will be created,
entryTemplate - The name of the template control to be used for an icon in the view that allows a skill style to select its icon,
entryWidth - The width to be used for the the entryTemplate,
entryHeight - The height to be used for the entryTemplate,
entryPaddingX - The padding in pixels between icons horizontally,
entryPaddingY - The padding in pixels between icons vertically,
narrationText - Optional: The text used to narrate the entry when using screen narration. Can be a function or a string,
]]
    self.templateData =
    {
        gridListClass = ZO_GridScrollList_Keyboard,
        entryTemplate = "ZO_SkillStyle_SelectorIcon_Keyboard_Control",
        entryWidth = ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_SIZE,
        entryHeight = ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_SIZE,
        entryPaddingX = ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_PADDING,
        entryPaddingY = ZO_SKILL_STYLE_ICON_SELECTOR_PICK_KEYBOARD_PADDING,
    }
    local function OnCollectibleUpdated()
        self:RefreshGridList()
        if self.skillStyleIconSelectedCallback then
            local index = self.activeData and self.activeData.iconIndex or nil
            self.skillStyleIconSelectedCallback(index)
        end
    end
    ZO_COLLECTIBLE_DATA_MANAGER:RegisterCallback("OnCollectibleUpdated", OnCollectibleUpdated)
end
function ZO_SkillStyleIconSelector_Keyboard:SetSkillData(skillData)
    self.skillData = skillData
end
function ZO_SkillStyleIconSelector_Keyboard:InitializeSkillStyleSelectorGridList()
    local templateData = self.templateData
    local NO_AUTO_FILL_ROWS = nil
    local RESIZE_TO_FIT_COLUMN_MAX = 5
    local RESIZE_TO_FIT_ROW_MAX = 4
    self.skillStyleSelectorGridList = templateData.gridListClass:New(self.control, NO_AUTO_FILL_ROWS, RESIZE_TO_FIT_COLUMN_MAX, RESIZE_TO_FIT_ROW_MAX)
    local function skillStyleSelectorEntrySetup(control, data)
    end
    local HIDE_CALLBACK = nil
    self.skillStyleSelectorGridList:AddEntryTemplate(templateData.entryTemplate, templateData.entryWidth, templateData.entryHeight, skillStyleSelectorEntrySetup, HIDE_CALLBACK, nil, templateData.entryPaddingX, templateData.entryPaddingY)
end
function ZO_SkillStyleIconSelector_Keyboard:OnSkillStyleSelectorEntrySetup(control, data)
    local iconContainer = control:GetNamedChild("IconContainer")
    local checkButton = iconContainer:GetNamedChild("Frame")
    local lockIcon = iconContainer:GetNamedChild("Lock")
    local selectedBorder = iconContainer:GetNamedChild("SelectedBorder")
    local isLocked = data.collectibleData:IsLocked() or data.collectibleData:IsBlocked()
    lockIcon:SetHidden(not isLocked)
    local isCurrent = data.collectibleData:IsUnlocked() and data.collectibleData:IsActive()
    selectedBorder:SetHidden(not isCurrent)
    if isCurrent then
        self.activeData = data
    end
    local function OnClick()
    end
    if not self.skillData.isPurchased then
        iconContainer:SetAlpha(0.3)
    else
        iconContainer:SetAlpha(1)
    end
    control.data = data
    iconContainer:GetNamedChild("Icon"):SetTexture(data.collectibleData:GetIcon())
    ZO_CheckButton_SetCheckState(checkButton, isCurrent)
    ZO_CheckButton_SetEnableState(checkButton, not isLocked)
end
function ZO_SkillStyleIconSelector_Keyboard:SetSkillStyleIconSelectedCallback(callback)
end
function ZO_SkillStyleIconSelector_Keyboard:CreateSkillStyleSelectorIconDataObject(index)
    local collectibleId = GetProgressionSkillAbilityFxOverrideCollectibleIdByIndex(self.skillData.progressionId, index)
    local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
    if collectibleData and not collectibleData:IsHiddenFromCollection() then
        local data =
        {
            iconIndex = index,
            collectibleId = collectibleId,
            collectibleData = collectibleData,
            narrationText = self.templateData.narrationText,
        }
        return data
    end
    return nil
end
function ZO_SkillStyleIconSelector_Keyboard:BuildSkillStyleSelectorIconGridList()
    self.skillStyleSelectorGridList:ClearGridList()
    self.activeData = nil
    local templateData = self.templateData
    if self.skillData then
        for i = 1, GetNumProgressionSkillAbilityFxOverrides(self.skillData.progressionId) do
            local data = self:CreateSkillStyleSelectorIconDataObject(i)
            if data then
                self.skillStyleSelectorGridList:AddEntry(data, templateData.entryTemplate)
            end
        end
        self.skillStyleSelectorGridList:CommitGridList()
    end
end
function ZO_SkillStyleIconSelector_Keyboard:RefreshGridList()
    self.activeData = nil
    self.skillStyleSelectorGridList:RefreshGridList()
end
function ZO_SkillStyleIconSelector_Keyboard:GetActiveData()
    return self.activeData
end
function ZO_SkillStyleIconSelector_Keyboard:TryClearSelection()
    if self.activeData then
        local collectibleData = self.activeData.collectibleData
        if collectibleData:IsActive() and not collectibleData:IsBlocked() then
            collectibleData:Use()
            return true
        end
    end
    return false
end
function ZO_SkillStyleIconSelector_Keyboard:OnSkillStyleSelectorGridListEntryClicked(newIconIndex)
    if self.skillData.isPurchased then
        local gridData = self.skillStyleSelectorGridList:GetData()
        local selectedData = gridData[newIconIndex]
        if selectedData then
            local collectibleData = selectedData.data.collectibleData
            if collectibleData and not collectibleData:IsBlocked() and collectibleData:IsUnlocked() and not collectibleData:IsActive() then
                collectibleData:Use()
            end
        end
    end
end