Back to Home

ESO Lua File v100020

ingame/housingeditor/housesettings_manager.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
ZO_FURNITURE_SETTINGS =
{
    [HOUSE_PERMISSION_OPTIONS_CATEGORIES_SOCIAL_OPTIONS] = 
    {
        HOUSE_PERMISSION_OPTIONS_CATEGORIES_GENERAL,
        HOUSE_PERMISSION_OPTIONS_CATEGORIES_VISITORS,
        HOUSE_PERMISSION_OPTIONS_CATEGORIES_BANLIST,
        HOUSE_PERMISSION_OPTIONS_CATEGORIES_GUILD_VISITORS,
        HOUSE_PERMISSION_OPTIONS_CATEGORIES_GUILD_BANLIST,
    },
}
ZO_HOUSING_SETTINGS_CONTROL_DATA_PRIMARY_RESIDENCE = 1
ZO_HOUSING_SETTINGS_CONTROL_DATA_DEFAULT_ACCESS = 2
ZO_HOUSING_SETTINGS_CONTROL_DATA =
{
    -- Primary Residence
    [ZO_HOUSING_SETTINGS_CONTROL_DATA_PRIMARY_RESIDENCE] =
    {
        text = SI_HOUSING_FURNITURE_SETTINGS_GENERAL_PRIMARY_RESIDENCE_TEXT,
        buttonText = SI_HOUSING_FURNITURE_SETTINGS_GENERAL_PRIMARY_RESIDENCE_BUTTON_TEXT,
        tooltipFunction = function(...) return SYSTEMS:GetObject("furniture_settings"):ShowPrimaryResidenceTooltip(...) end,
        gamepadTemplate = "ZO_HousingPermissionsSettingsRow_Gamepad",
    },
    -- Default Visitor Access
    [ZO_HOUSING_SETTINGS_CONTROL_DATA_DEFAULT_ACCESS] =
    {
        text = SI_HOUSING_FURNITURE_SETTINGS_GENERAL_DEFAULT_ACCESS_TEXT,
        tooltipFunction = function(...) return SYSTEMS:GetObject("furniture_settings"):ShowDefaultAccessTooltip(...) end,
        gamepadTemplate = "ZO_GamepadHorizontalListRow",
    },
}
ZO_HOUSING_SETTINGS_LIST_ENTRY_SORT_KEYS =
{
    ["displayName"] = { },
    ["permissionPresetName"] = { tiebreaker = "displayName"},
}
ZO_HouseSettings_Manager = ZO_CallbackObject:Subclass()
function ZO_HouseSettings_Manager:New(...)
    local manager = ZO_CallbackObject.New(self)
    manager:Initialize(...)
    return manager
end
function ZO_HouseSettings_Manager:Initialize()
    self.applyToAllHousesFlag = true
    self.defaultPreset = HOUSE_PERMISSION_PRESET_SETTING_VISITOR
    self.permissionPresets = {}
    self.defaultAccessSettings = {}
    for i = HOUSE_PERMISSION_PRESET_SETTING_MIN_VALUE, HOUSE_PERMISSION_PRESET_SETTING_MAX_VALUE do
        local presetName = GetString("SI_HOUSEPERMISSIONPRESETSETTING", i)
        self.permissionPresets[i] = presetName
    end
    for i = HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_MIN_VALUE, HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_MAX_VALUE do
        local presetName = GetString("SI_HOUSEPERMISSIONDEFAULTACCESSSETTING", i)
        self.defaultAccessSettings[i] = presetName
    end
end
function ZO_HouseSettings_Manager:GetHousingPresetIndex(presetName)
    for i, name in pairs(self.permissionPresets) do
        if name == presetName then
            return i
        end
    end
end
function ZO_HouseSettings_Manager:GetPresetNameFromPermissionData(houseId, userGroup, index)
    local presetIndex = GetHousingPermissionPresetType(houseId, userGroup, index)
    return GetString("SI_HOUSEPERMISSIONPRESETSETTING", presetIndex)
end
function ZO_HouseSettings_Manager:GetDefaultHousingPermission(houseId)
    local hasAccess = DoesHousingUserGroupHaveAccess(houseId, HOUSE_PERMISSION_USER_GROUP_GENERAL, 1)
    local preset = GetHousingPermissionPresetType(houseId, HOUSE_PERMISSION_USER_GROUP_GENERAL, 1)
    local isMarkedForDelete = IsHousingPermissionMarkedForDelete(houseId, HOUSE_PERMISSION_USER_GROUP_GENERAL, 1)
    if hasAccess and not isMarkedForDelete then
        if preset == HOUSE_PERMISSION_PRESET_SETTING_DECORATOR then
            return HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_DECORATOR
        elseif preset == HOUSE_PERMISSION_PRESET_SETTING_VISITOR then
            return HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_VISITOR
        end
    end
    return HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_NO_ACCESS
end
function ZO_HouseSettings_Manager:GetHousingPermissionsFromDefaultAccess(defaultAccessType)
    local canAccess, preset
    if defaultAccessType == HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_NO_ACCESS then
        canAccess = false
        preset = HOUSE_PERMISSION_PRESET_SETTING_INVALID
    elseif defaultAccessType == HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_VISITOR then
        canAccess = true
        preset = HOUSE_PERMISSION_PRESET_SETTING_VISITOR
    elseif defaultAccessType == HOUSE_PERMISSION_DEFAULT_ACCESS_SETTING_DECORATOR then
        canAccess = true
        preset = HOUSE_PERMISSION_PRESET_SETTING_DECORATOR
    end
    return canAccess, preset
end
function ZO_HouseSettings_Manager:SetupCopyPermissionsCombobox(dropdown, currentHouse, callback)
    dropdown:SetSelectedItemText(GetString(SI_DIALOG_COPY_HOUSING_PERMISSION_DEFAULT_CHOICE))
    local currentIndex = 1
    local allHouses = COLLECTIONS_BOOK_SINGLETON:GetOwnedHouses()
    for collectibleId, houseData in pairs(allHouses) do
        if houseData.houseId ~= currentHouse then
            local name = GetCollectibleName(collectibleId)
            local nickname = GetCollectibleNickname(collectibleId)
            local newEntry = dropdown:CreateItemEntry(zo_strformat(SI_COLLECTIONS_HOUSING_DISPLAY_NAME_FORMAT, name, nickname), callback)
            newEntry.houseId = houseData.houseId
            newEntry.houseIndex = currentIndex
            dropdown:AddItem(newEntry)
            currentIndex = currentIndex + 1
        end
    end
end
function ZO_HouseSettings_Manager:GetDefaultPreset()
    return self.defaultPreset
end
function ZO_HouseSettings_Manager:GetAllPermissionPresets()
    return self.permissionPresets
end
function ZO_HouseSettings_Manager:GetAllDefaultAccessSettings()
    return self.defaultAccessSettings
end
function ZO_HouseSettings_Manager:GetApplyToAllHousesFlag()
    return self.applyToAllHousesFlag
end
function ZO_HouseSettings_Manager:SetApplyToAllHousesFlag(applyToAllHousesFlag)
    self.applyToAllHousesFlag = applyToAllHousesFlag
end
HOUSE_SETTINGS_MANAGER = ZO_HouseSettings_Manager:New()