Back to Home

ESO Lua File v100023

ingame/housingeditor/keyboard/housingfurnitureproducts_keyboard.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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
ZO_HousingFurnitureProducts_Keyboard = ZO_HousingFurnitureList:Subclass()
function ZO_HousingFurnitureProducts_Keyboard:New(...)
    return ZO_HousingFurnitureList.New(self, ...)
end
function ZO_HousingFurnitureProducts_Keyboard:InitializeKeybindStrip()
    self.keybindStripDescriptor =
    {
        alignment = KEYBIND_STRIP_ALIGN_CENTER,
        -- purchase
        {
            name = GetString(SI_HOUSING_FURNITURE_BROWSER_PURCHASE_KEYBIND),
            keybind = "UI_SHORTCUT_PRIMARY",
            callback = function()
                local mostRecentlySelectedData = self:GetMostRecentlySelectedData()
                local IS_PURCHASE = false
                self:RequestPurchase(mostRecentlySelectedData, IS_PURCHASE)
            end,
            enabled = function()
                local hasMostRecentlySelectedData = self:GetMostRecentlySelectedData() ~= nil
                if not hasMostRecentlySelectedData then
                    return false, GetString(SI_HOUSING_BROWSER_MUST_CHOOSE_TO_PURCHASE)
                end
                return true
            end,
        },
        -- gift
        {
            name = GetString(SI_HOUSING_FURNITURE_BROWSER_GIFT_KEYBIND),
            keybind = "UI_SHORTCUT_TERTIARY",
            callback = function()
                local mostRecentlySelectedData = self:GetMostRecentlySelectedData()
                local IS_GIFT = true
                self:RequestPurchase(mostRecentlySelectedData, IS_GIFT)
            end,
            visible = function()
                local mostRecentlySelectedData = self:GetMostRecentlySelectedData()
                if mostRecentlySelectedData ~= nil then
                    return IsMarketProductGiftable(mostRecentlySelectedData.marketProductId, mostRecentlySelectedData.presentationIndex)
                end
                return false
            end,
        },
        -- end preview
        {
            name = GetString(SI_CRAFTING_EXIT_PREVIEW_MODE),
            keybind = "UI_SHORTCUT_NEGATIVE",
            callback = function()
                self:ClearSelection()
            end,
            visible = function()
                local hasSelection = self:GetMostRecentlySelectedData() ~= nil
                return hasSelection
            end,
        },
    }
end
function ZO_HousingFurnitureProducts_Keyboard:InitializeThemeSelector()
    self.purchaseThemeDropdown = self.contents:GetNamedChild("Dropdown")
    local function OnThemeChanged(comboBox, entryText, entry)
        SHARED_FURNITURE:SetPurchaseFurnitureTheme(entry.furnitureTheme)
    end
end
function ZO_HousingFurnitureProducts_Keyboard:OnSearchTextChanged(editBox)
    ZO_HousingFurnitureList.OnSearchTextChanged(self, editBox)
    SHARED_FURNITURE:SetMarketProductTextFilter(editBox:GetText())
end
function ZO_HousingFurnitureProducts_Keyboard:AddListDataTypes()
    self.MarketProductOnMouseClickCallback = function(control, buttonIndex, upInside)
        if buttonIndex == MOUSE_BUTTON_INDEX_LEFT and upInside then
            ZO_ScrollList_MouseClick(self:GetList(), control)
        end
    end
        if buttonIndex == MOUSE_BUTTON_INDEX_LEFT then
            local data = ZO_ScrollList_GetData(control)
            local IS_PURCHASE = false
            self:RequestPurchase(data, IS_PURCHASE)
        end
    end
    self:AddDataType(ZO_HOUSING_MARKET_PRODUCT_DATA_TYPE, "ZO_MarketProductFurnitureSlot", ZO_HOUSING_FURNITURE_LIST_ENTRY_HEIGHT, function(...) self:SetupMarketProductFurnitureRow(...) end, ZO_HousingFurnitureBrowser_Keyboard.OnHideFurnitureRow)
end
function ZO_HousingFurnitureProducts_Keyboard:RequestPurchase(data, isGift)
    ClearTooltip(ItemTooltip)
    RequestPurchaseMarketProduct(data.marketProductId, data.presentationIndex, isGift)
