Back to Home

ESO Lua File v101038

internalingame/marketannouncement/marketannouncementmarketproduct_shared.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
173
174
175
176
177
178
179
180
181
ZO_MARKET_ANNOUNCEMENT_MARKET_PRODUCT_WIDTH = 1024
ZO_MARKET_ANNOUNCEMENT_MARKET_PRODUCT_HEIGHT = 512
ZO_MARKET_ANNOUNCEMENT_MARKET_PRODUCT_INFO_WIDTH = 350
ZO_MARKET_ANNOUNCEMENT_MARKET_PRODUCT_INFO_OFFSET_X = 20
local DESCRIPTION_TEXT_COLORS = {
    SELECTED_TEXT_COLOR = ZO_NORMAL_TEXT,
    UNSELECTED_TEXT_COLOR = ZO_ColorDef:New(GetInterfaceColor(INTERFACE_COLOR_TYPE_TEXT_COLORS, INTERFACE_TEXT_COLOR_GAMEPAD_CATEGORY_HEADER))
}
----
-- ZO_MarketAnnouncementMarketProduct_Shared
----
ZO_MarketAnnouncementMarketProduct_Shared = ZO_LargeSingleMarketProduct_Base:Subclass()
function ZO_MarketAnnouncementMarketProduct_Shared:New(...)
    return ZO_LargeSingleMarketProduct_Base.New(self, ...)
end
function ZO_MarketAnnouncementMarketProduct_Shared:Initialize(...)
    ZO_LargeSingleMarketProduct_Base.Initialize(self, ...)
end
function ZO_MarketAnnouncementMarketProduct_Shared:Show(...)
    ZO_LargeSingleMarketProduct_Base.Show(self, ...)
    local descriptionText = ""
    local description = self.productData:GetMarketProductDescription()
    local itemLink = GetMarketProductItemLink(self:GetId())
    if itemLink ~= "" then
        local hasAbility, _, abilityDescription = GetItemLinkOnUseAbilityInfo(itemLink)
        if hasAbility then
            abilityDescription = zo_strformat(SI_ITEM_FORMAT_STR_ON_USE, abilityDescription)
            if description ~= "" then
                descriptionText = string.format("%s\n\n%s", abilityDescription, description)
            else
                descriptionText = abilityDescription
            end
        end
    end
    if descriptionText == "" then
        descriptionText = description
    end
    self.descriptionText = descriptionText
    self.control.descriptionTextControl:SetText(self.descriptionText)
end
function ZO_MarketAnnouncementMarketProduct_Shared:SetOnInteractWithScrollCallback(onInteractWithScrollCallback)
end
function ZO_MarketAnnouncementMarketProduct_Shared:CallOnInteractWithScrollCallback()
    end
end
function ZO_MarketAnnouncementMarketProduct_Shared:UpdateProductStyle()
    ZO_LargeSingleMarketProduct_Base.UpdateProductStyle(self)
    local isFocused = self.isFocused
    if isFocused then
        self.control.descriptionTextControl:SetColor(DESCRIPTION_TEXT_COLORS.SELECTED_TEXT_COLOR:UnpackRGB())
        self.control.typeLabel:SetColor(DESCRIPTION_TEXT_COLORS.SELECTED_TEXT_COLOR:UnpackRGB())
    else
        self.control.descriptionTextControl:SetColor(DESCRIPTION_TEXT_COLORS.UNSELECTED_TEXT_COLOR:UnpackRGB())
        self.control.typeLabel:SetColor(DESCRIPTION_TEXT_COLORS.UNSELECTED_TEXT_COLOR:UnpackRGB())
    end
end
function ZO_MarketAnnouncementMarketProduct_Shared:GetBackground()
end
-- Market Announcements only show tiles in an available state, never as purchased or a "fail" condition
function ZO_MarketAnnouncementMarketProduct_Shared:IsPurchaseLocked()
    return false
end
function ZO_MarketAnnouncementMarketProduct_Shared:GetMarketProductDisplayState()
    return MARKET_PRODUCT_DISPLAY_STATE_NOT_PURCHASED
