Back to Home

ESO Lua File v101041

ingame/armory/armorybuildiconpicker_shared.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
---------------------------
-- Armory Build Icon Picker --
---------------------------
ZO_ArmoryBuildIconPicker_Shared = ZO_InitializingObject:Subclass()
function ZO_ArmoryBuildIconPicker_Shared:Initialize(control, templateData)
    self.control = control
    -- This is platform specific data that needs to be overridden by the inheriting classes as it
    -- specifies the platform specific data to use.
    --[[ Expected Attributes for Icon Picker
gridListClass - The class object from which self.armoryBuildIconPickerGridList will be created,
entryTemplate - The name of the template control to be used for an icon in the view that allows an armory biuild 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 = templateData
end
function ZO_ArmoryBuildIconPicker_Shared:OnArmoryBuildIconPickerEntrySetup(control, data)
    assert(false) -- override in derived function
end
function ZO_ArmoryBuildIconPicker_Shared:InitializeArmoryBuildIconPickerGridList()
    local templateData = self.templateData
    self.armoryBuildIconPickerGridList = templateData.gridListClass:New(self.control)
    local function armoryBuildIconPickerEntrySetup(control, data)
    end
    local HIDE_CALLBACK = nil
    self.armoryBuildIconPickerGridList:AddEntryTemplate(templateData.entryTemplate, templateData.entryWidth, templateData.entryHeight, armoryBuildIconPickerEntrySetup, HIDE_CALLBACK, nil, templateData.entryPaddingX, templateData.entryPaddingY)
end
function ZO_ArmoryBuildIconPicker_Shared:OnArmoryBuildIconPickerGridListEntryClicked()
    assert(false) -- override in derived function
end
function ZO_ArmoryBuildIconPicker_Shared:SetupIconPickerForArmoryBuild(buildData)
    self.iconIndex = buildData:GetIconIndex()
end
function ZO_ArmoryBuildIconPicker_Shared:SetArmoryBuildIconPicked(iconIndex)
    self.iconIndex = iconIndex
end
function ZO_ArmoryBuildIconPicker_Shared:GetSelectedArmoryBuildIconIndex()
    return self.iconIndex
end
function ZO_ArmoryBuildIconPicker_Shared:CreateArmoryBuildIconPickerDataObject(index)
    local data =
    {
        iconIndex = index,
        isCurrent = function()
            local selectedIconIndex = self:GetSelectedArmoryBuildIconIndex()
            return selectedIconIndex and selectedIconIndex == index or false
        end,
        narrationText = self.templateData.narrationText,
    }
    return data
end
function ZO_ArmoryBuildIconPicker_Shared:BuildArmoryBuildIconPickerGridList()
    self.armoryBuildIconPickerGridList:ClearGridList()
    local templateData = self.templateData
    for i = 1, ZO_ARMORY_NUM_BUILD_ICONS do
        local data = self:CreateArmoryBuildIconPickerDataObject(i)
        self.armoryBuildIconPickerGridList:AddEntry(data, templateData.entryTemplate)
    end
    self.armoryBuildIconPickerGridList:CommitGridList()
end
function ZO_ArmoryBuildIconPicker_Shared:ScrollToSelectedData()
    for _, dataEntry in pairs(self.armoryBuildIconPickerGridList:GetData()) do
        if dataEntry.data.isCurrent() then
            local NO_CALLBACK = nil
            local ANIMATE_INSTANTLY = true
            self.armoryBuildIconPickerGridList:ScrollDataToCenter(dataEntry.data, NO_CALLBACK, ANIMATE_INSTANTLY)
        end
    end
end
function ZO_ArmoryBuildIconPicker_Shared:RefreshGridList()
    self.armoryBuildIconPickerGridList:RefreshGridList()
end