end
do
    local CURRENCY_ICON_SIZE = "100%"
    function ZO_HousingFurnitureProducts_Keyboard:SetupMarketProductFurnitureRow(rowControl, marketProductFurnitureObject)
        rowControl.name:SetText(marketProductFurnitureObject:GetFormattedName())
        local quality = marketProductFurnitureObject:GetQuality()
        local r, g, b = GetInterfaceColor(INTERFACE_COLOR_TYPE_ITEM_QUALITY_COLORS, quality)
        rowControl.name:SetColor(r, g, b, 1)
        rowControl.icon:SetTexture(marketProductFurnitureObject:GetIcon())
        -- setup the cost
        local currencyType, cost, hasDiscount, costAfterDiscount, discountPercent = marketProductFurnitureObject:GetMarketProductPricingByPresentation()
        local onSale = discountPercent > 0
        rowControl.textCallout:ClearAnchors()
        if onSale then
            rowControl.previousCost:SetText(zo_strformat(SI_NUMBER_FORMAT, ZO_CommaDelimitNumber(cost)))
            rowControl.textCallout:SetAnchor(RIGHT, rowControl.previousCost, LEFT, -10)
        else
            rowControl.textCallout:SetAnchor(RIGHT, rowControl.cost, LEFT, -10)
        end
        rowControl.previousCost:SetHidden(not onSale)
        local currencyString = zo_strformat(SI_NUMBER_FORMAT, ZO_Currency_FormatKeyboard(ZO_Currency_MarketCurrencyToUICurrency(currencyType), costAfterDiscount, ZO_CURRENCY_FORMAT_AMOUNT_ICON))
        rowControl.cost:SetText(currencyString)
        local textCalloutBackgroundColor
        local textCalloutTextColor
        local textCalloutUpdateHandler
        if marketProductFurnitureObject:IsLimitedTimeProduct() then
            textCalloutBackgroundColor = ZO_BLACK
            textCalloutTextColor = ZO_MARKET_PRODUCT_ON_SALE_COLOR
            marketProductFurnitureObject:SetTimeLeftOnLabel(rowControl.textCallout)
            textCalloutUpdateHandler = function() marketProductFurnitureObject:SetTimeLeftOnLabel(rowControl.textCallout) end
        elseif marketProductFurnitureObject.onSale then
            textCalloutBackgroundColor = ZO_MARKET_PRODUCT_ON_SALE_COLOR
            textCalloutTextColor = ZO_SELECTED_TEXT
            rowControl.textCallout:SetText(zo_strformat(SI_MARKET_DISCOUNT_PRICE_PERCENT_FORMAT, marketProductFurnitureObject.discountPercent))
            rowControl.textCallout:SetModifyTextType(MODIFY_TEXT_TYPE_UPPERCASE)
        elseif marketProductFurnitureObject.isNew then
            textCalloutBackgroundColor = ZO_MARKET_PRODUCT_NEW_COLOR
            textCalloutTextColor = ZO_SELECTED_TEXT
            rowControl.textCallout:SetText(GetString(SI_MARKET_TILE_CALLOUT_NEW))
            rowControl.textCallout:SetModifyTextType(MODIFY_TEXT_TYPE_UPPERCASE)
        end
        if textCalloutBackgroundColor then
            marketProductFurnitureObject.SetCalloutBackgroundColor(rowControl.textCalloutLeftBackground, rowControl.textCalloutRightBackground, rowControl.textCalloutCenterBackground, textCalloutBackgroundColor)
            rowControl.textCallout:SetColor(textCalloutTextColor:UnpackRGB())
        end
        rowControl.textCallout:SetHidden(not textCalloutBackgroundColor)
        rowControl.textCallout:SetHandler("OnUpdate", textCalloutUpdateHandler)
        rowControl.furnitureObject = marketProductFurnitureObject
    end
end
function ZO_HousingFurnitureProducts_Keyboard:GetCategoryTreeData()
    return SHARED_FURNITURE:GetMarketProductCategoryTreeData()
end
function ZO_HousingFurnitureProducts_Keyboard:GetNoItemText()
    if SHARED_FURNITURE:AreThereMarketProducts() then
        return GetString(SI_HOUSING_FURNITURE_NO_SEARCH_RESULTS)
    else
        return GetString(SI_HOUSING_FURNITURE_NO_MARKET_PRODUCTS)
    end
end