end
function ZO_MarketAnnouncementMarketProduct_Shared:GetMarketProductListingsForHouseTemplate(houseTemplateId, displayGroup)
    return { GetActiveAnnouncementMarketProductListingsForHouseTemplate(houseTemplateId) }
end
-- override of ZO_MarketProductBase:LayoutCostAndText
function ZO_MarketAnnouncementMarketProduct_Shared:LayoutCostAndText()
    -- layout the price labels
    local FOCUSED = true
end
function ZO_MarketAnnouncementMarketProduct_Shared:SetupTextCalloutAnchors()
    local control = self.control
    control.previousCost:ClearAnchors()
    control.cost:ClearAnchors()
    control.esoPlusCost:ClearAnchors()
    control.descriptionControl:ClearAnchors()
    local hasNormalCost = self:HasCost()
    if hasNormalCost then
        if self:IsOnSale() and not self:IsFree() then
            control.previousCost:SetAnchor(TOPLEFT, control.textCallout, BOTTOMLEFT)
            control.cost:SetAnchor(LEFT, control.previousCost, RIGHT, 10)
            control.descriptionControl:SetAnchor(TOPLEFT, control.previousCost, BOTTOMLEFT)
        elseif control.textCallout:IsControlHidden() then
            local VERTICAL_SPACING = 5
            if control.cost:IsControlHidden() then
                control.descriptionControl:SetAnchor(TOPLEFT, control.title, BOTTOMLEFT, ZO_MARKET_PRODUCT_CALLOUT_X_OFFSET, VERTICAL_SPACING) 
            else
                control.cost:SetAnchor(TOPLEFT, control.title, BOTTOMLEFT, ZO_MARKET_PRODUCT_CALLOUT_X_OFFSET, VERTICAL_SPACING)
                control.descriptionControl:SetAnchor(TOPLEFT, control.cost, BOTTOMLEFT)
            end
        else
            control.cost:SetAnchor(TOPLEFT, control.textCallout, BOTTOMLEFT)
            control.descriptionControl:SetAnchor(TOPLEFT, control.cost, BOTTOMLEFT)
        end
    end
    local hasEsoPlusCost = self:HasEsoPlusCost()
    if hasEsoPlusCost then
        if hasNormalCost then
            control.esoPlusCost:SetAnchor(BOTTOMLEFT, control.cost, BOTTOMRIGHT, 10)
        else
            if control.textCallout:IsControlHidden() then
                control.esoPlusCost:SetAnchor(TOPLEFT, control.title, BOTTOMLEFT, ZO_MARKET_PRODUCT_CALLOUT_X_OFFSET, VERTICAL_SPACING)
            else
                control.esoPlusCost:SetAnchor(TOPLEFT, control.textCallout, BOTTOMLEFT)
            end
            control.descriptionControl:SetAnchor(TOPLEFT, control.esoPlusCost, BOTTOMLEFT)
        end
    end
end
-- override of ZO_MarketProductBase:AnchorEsoPlusDealLabel()
function ZO_MarketAnnouncementMarketProduct_Shared:AnchorEsoPlusDealLabel()
    local control = self.control
    local esoPlusDealLabelControl = control.esoPlusDealLabelControl
    esoPlusDealLabelControl:ClearAnchors()
    -- anchor the left side to the right-most cost label
    -- AnchorEsoPlusDealLabel is only called if HasEsoPlusCost is true
    -- and the esoPlusCost is always the right-most label
    esoPlusDealLabelControl:SetAnchor(BOTTOMLEFT, control.esoPlusCost, BOTTOMRIGHT, 10, 0)
end
function ZO_MarketAnnouncementMarketProduct_Shared:GetDescriptionControl()
    return self.control.descriptionControl
end
function ZO_MarketAnnouncementMarketProduct_Shared:GetDescriptionTextControl()
    return self.control.descriptionTextControl
end
    control.typeLabel = control:GetNamedChild("Type")
    control.descriptionControl = control:GetNamedChild("ProductDescription")
    local scrollChild = control.descriptionControl:GetNamedChild("ScrollChild")
    control.descriptionTextControl = scrollChild:GetNamedChild("ProductDescriptionText")
end