Back to Home

ESO Lua File v101044

ingame/housetours/housetoursdata.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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
local g_localPlayerDisplayName = GetDisplayName()
-- House Listing Base Data
ZO_HouseToursListingData_Base = ZO_InitializingObject:Subclass()
function ZO_HouseToursListingData_Base:GetCollectibleData()
    local collectibleId = self:GetCollectibleId()
    return ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
end
function ZO_HouseToursListingData_Base:GetHouseName()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        local houseName = collectibleData:GetName()
        return houseName
    end
    return ""
end
function ZO_HouseToursListingData_Base:GetFormattedHouseName()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:GetFormattedName()
    end
    return ""
end
function ZO_HouseToursListingData_Base:GetFormattedNickname()
    local nickname = self:GetNickname()
    if nickname ~= "" then
        return ZO_CachedStrFormat(SI_TOOLTIP_COLLECTIBLE_NICKNAME, nickname)
    else
        return ""
    end
end
function ZO_HouseToursListingData_Base:GetBackgroundImage()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        if IsInGamepadPreferredMode() then
            return collectibleData:GetGamepadBackgroundImage()
        else
            return collectibleData:GetKeyboardBackgroundImage()
        end
    end
end
function ZO_HouseToursListingData_Base:GetFormattedOwnerDisplayName()
end
function ZO_HouseToursListingData_Base:GetCollectibleIcon()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:GetIcon()
    end
end
function ZO_HouseToursListingData_Base:GetFormattedTagsText()
    local tags = self:GetTags()
    return ZO_FormatHouseToursTagsText(tags)
end
function ZO_HouseToursListingData_Base:GetHouseId()
    if not self.houseId then
        local collectibleData = self:GetCollectibleData()
        self.houseId = collectibleData and collectibleData:GetReferenceId() or 0
    end
    return self.houseId
end
function ZO_HouseToursListingData_Base:GetHouseLink()
end
ZO_HouseToursListingData_Base.Equals = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.GetCollectibleId = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.GetFurnitureCount = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.GetTags = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.GetNickname = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.GetOwnerDisplayName = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
ZO_HouseToursListingData_Base.IsListed = ZO_HouseToursListingData_Base:MUST_IMPLEMENT()
-- House Listing Search Data
ZO_HouseToursListingSearchData = ZO_HouseToursListingData_Base:Subclass()
function ZO_HouseToursListingSearchData:Initialize(listingType, listingIndex)
    self.listingType = listingType
    self.listingIndex = listingIndex
end
function ZO_HouseToursListingSearchData:Equals(otherListingSearchData)
    return self:GetHouseId() == otherListingSearchData:GetHouseId()
       and self:GetOwnerDisplayName() == otherListingSearchData:GetOwnerDisplayName()
end
function ZO_HouseToursListingSearchData:GetListingType()
    return self.listingType
end
function ZO_HouseToursListingSearchData:GetListingIndex()
    return self.listingIndex
end
function ZO_HouseToursListingSearchData:GetCollectibleId()
    return GetHouseToursListingCollectibleIdByIndex(self.listingType, self.listingIndex)
end
function ZO_HouseToursListingSearchData:GetFurnitureCount()
    return GetHouseToursListingFurnitureCountByIndex(self.listingType, self.listingIndex)
end
function ZO_HouseToursListingSearchData:GetTags()
    return { GetHouseToursListingTagsByIndex(self.listingType, self.listingIndex) }
end
function ZO_HouseToursListingSearchData:GetNickname()
    local nickname = GetHouseToursListingNicknameByIndex(self.listingType, self.listingIndex)
    --If there is no nickname, try to grab the default nickname for the house instead
    if nickname == "" then
        local collectibleData = self:GetCollectibleData()
        if collectibleData then
            nickname = collectibleData:GetDefaultNickname()
        end
    end
    return nickname
end
function ZO_HouseToursListingSearchData:GetOwnerDisplayName()
    return GetHouseToursListingOwnerDisplayNameByIndex(self.listingType, self.listingIndex)
end
function ZO_HouseToursListingSearchData:IsOwnedByLocalPlayer()
    return self:GetOwnerDisplayName() == GetDisplayName()
end
function ZO_HouseToursListingSearchData:IsOwnedByFriend()
    return IsFriend(self:GetOwnerDisplayName())
end
function ZO_HouseToursListingSearchData:IsOwnedByGuildMember()
    local ownerDisplayName = self:GetOwnerDisplayName()
    return ownerDisplayName ~= g_localPlayerDisplayName and IsGuildMate(ownerDisplayName)
end
function ZO_HouseToursListingSearchData:CanFavorite()
    return not self:IsOwnedByLocalPlayer()
end
function ZO_HouseToursListingSearchData:IsListed()
end
function ZO_HouseToursListingSearchData:CanReport()
    return not self:IsOwnedByLocalPlayer() and self:IsListed()
end
function ZO_HouseToursListingSearchData:IsFavorite()
end
function ZO_HouseToursListingSearchData:RequestAddFavorite()
    RequestUpdateHouseToursListingFavoriteStatusByIndex(self:GetListingType(), self:GetListingIndex(), HOUSE_TOURS_FAVORITE_OPERATION_TYPE_CREATE)
end
function ZO_HouseToursListingSearchData:RequestRemoveFavorite()
    RequestUpdateHouseToursListingFavoriteStatusByIndex(self:GetListingType(), self:GetListingIndex(), HOUSE_TOURS_FAVORITE_OPERATION_TYPE_DELETE)
