ESO Lua File v100010

ingame/stable/gamepad/buymount_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
local ZO_BuyMount_Gamepad = ZO_Object:Subclass()
function ZO_BuyMount_Gamepad:New(...)
    local buyMount = ZO_Object.New(self)
    buyMount:Initialize(...)
    return buyMount
end
function ZO_BuyMount_Gamepad:Initialize(control)
    self.control = control
    control.owner = self
     BUY_MOUNT_GAMEPAD_FRAGMENT = ZO_FadeSceneFragment:New(self.control)
    BUY_MOUNT_GAMEPAD_FRAGMENT.alwaysAnimate = true
     BUY_MOUNT_GAMEPAD_FRAGMENT:RegisterCallback("StateChange", function(oldState, newState)
        if newState == SCENE_SHOWING then
            STABLE_HEADER.tooltip:ClearLines()
            STABLE_HEADER.tooltipContainer:SetHidden(true)
        end
          ZO_Stables_BuySellStateChangeCallback_Gamepad(self, oldState, newState)
     end)
end
function ZO_BuyMount_Gamepad:InitializeKeybindStripDescriptors()
    self.keybindStripDescriptor = {}
    local function ConfirmBuy()
        local selectedData = self.itemList:GetSelectedData()
        ZO_Dialogs_ShowDialog("GAMEPAD_CONFIRM_BUY_MOUNT", { storeIndex = selectedData.storeIndex}, {mainTextParams = { nil }} )
    end
    ZO_Gamepad_AddForwardNavigationKeybindDescriptors(self.keybindStripDescriptor, 
                                                      GAME_NAVIGATION_TYPE_BUTTON,
                                                      ConfirmBuy,
                                                      GetString(SI_GAMEPAD_STABLE_BUY_MOUNT),
                                                      function() return self.canBuy end
                                                                )
    ZO_Gamepad_AddBackNavigationKeybindDescriptors(self.keybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON)
end
function ZO_BuyMount_Gamepad:InitializeEvents()
    local function RefreshAll()
        if not self.control:IsControlHidden() then
            self:RefreshAll()
        end
    end
    self.control:RegisterForEvent(EVENT_MONEY_UPDATE, RefreshAll)
    self.control:RegisterForEvent(EVENT_MOUNT_UPDATE, RefreshAll)
    self.control:RegisterForEvent(EVENT_MOUNTS_FULL_UPDATE, RefreshAll)
end
function ZO_BuyMount_Gamepad:RefreshAll()
    self:UpdateList()
end
function ZO_BuyMount_Gamepad:UpdateList()
    self.itemList:Clear()
    local hasItemsForSale = false
    for entryIndex = 1, GetNumStoreItems() do
        local icon, name, stack, price, sellPrice, meetsRequirementsToBuy, meetsRequirementsToEquip, quality, questNameColor, currencyType1, currencyId1, currencyQuantity1, currencyIcon1,
            currencyName1, currencyType2, currencyId2, currencyQuantity2, currencyIcon2, currencyName2 = GetStoreEntryInfo(entryIndex)
        if stack > 0 then
            local speedBonus, staminaBonus, inventoryBonus, maxSpeedBonus, maxStaminaBonus, maxInventoryBonus = GetStoreMountInfo(entryIndex)
            local entryData = { stableIndex = 0, storeIndex = entryIndex, name = name, icon = icon, price = price,
                                speedBonus = speedBonus, maxSpeedBonus = maxSpeedBonus,
                                staminaBonus = staminaBonus, maxStaminaBonus = maxStaminaBonus,
                                inventoryBonus = inventoryBonus, maxInventoryBonus = maxInventoryBonus,
                                invalidPrice = price > GetCurrentMoney()
                                }
            self.itemList:AddEntry("ZO_StableSlotBuyOrSellRow", entryData, nil, nil, MOUNT_BUYSELL_PRE_SELECTED_PADDING, MOUNT_BUYSELL_POST_SELECTED_PADDING)
            hasItemsForSale = true
        end
    end
    --- TODO: Is this actually a valid condition, or do vendors always have at-least one mount for sale?
    self.canBuy = hasItemsForSale
    if not hasItemsForSale then
        self.itemList:AddEntry("ZO_StableSlotBuyOrSellRowEmpty", {}, nil, nil, MOUNT_BUYSELL_PRE_SELECTED_PADDING, MOUNT_BUYSELL_POST_SELECTED_PADDING)
    end
    KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
     self.itemList:Commit()
end
    BUY_MOUNT_GAMEPAD = ZO_BuyMount_Gamepad:New(control)
end