ESO Lua File v100010

ingame/storewindow/gamepad/storewindowsell_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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
ZO_GamepadStoreSell = ZO_GamepadStoreListComponent:Subclass()
function ZO_GamepadStoreSell:New(...)
    return ZO_GamepadStoreListComponent.New(self, ...)
end
function ZO_GamepadStoreSell:Initialize(scene)
    ZO_GamepadStoreListComponent.Initialize(self, scene, ZO_MODE_STORE_SELL, GetString(SI_STORE_MODE_SELL))
    self.fragment:RegisterCallback("StateChange", function(oldState, newState)
        if newState == SCENE_SHOWING then
            self.list:RefreshVisible()
        elseif newState == SCENE_HIDING then
            self:OnExitUnselectItem()
            GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_RIGHT_TOOLTIP)
        end
    end)
    self:CreateModeData(SI_STORE_MODE_SELL, ZO_MODE_STORE_SELL, "EsoUI/Art/Vendor/vendor_tabIcon_sell_up.dds", fragment, self.keybindStripDescriptor)
    self.list:SetNoItemText(GetString(SI_GAMEPAD_NO_SELL_ITEMS))
end
function ZO_GamepadStoreSell:InitializeEvents()
    local OnInventoryUpdated = function(eventId, bagId, slotId, isNewItem, soundCategory, reason)
        if not self.control:IsControlHidden() then
            if reason == INVENTORY_UPDATE_REASON_DEFAULT then
                self.list:UpdateList()
                KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
            end
        end
    end
    self.control:RegisterForEvent(EVENT_INVENTORY_FULL_UPDATE, OnInventoryUpdated)
    self.control:RegisterForEvent(EVENT_INVENTORY_SINGLE_SLOT_UPDATE, OnInventoryUpdated)
end
function ZO_GamepadStoreSell:InitializeKeybindStrip()
    -- sell screen keybind
    self.keybindStripDescriptor = {
        alignment = KEYBIND_STRIP_ALIGN_LEFT,
        repairAllKeybind
    }
                                                      GAME_NAVIGATION_TYPE_BUTTON,
                                                      function() self:ConfirmSell() end,
                                                      GetString(SI_ITEM_ACTION_SELL),
                                                      function() return #self.list.dataList > 0 end
                                                    )
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor,
                                                    GAME_NAVIGATION_TYPE_BUTTON)
    ZO_Gamepad_AddListTriggerKeybindDescriptors(self.keybindStripDescriptor, self.list)
    self.confirmKeybindStripDescriptor = {}
    ZO_Gamepad_AddForwardNavigationKeybindDescriptors(self.confirmKeybindStripDescriptor,
                                                      GAME_NAVIGATION_TYPE_BUTTON,
                                                      function() self:ConfirmSell() end,
                                                      GetString(SI_ITEM_ACTION_SELL)
                                                    )
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.confirmKeybindStripDescriptor,
                                                    GAME_NAVIGATION_TYPE_BUTTON,
                                                    function() self:UnselectSellItem() end,
                                                    nil)
end
function ZO_GamepadStoreSell:ConfirmSell()
    local selectedData = self.list:GetSelectedData()
    local bag, index = ZO_Inventory_GetBagAndIndex(selectedData)
    if self.confirmationMode then
        local quantity = STORE_WINDOW_GAMEPAD:GetSpinnerValue()
        if quantity > 0 then
            SellInventoryItem(bag, index, quantity)
            self:UnselectSellItem()
        end
    else
        if selectedData.stackCount > 1 then
            self:SelectSellItem()
            STORE_WINDOW_GAMEPAD:SetupSpinner(selectedData.stackCount, selectedData.stackCount, selectedData.sellPrice, selectedData.currencyType1 or CURRENCY_TYPE_MONEY)
        else
            SellInventoryItem(bag, index, 1)
        end
    end
end
function ZO_GamepadStoreSell:SelectSellItem()
    self.confirmationMode = true
    KEYBIND_STRIP:RemoveKeybindButtonGroup(self.keybindStripDescriptor)
    KEYBIND_STRIP:AddKeybindButtonGroup(self.confirmKeybindStripDescriptor)
    STORE_WINDOW_GAMEPAD:SetQuantitySpinnerActive(self.confirmationMode, self.list)
end
function ZO_GamepadStoreSell:UnselectSellItem()
    self.confirmationMode = false
    KEYBIND_STRIP:RemoveKeybindButtonGroup(self.confirmKeybindStripDescriptor)
    KEYBIND_STRIP:AddKeybindButtonGroup(self.keybindStripDescriptor)
    STORE_WINDOW_GAMEPAD:SetQuantitySpinnerActive(self.confirmationMode, self.list)
end
function ZO_GamepadStoreSell:SetupEntry(control, data, selected, selectedDuringRebuild, enabled, activated)
    local price = self.confirmationMode and selected and data.sellPrice * STORE_WINDOW_GAMEPAD:GetSpinnerValue() or data.sellPrice
    self:SetupStoreItem(control, data, selected, selectedDuringRebuild, enabled, activated, price, ZO_STORE_FORCE_VALID_PRICE, ZO_MODE_STORE_SELL)
end
function ZO_GamepadStoreSell:OnSelectedItemChanged(inventoryData)
    GAMEPAD_TOOLTIPS:ClearLines(GAMEPAD_LEFT_TOOLTIP)
    if inventoryData then
        GAMEPAD_TOOLTIPS:LayoutBagItem(GAMEPAD_LEFT_TOOLTIP, inventoryData.bagId, inventoryData.slotIndex)
        STORE_WINDOW_GAMEPAD:UpdateRightTooltip(self.list, ZO_MODE_STORE_SELL)
    end
end