ESO Lua File v100012

ingame/inventory/inventorytemplates.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
do
    local function UpdateInventorySlots(infoBar)
        local slotsLabel = infoBar:GetNamedChild("FreeSlots")
        local numUsedSlots, numSlots = PLAYER_INVENTORY:GetNumSlots(INVENTORY_BACKPACK)
        if numUsedSlots < numSlots then
            slotsLabel:SetText(zo_strformat(SI_INVENTORY_BACKPACK_REMAINING_SPACES, numUsedSlots, numSlots))
        else
            slotsLabel:SetText(zo_strformat(SI_INVENTORY_BACKPACK_COMPLETELY_FULL, numUsedSlots, numSlots))
        end
    end
    local function UpdateSlots_Gamepad(infoBar, bagType)
        local slotsLabel = infoBar:GetNamedChild("FreeSlots")
        local numUsedSlots = GetNumBagUsedSlots(bagType)
        local numSlots = GetBagSize(bagType)
        if numUsedSlots < numSlots then
            slotsLabel:SetColor(ZO_SELECTED_TEXT:UnpackRGBA())
        else
            slotsLabel:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
        end
        slotsLabel:SetText(zo_strformat(SI_GAMEPAD_INVENTORY_CAPACITY_FORMAT, numUsedSlots, numSlots))
    end
    local function InventoryInfoBar_ConnectStandardBar_Common(infoBar, options, updateInventorySlotFnc, currencyConnectFnc, bagType)
        if infoBar.isConnected then return end
        local slotsDirty = true
        local function OnInventoryUpdated()
            if infoBar:IsHidden() then
                slotsDirty = true
            else
                updateInventorySlotFnc(infoBar, bagType)
                slotsDirty = false
            end
        end
        currencyConnectFnc(infoBar:GetNamedChild("Money"), options)
        if bagType == BAG_GUILDBANK then
            infoBar:RegisterForEvent(EVENT_GUILD_BANK_ITEM_ADDED, OnInventoryUpdated)
            infoBar:RegisterForEvent(EVENT_GUILD_BANK_ITEM_REMOVED, OnInventoryUpdated)
            infoBar:RegisterForEvent(EVENT_GUILD_BANK_UPDATED_QUANTITY, OnInventoryUpdated)
            infoBar:RegisterForEvent(EVENT_GUILD_BANK_ITEMS_READY, OnInventoryUpdated)
        else
            infoBar:RegisterForEvent(EVENT_INVENTORY_FULL_UPDATE, OnInventoryUpdated)
            infoBar:RegisterForEvent(EVENT_INVENTORY_SINGLE_SLOT_UPDATE, OnInventoryUpdated)
        end
        local function CleanDirty()
            if slotsDirty then
                slotsDirty = false
                updateInventorySlotFnc(infoBar, bagType)
            end
        end
        infoBar:SetHandler("OnEffectivelyShown", CleanDirty)
        if not infoBar:IsHidden() then
            CleanDirty()
        end
        infoBar.isConnected = true
    end
    function ZO_InventoryInfoBar_ConnectStandardBar(infoBar)
        InventoryInfoBar_ConnectStandardBar_Common(infoBar, ZO_KEYBOARD_CARRIED_CURRENCY_OPTIONS, UpdateInventorySlots, ZO_SharedInventory_ConnectPlayerCurrencyLabel, BAG_BACKPACK)
    end
        InventoryInfoBar_ConnectStandardBar_Common(infoBar, ZO_GAMEPAD_CURRENCY_OPTIONS, UpdateSlots_Gamepad, ZO_SharedInventory_ConnectPlayerCurrencyLabel, BAG_BACKPACK)
    end
    function ZO_InventoryInfoBar_Gamepad_ConnectBankBar(infoBar)
        InventoryInfoBar_ConnectStandardBar_Common(infoBar, ZO_GAMEPAD_CURRENCY_OPTIONS, UpdateSlots_Gamepad, ZO_SharedInventory_ConnectBankedCurrencyLabel, BAG_BANK)
    end
        InventoryInfoBar_ConnectStandardBar_Common(infoBar, ZO_GAMEPAD_CURRENCY_OPTIONS, UpdateSlots_Gamepad, ZO_SharedInventory_ConnectGuildBankedCurrencyLabel, BAG_GUILDBANK)
    end
end