ESO Lua File v100010

ingame/gamepad/gamepadtemplates/gamepadtemplates.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
--[[ Global Helper Functions ]]--
function ZO_GamepadSubMenuEntryTemplate_Setup(control, text, pressedTexture, normalTexture, highlightTexture, selected, activated, stackCount)
    SharedGamepadEntryTemplateSetup(control, text, pressedTexture, normalTexture, highlightTexture, selected, activated, stackCount)
end
do
    local FULL_SCALE = 1.375
    local NO_SCALE = 1.0
    local function TryApplyingParametricScaling(control, parametricValue)
        if control then
            control:SetScale(zo_lerp(FULL_SCALE, NO_SCALE, parametricValue))
        end
    end
    function ZO_GamepadMenuEntryTemplateParametricListFunction(control, distanceFromCenter, continousParametricOffset)
        if control.icon or control.alert or control.circleFrame then
            local parametricValue = zo_abs(zo_clamp(distanceFromCenter - continousParametricOffset, -1, 1))
            TryApplyingParametricScaling(control.icon, parametricValue)
            TryApplyingParametricScaling(control.circleFrame, parametricValue)
        end
    end
end
--[[ Item Templates ]]--
local function SetupCooldown(control, data)
    if control.cooldown then
        control.inCooldown = false
        control.cooldown:SetTexture(data.icon)
        local remaining, duration = GetItemCooldownInfo(data.bagId, data.slotIndex)
        ZO_GamepadItemSlot_UpdateCooldowns(control, remaining, duration)
    end
end
function ZO_GamepadCheckboxOptionTemplate_Setup(control, data, selected, selectedDuringRebuild, enabled, activated)
    ZO_SharedGamepadEntry_OnSetup(control, data, selected, selectedDuringRebuild, enabled, activated)
    control.optionEnabledIcon:SetHidden(not data.currentValue)
end
--[[Quantity Spinner]]--
local ZO_GAMEPAD_CURRENCY_SETUP_BY_TYPE
    -- This function is needed to defer creation of the table as the format options are not defined when this file is loaded.
    if not ZO_GAMEPAD_CURRENCY_SETUP_BY_TYPE then
        ZO_GAMEPAD_CURRENCY_SETUP_BY_TYPE = {
                [CURRENCY_TYPE_MONEY] = { options = GAMEPAD_INVENTORY_CURRENCY_OPTIONS_LONG_FORMAT, getter = GetCurrentMoney },
                [CURRENCY_TYPE_ALLIANCE_POINTS] = { options = GAMEPAD_INVENTORY_ALLIANCE_POINTS_OPTIONS_LONG_FORMAT, getter = GetAlliancePoints },
        }
    end
    return ZO_GAMEPAD_CURRENCY_SETUP_BY_TYPE
end
ZO_GamepadQuantitySpinner = {}
function ZO_GamepadQuantitySpinner:InitializeSpinner(valueChangedCallback, direction, currencySetupOptions)
    self.spinner = ZO_Spinner_Gamepad:New(self:GetNamedChild("Spinner"), 1, 1, direction or GAMEPAD_SPINNER_DIRECTION_HORIZONTAL)
    self.spinner:RegisterCallback("OnValueChanged", function(newValue) self:OnValueChanged(newValue) end)
    self.currencyControl = self:GetNamedChild("Price")
    self.currencySetupOptions = currencySetupOptions or ZO_GetDefaultGamepadCurrencySetupByType()
end
function ZO_GamepadQuantitySpinner:SetValueChangedCallback(callback)
end
function ZO_GamepadQuantitySpinner:SetMinMax(min, max)
    self.spinner:SetMinMax(min, max)
end
function ZO_GamepadQuantitySpinner:SetValue(value)
    self.spinner:SetValue(value)
end
function ZO_GamepadQuantitySpinner:GetValue(value)
    return self.spinner:GetValue()
end
function ZO_GamepadQuantitySpinner:SetupCurrency(unitPrice, currencyType)
    self.unitPrice = unitPrice
    if currencyType and (currencyType ~= 0) then
        self.currencyType = currencyType
    else
        self.currencyType = CURRENCY_TYPE_MONEY
    end
    self.currencyControl:SetHidden(not unitPrice)
end
function ZO_GamepadQuantitySpinner:Activate()
    self.spinner:Activate()
end
function ZO_GamepadQuantitySpinner:Deactivate()
    self.spinner:Deactivate()
end
function ZO_GamepadQuantitySpinner:OnValueChanged(newValue)
    if self.valueChangedCallback then
        self.valueChangedCallback(newValue)
    end
    if self.unitPrice then
        local currencySetup = self.currencySetupOptions[self.currencyType]
        local totalCost = newValue * self.unitPrice
        local notEnough = totalCost > currencySetup.getter()
        ZO_CurrencyControl_SetSimpleCurrency(self.currencyControl, self.currencyType, totalCost, currencySetup.options, CURRENCY_SHOW_ALL, notEnough)
    end
end
function ZO_GamepadQuantitySpinner:AnchorToSelectedListEntry(list)
    self:ClearAnchors()
    local listEntryControl = list:GetSelectedControl()
    self:SetAnchor(TOPLEFT, listEntryControl, TOPLEFT, 0, -8)
    self:SetAnchor(BOTTOMRIGHT, listEntryControl, BOTTOMRIGHT, 0, 8)
end
    zo_mixin(control, ZO_GamepadQuantitySpinner)
end