end
-- House Player Listing Data
ZO_HouseToursPlayerListingData = ZO_HouseToursListingData_Base:Subclass()
function ZO_HouseToursPlayerListingData:Initialize(collectibleId)
    self.collectibleId = collectibleId
end
function ZO_HouseToursPlayerListingData:GetCollectibleId()
    return self.collectibleId
end
function ZO_HouseToursPlayerListingData:GetFurnitureCount()
    local houseId = self:GetHouseId()
    return GetHouseFurnitureCount(houseId)
end
function ZO_HouseToursPlayerListingData:GetTags()
end
function ZO_HouseToursPlayerListingData:GetNickname()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:GetNickname()
    end
    return ""
end
function ZO_HouseToursPlayerListingData:GetDefaultNickname()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:GetDefaultNickname()
    end
    return ""
end
function ZO_HouseToursPlayerListingData:GetOwnerDisplayName()
    return GetDisplayName()
end
function ZO_HouseToursPlayerListingData:GetNumRecommendations()
end
function ZO_HouseToursPlayerListingData:IsListed()
    return IsHouseListed(self:GetHouseId())
end
do
    local lockReasonTextInvalidPermissions = nil
    function ZO_HouseToursPlayerListingData:GetLockReasonText()
        local lockReasonText = nil
        if not self:IsListed() then
            if not self:HasValidPermissions() then
                -- If we get here, the default visitor access is set to something that can't be listed.
                if not lockReasonTextInvalidPermissions then
                    local allowedDefaultAcccessSettingStrings = {}
                    local allDefaultAccessSettings = HOUSE_SETTINGS_MANAGER:GetAllDefaultAccessSettings()
                    -- Generate a comma separated list of all of the allowed default visitor access values.
                    for accessSetting = HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_ITERATION_BEGIN, HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_ITERATION_END do
                        if IsHouseDefaultAccessSettingValidForHouseToursListing(accessSetting) then
                            table.insert(allowedDefaultAcccessSettingStrings, allDefaultAccessSettings[accessSetting])
                        end
                    end
                    -- Cache the "Invalid Permissions" Lock Reason text.
                    local allowedSettingsText = ZO_GenerateCommaSeparatedListWithOr(allowedDefaultAcccessSettingStrings)
                    lockReasonTextInvalidPermissions = zo_strformat(SI_HOUSE_TOURS_SUBMIT_LOCK_REASON_VISITOR_ACCESS, allowedSettingsText)
                end
                lockReasonText = lockReasonTextInvalidPermissions
            end
        end
        return lockReasonText
    end
end
function ZO_HouseToursPlayerListingData:HasValidPermissions()
    if not self:IsListed() then
        local accessSetting = HOUSE_SETTINGS_MANAGER:GetDefaultHousingPermission(self:GetHouseId())
        return IsHouseDefaultAccessSettingValidForHouseToursListing(accessSetting)
    end
    return true
end
function ZO_HouseToursPlayerListingData:IsPrimaryResidence()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:IsPrimaryResidence()
    end
    return false
end
function ZO_HouseToursPlayerListingData:IsCollectibleFavorite()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:IsFavorite()
    end
    return false
end
function ZO_HouseToursPlayerListingData:GetCollectibleSortOrder()
    local collectibleData = self:GetCollectibleData()
    if collectibleData then
        return collectibleData:GetSortOrder()
    end
    return 0
end
function ZO_HouseToursPlayerListingData:CompareTo(otherPlayerListingData)
    local isListed = self:IsListed()
    local otherIsListed = otherPlayerListingData:IsListed()
    if isListed ~= otherIsListed then
        return isListed
    end
    local isPrimaryResidence = self:IsPrimaryResidence()
    local otherIsPrimaryResidence = otherPlayerListingData:IsPrimaryResidence()
    if isPrimaryResidence ~= otherIsPrimaryResidence then
        return isPrimaryResidence
    end
    local isFavorite = self:IsCollectibleFavorite()
    local otherIsFavorite = otherPlayerListingData:IsCollectibleFavorite()
    if isFavorite ~= otherIsFavorite then
        return isFavorite
    end
    local sortOrder = self:GetCollectibleSortOrder()
    local otherSortOrder = otherPlayerListingData:GetCollectibleSortOrder()
    if sortOrder ~= otherSortOrder then
        return sortOrder < otherSortOrder
    else
        return self:GetHouseName() < otherPlayerListingData:GetHouseName()
    end
end
function ZO_HouseToursPlayerListingData:Equals(otherPlayerListingData)
    return self.collectibleId == otherPlayerListingData:GetCollectibleId()
end
-- Accepts a table containing zero or more House Tours Tag enum ids.
-- Returns either the "None" string, if no tags are specified, or a comma separated string of the tags in alphabetical order.
    if tags and #tags > 0 then
        -- Construct a table containing the localized name of each tag.
        local tagStrings = {zo_getEnumStrings("SI_HOUSETOURLISTINGTAG", unpack(tags))}
        -- Sort the tag names alphabetically.
        table.sort(tagStrings)
        -- Return the sorted tag names as a comma separated string.
        return ZO_GenerateCommaSeparatedListWithoutAnd(tagStrings)
    else
        --If there are no tags, return a special string indicating that
        return GetString(SI_HOUSE_TOURS_LISTING_TAGS_NONE)
    end
end
    if GetHouseToursStatus() ~= HOUSE_TOURS_STATUS_READY then
        return false, GetString(SI_HOUSE_TOURS_TOOLTIP_DISABLED)
    end
    if not CanJumpToHouseFromCurrentLocation() then
        return false, GetString(SI_HOUSE_TOURS_TOOLTIP_UNAVAILABLE_IN_ZONE)
    end
    return true
end