ESO Lua File v100012

ingame/storewindow/gamepad/storewindowbuyback_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
ZO_GamepadStoreBuyback = ZO_GamepadStoreListComponent:Subclass()
function ZO_GamepadStoreBuyback:New(...)
    return ZO_GamepadStoreListComponent.New(self, ...)
end
function ZO_GamepadStoreBuyback:Initialize(scene)
    ZO_GamepadStoreListComponent.Initialize(self, scene, ZO_MODE_STORE_BUY_BACK, GetString(SI_STORE_MODE_BUY_BACK))
    self.fragment:RegisterCallback("StateChange", function(oldState, newState)
        if newState == SCENE_SHOWING then
            self:RegisterEvents()
            self.list:UpdateList()
        elseif newState == SCENE_HIDING then
            self:UnregisterEvents()
            GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_RIGHT_TOOLTIP)
        end
     end)
    self:CreateModeData(SI_STORE_MODE_BUY_BACK, ZO_MODE_STORE_BUY_BACK, "EsoUI/Art/Vendor/vendor_tabIcon_buyBack_up.dds", fragment, self.keybindStripDescriptor)
    self.list:SetNoItemText(GetString(SI_GAMEPAD_NO_BUYBACK_ITEMS))
end
function ZO_GamepadStoreBuyback:RegisterEvents()
    local OnCurrencyChanged = function()
         self.list:RefreshVisible()
     end
    self.control:RegisterForEvent(EVENT_MONEY_UPDATE, OnCurrencyChanged)
    self.control:RegisterForEvent(EVENT_ALLIANCE_POINT_UPDATE, OnCurrencyChanged)
    local OnBuyBackUpdated = function()
         self.list:UpdateList()
    end
     self.control:RegisterForEvent(EVENT_UPDATE_BUYBACK, OnBuyBackUpdated)
end
function ZO_GamepadStoreBuyback:UnregisterEvents()
    self.control:UnregisterForEvent(EVENT_MONEY_UPDATE)
    self.control:UnregisterForEvent(EVENT_ALLIANCE_POINT_UPDATE)
     self.control:UnregisterForEvent(EVENT_UPDATE_BUYBACK)
end
function ZO_GamepadStoreBuyback:InitializeKeybindStrip()
    -- Buy-Back screen keybind
     self.keybindStripDescriptor = {
        alignment = KEYBIND_STRIP_ALIGN_LEFT,
          STORE_WINDOW_GAMEPAD:GetRepairAllKeybind(),
    }
                                                      GAME_NAVIGATION_TYPE_BUTTON,
                                                      function() self:ConfirmBuyBack() end,
                                                      GetString(SI_ITEM_ACTION_BUYBACK),
                                                      function() return GetNumBuybackItems() > 0 end,
                                                                   function() return self:CanBuyBack() end
                                                                )
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON)
     ZO_Gamepad_AddListTriggerKeybindDescriptors(self.keybindStripDescriptor, self.list)
end
function ZO_GamepadStoreBuyback:ConfirmBuyBack()
    local selectedItem = self.list:GetTargetData()
    local cost = selectedItem.stackBuyPrice
    if cost <= GetCarriedCurrencyAmount(CURT_MONEY) then
        local numUsedSlots, numSlots = PLAYER_INVENTORY:GetNumSlots(INVENTORY_BACKPACK)
        if numUsedSlots < numSlots then
            local slotIndex = selectedItem.slotIndex
            BuybackItem(slotIndex)
        else
            local message = zo_strformat(SI_INVENTORY_ERROR_INVENTORY_FULL)
            ZO_AlertNoSuppression(UI_ALERT_CATEGORY_ALERT, nil, message)
            PlaySound(SOUNDS.GENERAL_ALERT_ERROR)
        end
    end
end
function ZO_GamepadStoreBuyback:CanBuyBack()
    local selectedItem = self.list:GetTargetData()
    if selectedItem then
        return selectedItem.stackBuyPrice <= GetCarriedCurrencyAmount(CURT_MONEY)
    else
        return false
    end
end
function ZO_GamepadStoreBuyback:SetupEntry(control, data, selected, selectedDuringRebuild, enabled, activated)
    self:SetupStoreItem(control, data, selected, selectedDuringRebuild, enabled, activated, data.sellPrice, not ZO_STORE_FORCE_VALID_PRICE, ZO_MODE_STORE_BUY_BACK)
end
function ZO_GamepadStoreBuyback:OnSelectedItemChanged(buyBackData)
    GAMEPAD_TOOLTIPS:ClearLines(GAMEPAD_LEFT_TOOLTIP)
    if buyBackData then
        GAMEPAD_TOOLTIPS:LayoutBuyBackItem(GAMEPAD_LEFT_TOOLTIP, buyBackData.slotIndex, buyBackData.icon)
        STORE_WINDOW_GAMEPAD:UpdateRightTooltip(self.list, ZO_MODE_STORE_BUY_BACK)
        KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
    end
end