Back to Home

ESO Lua File v101041

ingame/retrait/retraitstation_reconstruct_dialogs.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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
-- Keyboard Dialogs
    local function SetupCostLineItem(entryControl, icon, name, quantity)
        local nameLabel = entryControl:GetNamedChild("NameLabel")
        nameLabel:SetText(name)
        local iconTexture = entryControl:GetNamedChild("IconTexture")
        iconTexture:SetTexture(icon)
        local quantityLabel = iconTexture:GetNamedChild("QuantityLabel")
        quantityLabel:SetText(quantity)
        entryControl:SetHidden(false)
    end
    local function SetupDialog(dialog, itemSetPieceData)
        local currencyOptions, materialCosts = itemSetPieceData:GetCostInfo()
        -- Item description
        local itemTexture = dialog:GetNamedChild("ItemTexture")
        itemTexture:SetTexture(itemSetPieceData:GetIcon())
        local itemLabel = dialog:GetNamedChild("ItemLabel")
        itemLabel:SetText(itemSetPieceData:GetItemLink())
        -- Currency cost
        local currencyOption = currencyOptions[1]
        local costContainer = dialog:GetNamedChild("CostContainer")
        local lineItemContainer = costContainer:GetNamedChild("LineItemContainer")
        local currencyCostLineItem = lineItemContainer:GetNamedChild("CurrencyCostLineItem")
        SetupCostLineItem(currencyCostLineItem, currencyOption.currencyIcon, currencyOption.currencyName, currencyOption.currencyRequired)
        -- Material cost
        for upgradeIndex = 1, GetNumSmithingImprovementItems() do
            local costLineItem = lineItemContainer:GetNamedChild(string.format("CostLineItem%d", upgradeIndex))
            local materialCost = materialCosts[upgradeIndex]
            if materialCost then
                SetupCostLineItem(costLineItem, materialCost.reagentIcon, materialCost.reagentItemLink, materialCost.reagentsRequired)
                costLineItem:SetHidden(false)
            else
                costLineItem:SetHidden(true)
            end
        end
    end
    -- Dialog registration
    ZO_Dialogs_RegisterCustomDialog("CONFIRM_ITEM_RECONSTRUCTION",
    {
        customControl = control,
        setup = SetupDialog,
        title =
        {
            text = SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_TITLE,
        },
        buttons =
        {
            -- Confirm Button
            {
                control = control:GetNamedChild("Confirm"),
                keybind = "DIALOG_PRIMARY",
                text = GetString(SI_RETRAIT_STATION_RECONSTRUCT_ACTION),
                callback = function(dialog)
                    ZO_RECONSTRUCT_KEYBOARD:RequestReconstruction()
                end,
            },
            -- Cancel Button
            {
                control = control:GetNamedChild("Cancel"),
                keybind = "DIALOG_NEGATIVE",
                text = GetString(SI_DIALOG_CANCEL),
            },
        },
    })
end
-- Gamepad Dialogs
    local container = control:GetNamedChild("ContainerScrollChild")
    local summaryDescriptionLabel = container:GetNamedChild("SummaryDescriptionLabel")
    local itemName = control:GetNamedChild("ItemLabel")
    local itemIcon = control:GetNamedChild("ItemIcon")
    local costLinePool = ZO_ControlPool:New("ZO_GamepadDisplayEntryTemplateLowercase34", container)
    local function SetupCostLineControl(costLineControl)
        costLineControl.nameLabel = costLineControl:GetNamedChild("Label")
        -- Order matters:
        costLineControl.iconTexture = costLineControl:GetNamedChild("Icon")
        costLineControl.stackCountLabel = costLineControl.iconTexture:GetNamedChild("StackCount")
    end
    ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CONFIRM_ITEM_RECONSTRUCTION",
    {
        canQueue = true,
        customControl = control,
        setup = function(dialog)
            local data = dialog.data
            local itemSetPieceData = data.itemSetPieceData
            itemName:SetText(itemSetPieceData:GetItemLink())
            itemIcon:SetTexture(itemSetPieceData:GetIcon())
            costLinePool:ReleaseAllObjects()
            local previousControl
            local currencyCosts, materialCosts = itemSetPieceData:GetCostInfo()
            local currencyCost = currencyCosts[1]
            if currencyCost then
                local costLine = costLinePool:AcquireObject()
                costLine.stackCountLabel:SetText(currencyCost.currencyRequired)
                costLine.iconTexture:SetTexture(currencyCost.currencyIcon)
                costLine.nameLabel:SetText(currencyCost.currencyName)
                costLine:ClearAnchors()
                costLine:SetAnchor(TOPLEFT, summaryDescriptionLabel, BOTTOMLEFT, 0, 20)
                previousControl = costLine
            end
            for index, materialCost in ipairs(materialCosts) do
                local costLine = costLinePool:AcquireObject()
                costLine.stackCountLabel:SetText(materialCost.reagentsRequired)
                costLine.iconTexture:SetTexture(materialCost.reagentIcon)
                costLine.nameLabel:SetText(materialCost.reagentItemLink)
                costLine:ClearAnchors()
                if previousControl then
                    costLine:SetAnchor(TOPLEFT, previousControl, BOTTOMLEFT)
                else
                    costLine:SetAnchor(TOPLEFT, summaryDescriptionLabel, BOTTOMLEFT, 0, 20)
                end
                previousControl = costLine
            end
            local NO_ENTRY_LIMIT = nil
            dialog:setupFunc(NO_ENTRY_LIMIT, data)
        end,
        gamepadInfo =
        {
            dialogType = GAMEPAD_DIALOGS.CUSTOM,
        },
        title =
        {
            text = SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_HEADER,
        },
        mainText = 
        {
            text = "",
        },
        narrationText = function(dialog)
            local data = dialog.data
            local itemSetPieceData = data.itemSetPieceData
            local narrations = {}
            --Get the narration for the item name
            table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(itemSetPieceData:GetFormattedName()))
            --Get the narration for the dialog main text
            table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(GetString(SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_DESCRIPTION)))
            --Get the narration for the required currency
            local currencyCosts, materialCosts = itemSetPieceData:GetCostInfo()
            local currencyCost = currencyCosts[1]
            if currencyCost then
                local formattedCost = ZO_Currency_FormatGamepad(currencyCost.currencyType, currencyCost.currencyRequired, ZO_CURRENCY_FORMAT_AMOUNT_NAME)
                table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(formattedCost))
            end
            --Get the narration for the required materials
            for index, materialCost in ipairs(materialCosts) do
                local name = GetItemLinkName(materialCost.reagentItemLink)
                local stackCount = materialCost.reagentsRequired
                table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(zo_strformat(SI_GAMEPAD_RECONSTRUCT_REQUIRED_ITEM_NARRATION_FORMATTER, stackCount, name)))
            end
            return narrations
        end,
        buttons =
        {
            -- Reconstruct Button
            {
                keybind = "DIALOG_PRIMARY",
                text = SI_RETRAIT_STATION_RECONSTRUCT_ACTION,
                callback = function(dialog)
                    ZO_RETRAIT_STATION_RECONSTRUCT_GAMEPAD:RequestReconstruction()
                end,
            },
            -- Back
            {
                keybind = "DIALOG_NEGATIVE",
                text = SI_DIALOG_CANCEL,
            },
        },
    })
end