- common/globals/platformstoredialogs.lua:2 --
ZO_Dialogs_RegisterCustomDialog("BUY_CROWNS_FROM_PLATFORM_STORE",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_OPEN_STORE_TO_BUY_CROWNS_TITLE,
},
mainText =
{
text = SI_OPEN_STORE_BUY_CROWNS_TEXT,
},
buttons =
{
{
text = function()
return zo_strformat(SI_OPEN_FIRST_PARTY_STORE_KEYBIND, ZO_GetPlatformStoreName())
end,
callback = function(dialog)
ShowPlatformESOCrownPacksUI()
end
},
{
text = SI_DIALOG_EXIT,
},
},
})
- common/zo_colorpicker/gamepad/zo_colorpicker_gamepad.lua:67 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_COLOR_PICKER",
{
customControl = control,
title =
{
text = SI_WINDOW_TITLE_COLOR_PICKER,
},
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
allowShowOnNextScene = true,
dontEndInWorldInteractions = true,
},
canQueue = true,
blockDialogReleaseOnPress = true,
blockDirectionalInput = true,
setup = function() self:OnDialogShowing() end,
finishedCallback = OnDialogReleased,
noChoiceCallback = OnDialogReleased,
additionalInputNarrationFunction = function()
local narrationData = {}
if ZO_Keybindings_ShouldShowGamepadKeybind() then
--Get the narration data for navigating the color wheel
local colorNarrationData =
{
name = GetString(SI_SCREEN_NARRATION_COLOR_PICKER_CHANGE_COLOR_NARRATION),
--The gamepad keybind for choosing color isn't a real keybind so just use the key that gives us the narration we want here
keybindName = ZO_Keybindings_GetNarrationStringFromKeys(KEY_GAMEPAD_LEFT_STICK, KEY_INVALID, KEY_INVALID, KEY_INVALID, KEY_INVALID),
enabled = true,
}
table.insert(narrationData, colorNarrationData)
--Get the narration data for the saturation slider
local saturationNarrationData =
{
name = GetString(SI_SCREEN_NARRATION_COLOR_PICKER_CHANGE_SATURATION_NARRATION),
--The gamepad keybind for choosing saturation isn't a real keybind so just use the key that gives us the narration we want here
keybindName = ZO_Keybindings_GetNarrationStringFromKeys(KEY_GAMEPAD_RIGHT_STICK, KEY_INVALID, KEY_INVALID, KEY_INVALID, KEY_INVALID),
enabled = true,
}
table.insert(narrationData, saturationNarrationData)
else
--Get the narration data for navigating the color wheel
local NO_NAME = nil
ZO_CombineNumericallyIndexedTables(narrationData, ZO_GetCombinedDirectionalInputNarrationData(NO_NAME, NO_NAME, NO_NAME, GetString(SI_SCREEN_NARRATION_COLOR_PICKER_CHANGE_COLOR_NARRATION)))
--Get the narration data for the saturation slider
local saturationUpNarrationData =
{
keybindName = ZO_Keybindings_GetHighestPriorityNarrationStringFromAction("UI_SHORTCUT_RIGHT_STICK_UP") or GetString(SI_ACTION_IS_NOT_BOUND),
enabled = true,
}
table.insert(narrationData, saturationUpNarrationData)
local saturationDownNarrationData =
{
name = GetString(SI_SCREEN_NARRATION_COLOR_PICKER_CHANGE_SATURATION_NARRATION),
keybindName = ZO_Keybindings_GetHighestPriorityNarrationStringFromAction("UI_SHORTCUT_RIGHT_STICK_DOWN") or GetString(SI_ACTION_IS_NOT_BOUND),
enabled = true,
}
table.insert(narrationData, saturationDownNarrationData)
end
return narrationData
end,
buttons =
{
[1] =
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_ACCEPT,
clickSound = SOUNDS.DIALOG_ACCEPT,
alignment = KEYBIND_STRIP_ALIGN_CENTER,
callback = function() self:Confirm() end,
},
[2] =
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
clickSound = SOUNDS.DIALOG_DECLINE,
alignment = KEYBIND_STRIP_ALIGN_CENTER,
callback = function() self:Cancel() end,
},
}
})
- common/zo_colorpicker/keyboard/zo_colorpicker_keyboard.lua:45 --
ZO_Dialogs_RegisterCustomDialog("COLOR_PICKER",
{
customControl = control,
title =
{
text = SI_WINDOW_TITLE_COLOR_PICKER,
},
buttons =
{
{
control = control:GetNamedChild("Accept"),
text = SI_DIALOG_ACCEPT,
keybind = "DIALOG_PRIMARY",
callback = function() self:Confirm() end,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
keybind = "DIALOG_NEGATIVE",
callback = function() self:Cancel() end,
},
}
})
- ingame/achievements/gamepad/achievements_gamepad.lua:410 --
ZO_Dialogs_RegisterCustomDialog("ACHIEVEMENTS_OPTIONS_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_ACHIEVEMENTS_OPTIONS,
},
setup = function(dialog)
dialog:setupFunc()
end,
parametricList =
{
{
template = "ZO_GamepadMenuEntryTemplate",
header = SI_GAMEPAD_ITEM_SETS_BOOK_OPTIONS_FILTERS,
entryData = showAllAchievements,
},
{
template = "ZO_GamepadMenuEntryTemplate",
entryData = showEarnedAchievements,
},
{
template = "ZO_GamepadMenuEntryTemplate",
entryData = showUnearnedAchievements,
},
{
template = "ZO_GamepadMenuEntryTemplate",
header = GetString(SI_GAMEPAD_ITEM_SETS_BOOK_OPTIONS_ACTIONS),
entryData = linkAchievement,
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
if data.callback then
data.callback(data)
end
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/antiquities/antiquityjournaldialogs.lua:3 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_ABANDON_ANTIQUITY_SCRYING_PROGRESS",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_ANTIQUITY_CONFIRM_ABANDON_SCRYING_PROGRESS_TITLE,
},
mainText =
{
text = SI_ANTIQUITY_CONFIRM_ABANDON_SCRYING_PROGRESS_PROMPT,
},
buttons =
{
-- Confirm Button
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_CONFIRM),
callback = function(dialog)
local data = dialog.data
local antiquityId = data.antiquityId
RequestAbandonAntiquity(antiquityId)
end,
},
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/antiquities/gamepad/antiquityjournal_gamepad.lua:268 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_ANTIQUITY_CATEGORY_FILTER_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_ANTIQUITY_CATEGORY_OPTIONS_HEADER
},
setup = function(dialog)
local parametricListEntries = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricListEntries)
dialog.dropdowns = {}
local filterDropdown =
{
template = "ZO_GamepadDropdownItem",
entryData = self:GetOrCreateFilterOptionsDropdownEntryData(),
}
table.insert(parametricListEntries, filterDropdown)
dialog.setupFunc(dialog)
end,
parametricList = {}, -- Generated Dynamically
blockDialogReleaseOnPress = true, -- We need to manually control when we release so we can use the select keybind to activate entries
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.dropdownEntry then
local dropdown = targetControl.dropdown
dropdown:Activate()
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_ANTIQUITY_CATEGORY_FILTER_OPTIONS")
end,
},
},
noChoiceCallback = OnReleaseDialog,
})
- ingame/antiquities/gamepad/antiquityjournal_gamepad.lua:989 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SCRYABLE_ANTIQUITY_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_SCRYABLE_ANTIQUITY_OPTIONS_HEADER
},
setup = function(dialog, allActions)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
for i, action in ipairs(allActions) do
local entryData = ZO_GamepadEntryData:New(action.text)
entryData.action = action
entryData.setup = action.setup or ZO_SharedGamepadEntry_OnSetup
entryData.callback = action.callback
local listItem =
{
template = action.template or "ZO_GamepadItemEntryTemplate",
entryData = entryData,
header = action.header,
}
table.insert(parametricList, listItem)
end
dialog:setupFunc()
end,
parametricList = {}, -- Generated Dynamically
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_SCRYABLE_ANTIQUITY_OPTIONS")
end,
},
},
noChoiceCallback = function(dialog)
local parametricList = dialog.info.parametricList
for i, entry in ipairs(parametricList) do
if entry.entryData.action.isDropdown then
local control = dialog.entryList:GetControlFromData(entry.entryData)
if control then
control.dropdown:Deactivate()
end
end
end
end,
})
- ingame/armory/gamepad/armory_gamepad.lua:611 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog, data)
self.noViolations = nil
self.selectedName = nil
local buildData
local selectedData
if self.mode == ARMORY_OVERVIEW_MODE then
selectedData = self.buildList:GetTargetData()
buildData = selectedData.data
elseif self.mode == ARMORY_VIEW_BUILD_MODE then
buildData = self.selectedBuildData
selectedData = self.buildDetailsList:GetTargetData()
end
if buildData then
UpdateSelectedName(buildData:GetName())
end
dialog.buildData = buildData
dialog.currentList = data.currentList
dialog.selectedData = selectedData
self.armoryBuildIconPicker:SetupIconPickerForArmoryBuild(buildData)
dialog:setupFunc()
end,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_ARMORY_BUILD_DIALOG_TITLE,
},
parametricList =
{
-- name edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData =
{
nameField = true,
textChangedCallback = function(control)
local newName = control:GetText()
if self.selectedName ~= newName then
UpdateSelectedName(newName)
ZO_GenericParametricListGamepadDialogTemplate_RefreshVisibleEntries(parametricDialog)
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
if self.selectedName == "" then
control.editBoxControl:SetDefaultText(GetString(SI_ARMORY_BUILD_DIALOG_NAME_LABEL))
end
control.editBoxControl:SetMaxInputChars(MAX_ARMORY_BUILD_NAME_LENGTH)
control.editBoxControl:SetText(self.selectedName)
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups()
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_GAMEPAD_ARMORY_CHANGE_ICON),
setup = function(control, data, ...)
data:ClearIcons()
data:AddIcon("EsoUI/Art/Guild/Gamepad/gp_guild_options_changeIcon.dds")
ZO_SharedGamepadEntry_OnSetup(control, data, ...)
end,
callback = function(dialog)
dialog.entryList:Deactivate()
dialog:Deactivate()
self:SetChangeArmoryBuildIconPickerEnabled(true)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
end,
},
},
},
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
local targetControl = dialog.entryList:GetTargetControl()
if newSelectedData.nameField and targetControl then
local FORCE_UPDATE = true
UpdateSelectedName(targetControl.editBoxControl:GetText(), FORCE_UPDATE)
SCENE_MANAGER:RemoveFragment(ARMORY_BUILD_ICON_PICKER_FRAGMENT)
SCENE_MANAGER:RemoveFragment(GAMEPAD_NAV_QUADRANT_2_3_BACKGROUND_FRAGMENT)
else
ZO_GenericGamepadDialog_HideTooltip(parametricDialog)
SCENE_MANAGER:AddFragment(ARMORY_BUILD_ICON_PICKER_FRAGMENT)
SCENE_MANAGER:AddFragment(GAMEPAD_NAV_QUADRANT_2_3_BACKGROUND_FRAGMENT)
self.armoryBuildIconPicker:ScrollToSelectedData()
self.armoryBuildIconPicker:RefreshGridList()
end
end,
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = function(dialog)
if self.armoryBuildIconPicker:IsActive() then
return GetString(SI_GAMEPAD_BACK_OPTION)
else
return GetString(SI_DIALOG_CLOSE)
end
end,
callback = function(dialog)
if self.armoryBuildIconPicker:IsActive() then
self:SetChangeArmoryBuildIconPickerEnabled(false)
dialog:Activate()
dialog.entryList:Activate()
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
else
if #self.violations == 0 then
dialog.buildData:SetName(self.selectedName)
end
dialog.buildData:SetIconIndex(self.armoryBuildIconPicker:GetSelectedArmoryBuildIconIndex())
SCENE_MANAGER:RemoveFragment(ARMORY_BUILD_ICON_PICKER_FRAGMENT)
SCENE_MANAGER:RemoveFragment(GAMEPAD_NAV_QUADRANT_2_3_BACKGROUND_FRAGMENT)
self:RefreshTargetTooltip(dialog.currentList, dialog.selectedData)
self:RefreshList()
ReleaseDialog()
end
end,
},
-- Select Button (used for entering name)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
if self.armoryBuildIconPicker:IsActive() then
self.armoryBuildIconPicker:OnArmoryBuildIconPickerGridListEntryClicked()
else
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end
end,
enabled = function()
local targetData = parametricDialog.entryList:GetTargetData()
local enabled = true
if targetData.finishedSelector then
enabled = self.noViolations
end
return enabled
end,
},
},
noChoiceCallback = function(dialog)
if #self.violations == 0 then
dialog.buildData:SetName(self.selectedName)
end
dialog.buildData:SetIconIndex(self.armoryBuildIconPicker:GetSelectedArmoryBuildIconIndex())
SCENE_MANAGER:RemoveFragment(ARMORY_BUILD_ICON_PICKER_FRAGMENT)
SCENE_MANAGER:RemoveFragment(GAMEPAD_NAV_QUADRANT_2_3_BACKGROUND_FRAGMENT)
self:RefreshTargetTooltip(dialog.currentList, dialog.selectedData)
self:RefreshList()
ReleaseDialog()
end,
})
- ingame/armory/keyboard/armorydialogs_keyboard.lua:42 --
ZO_Dialogs_RegisterCustomDialog("ArmorySettingsDialog",
{
title =
{
text = SI_ARMORY_BUILD_DIALOG_TITLE,
},
mainText =
{
text = "",
},
setup = function(dialog, data)
--Set up the rules for the edit box
local editControl = dialog:GetNamedChild("ContentContainerEditBox")
editControl:SetTextType(TEXT_TYPE_ALL)
editControl:SetMaxInputChars(MAX_ARMORY_BUILD_NAME_LENGTH)
self.object:SetFocusedBuildData(data.selectedBuildData)
self.object.armoryBuildIconPicker:ScrollToSelectedData()
self.object.armoryBuildIconPicker:RefreshGridList()
end,
customControl = self,
buttons =
{
{
requiresTextInput = true,
noReleaseOnClick = true,
control = self:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
callback = function(dialog)
--Only close the dialog if the changes were saved successfully
if dialog.object:SavePendingChanges() then
if dialog.data.confirmCallback then
dialog.data:confirmCallback()
end
ZO_Dialogs_ReleaseDialog("ArmorySettingsDialog")
end
end
},
}
})
- ingame/banking/gamepad/bankingcommon_gamepad.lua:107 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_BANK_SEARCH_FILTERS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog, data)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_GAMEPAD_GUILD_BROWSER_FILTERS_DIALOG_HEADER))
dialog.dropdowns = {}
dialog.selectedSortType = dialog.selectedSortType or ITEM_LIST_SORT_TYPE_ITERATION_BEGIN
local DONT_LIMIT_NUM_ENTRIES = nil
dialog:setupFunc(DONT_LIMIT_NUM_ENTRIES, data)
end,
parametricList =
{
{
header = GetString(SI_GAMEPAD_BANK_SORT_TYPE_HEADER),
template = "ZO_GamepadDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialogData = data and data.dialog and data.dialog.data
local withdrawList = dialogData.bankObject and dialogData.bankObject.withdrawList
local dropdown = control.dropdown
table.insert(data.dialog.dropdowns, dropdown)
dropdown:SetNormalColor(ZO_GAMEPAD_COMPONENT_COLORS.UNSELECTED_INACTIVE:UnpackRGB())
dropdown:SetHighlightedColor(ZO_GAMEPAD_COMPONENT_COLORS.SELECTED_ACTIVE:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown:SetSortsItems(false)
dropdown:ClearItems()
local function OnSelectedCallback(dropdown, entryText, entry)
withdrawList.currentSortType = entry.sortType
end
for i = ITEM_LIST_SORT_TYPE_ITERATION_BEGIN, ITEM_LIST_SORT_TYPE_ITERATION_END do
local entryText = ZO_CachedStrFormat(SI_GAMEPAD_BANK_FILTER_ENTRY_FORMATTER, GetString("SI_ITEMLISTSORTTYPE", i))
local newEntry = control.dropdown:CreateItemEntry(entryText, OnSelectedCallback)
newEntry.sortType = i
control.dropdown:AddItem(newEntry)
end
dropdown:UpdateItems()
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(data.dialog, dropdown)
control.dropdown:SelectItemByIndex(withdrawList.currentSortType)
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
targetControl.dropdown:Activate()
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
{
header = GetString(SI_GAMEPAD_BANK_SORT_ORDER_HEADER),
template = "ZO_GamepadDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
local dialogData = dialog and dialog.data
local withdrawList = dialogData.bankObject and dialogData.bankObject.withdrawList
local dropdown = control.dropdown
table.insert(dialog.dropdowns, dropdown)
dropdown:SetNormalColor(ZO_GAMEPAD_COMPONENT_COLORS.UNSELECTED_INACTIVE:UnpackRGB())
dropdown:SetHighlightedColor(ZO_GAMEPAD_COMPONENT_COLORS.SELECTED_ACTIVE:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown:SetSortsItems(false)
dropdown:ClearItems()
local function OnSelectedCallback(dropdown, entryText, entry)
withdrawList.currentSortOrder = entry.sortOrder
withdrawList.currentSortOrderIndex = entry.index
end
local sortUpEntry = control.dropdown:CreateItemEntry(GetString(SI_GAMEPAD_BANK_SORT_ORDER_UP_TEXT), OnSelectedCallback)
sortUpEntry.sortOrder = ZO_SORT_ORDER_UP
sortUpEntry.index = 1
control.dropdown:AddItem(sortUpEntry)
local sortDownEntry = control.dropdown:CreateItemEntry(GetString(SI_GAMEPAD_BANK_SORT_ORDER_DOWN_TEXT), OnSelectedCallback)
sortDownEntry.sortOrder = ZO_SORT_ORDER_DOWN
sortDownEntry.index = 2
control.dropdown:AddItem(sortDownEntry)
dropdown:UpdateItems()
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(dialog, dropdown)
control.dropdown:SelectItemByIndex(withdrawList.currentSortOrderIndex)
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
targetControl.dropdown:Activate()
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
{
header = GetString(SI_GAMEPAD_BANK_FILTER_HEADER),
template = "ZO_GamepadMultiSelectionDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
local dialogData = dialog and dialog.data
local withdrawList = dialogData.bankObject and dialogData.bankObject.withdrawList
local dropdown = control.dropdown
table.insert(dialog.dropdowns, dropdown)
dropdown:SetNormalColor(ZO_GAMEPAD_COMPONENT_COLORS.UNSELECTED_INACTIVE:UnpackRGB())
dropdown:SetHighlightedColor(ZO_GAMEPAD_COMPONENT_COLORS.SELECTED_ACTIVE:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown:SetSortsItems(false)
dropdown:SetNoSelectionText(GetString(SI_GAMEPAD_BANK_FILTER_DEFAULT_TEXT))
dropdown:SetMultiSelectionTextFormatter(GetString(SI_GAMEPAD_BANK_FILTER_DROPDOWN_TEXT))
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(dialog, dropdown)
local dropdownData = ZO_MultiSelection_ComboBox_Data_Gamepad:New()
dropdownData:Clear()
for _, filterType in ipairs(BANK_SEARCH_FILTERS) do
local newEntry = ZO_ComboBox_Base:CreateItemEntry(ZO_CachedStrFormat(SI_GAMEPAD_BANK_FILTER_ENTRY_FORMATTER, GetString("SI_ITEMFILTERTYPE", filterType)))
newEntry.category = filterType
newEntry.callback = function(control, name, item, isSelected)
if isSelected then
withdrawList.filterCategories[item.category] = item.category
else
withdrawList.filterCategories[item.category] = nil
end
end
dropdownData:AddItem(newEntry)
if withdrawList.filterCategories[filterType] then
dropdownData:ToggleItemSelected(newEntry)
end
end
dropdown:LoadData(dropdownData)
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
targetControl.dropdown:Activate()
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
local dialogData = dialog.data
local withdrawList = dialogData.bankObject and dialogData.bankObject.withdrawList
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_BANK_SEARCH_FILTERS")
withdrawList:RefreshList()
end,
},
{
keybind = "DIALOG_RESET",
text = SI_GUILD_BROWSER_RESET_FILTERS_KEYBIND,
enabled = function(dialog)
local dialogData = dialog.data
return not dialogData.bankObject:AreFiltersSetToDefault()
end,
callback = function(dialog)
local dialogData = dialog and dialog.data
dialogData.bankObject:ResetFilters()
dialog.info.setup(dialog)
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- ingame/banking/gamepad/banking_gamepad.lua:765 --
ZO_Dialogs_RegisterCustomDialog("BUY_BANK_SPACE_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_PROMPT_TITLE_BUY_BANK_SPACE,
},
mainText =
{
text = zo_strformat(SI_BUY_BANK_SPACE, NUM_BANK_SLOTS_PER_UPGRADE),
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_DECLINE,
callback = function() self:Hide() end
},
{
keybind = "DIALOG_PRIMARY",
text = function()
local costString = ZO_CurrencyControl_FormatCurrency(self.cost)
return zo_strformat(SI_GAMEPAD_BANK_UPGRADE_ACCEPT, costString, ZO_Currency_GetGamepadFormattedCurrencyIcon(CURT_MONEY))
end,
callback = function(dialog)
BuyBankSpace()
ZO_AlertNoSuppression(UI_ALERT_CATEGORY_ALERT, nil, GetString(SI_GAMEPAD_BANK_UPGRADED_ALERT))
self:Hide()
end,
}
}
})
- ingame/campaign/campaignbrowserdialogs.lua:43 --
ZO_Dialogs_RegisterCustomDialog(dialogName, dialogInfo)
- ingame/campaign/campaignbrowserdialogs.lua:550 --
ZO_Dialogs_RegisterCustomDialog(
"CAMPAIGN_QUEUE",
{
customControl = control,
setup = CampaignQueueDialogSetup,
title =
{
text = SI_CAMPAIGN_BROWSER_QUEUE_DIALOG_TITLE,
},
canQueue = true,
buttons =
{
{
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
local queueType = dialog.radioButtonGroup:GetClickedButton().queueType
CAMPAIGN_BROWSER_MANAGER:ContinueQueueForCampaignFlow(dialog.data.campaignData, ZO_CAMPAIGN_QUEUE_STEP_SELECT_QUEUE_TYPE, queueType)
end,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
}
)
- ingame/campaign/gamepad/campaignbrowserdialogs_gamepad.lua:14 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CAMPAIGN_QUEUE_DIALOG,
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC
},
setup = function(dialog)
dialog.data.groupQueueResult = GetExpectedGroupQueueResult()
dialog:setupFunc()
end,
title =
{
text = SI_CAMPAIGN_BROWSER_QUEUE_DIALOG_TITLE,
},
mainText =
{
text = SI_CAMPAIGN_BROWSER_QUEUE_DIALOG_PROMPT,
},
parametricList =
{
{
template = "ZO_GamepadMenuEntryTemplate",
templateData = {
text = GetString(SI_CAMPAIGN_BROWSER_QUEUE_GROUP),
setup = function(control, data, ...)
data:SetEnabled(parametricDialog.data.groupQueueResult == QUEUE_FOR_CAMPAIGN_RESULT_SUCCESS)
return ZO_SharedGamepadEntry_OnSetup(control, data, ...)
end,
queueType = CAMPAIGN_QUEUE_TYPE_GROUP,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
{
template = "ZO_GamepadMenuEntryTemplate",
templateData = {
text = GetString(SI_CAMPAIGN_BROWSER_QUEUE_SOLO),
setup = ZO_SharedGamepadEntry_OnSetup,
queueType = CAMPAIGN_QUEUE_TYPE_INDIVIDUAL,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
},
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
if newSelectedData and not newSelectedData:IsEnabled() then
local tooltipText = GetString("SI_QUEUEFORCAMPAIGNRESPONSETYPE", dialog.data.groupQueueResult)
GAMEPAD_TOOLTIPS:LayoutTextBlockTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, tooltipText)
ZO_GenericGamepadDialog_ShowTooltip(dialog)
else
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
local queueType = targetData.queueType
CAMPAIGN_BROWSER_MANAGER:ContinueQueueForCampaignFlow(dialog.data.campaignData, ZO_CAMPAIGN_QUEUE_STEP_SELECT_QUEUE_TYPE, queueType)
end
end,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
return targetData and targetData:IsEnabled()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/campaign/gamepad/campaignbrowserdialogs_gamepad.lua:104 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CAMPAIGN_LOCKED_DIALOG,
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
updateFn = function(dialog)
ZO_Dialogs_RefreshDialogText(ZO_GAMEPAD_CAMPAIGN_LOCKED_DIALOG, dialog)
--If the displayed cooldown reaches 0, automatically forward user to the now unlocked dialog they were trying to navigate to originally
if dialog.data.isAbandoning then
local timeLeft = GetCampaignUnassignCooldown()
if timeLeft <= 0 then
ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_ABANDON_HOME_CONFIRM_DIALOG, { id = dialog.data.id }, { mainTextParams = screen:GetTextParamsForAbandonHomeDialog() })
ZO_Dialogs_ReleaseDialog("GAMEPAD_CAMPAIGN_LOCKED_DIALOG")
end
else
local timeLeft = GetCampaignReassignCooldown()
if timeLeft <= 0 then
ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_SET_HOME_REVIEW_DIALOG, { id = dialog.data.id, campaignData = dialog.data.campaignData })
ZO_Dialogs_ReleaseDialog("GAMEPAD_CAMPAIGN_LOCKED_DIALOG")
end
end
end,
title =
{
text = SI_GAMEPAD_CAMPAIGN_LOCKED_DIALOG_TITLE,
},
mainText =
{
text = function(dialog)
if dialog.data.isAbandoning then
local timeleftStr = ZO_SELECTED_TEXT:Colorize(ZO_FormatTime(GetCampaignUnassignCooldown(), TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR, TIME_FORMAT_DIRECTION_DESCENDING))
return zo_strformat(SI_ABANDON_HOME_CAMPAIGN_LOCKED_MESSAGE, timeleftStr)
else
local timeleftStr = ZO_SELECTED_TEXT:Colorize(ZO_FormatTime(GetCampaignReassignCooldown(), TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR, TIME_FORMAT_DIRECTION_DESCENDING))
return zo_strformat(SI_SELECT_HOME_CAMPAIGN_LOCKED_MESSAGE, timeleftStr)
end
end,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/campaign/gamepad/campaignbrowserdialogs_gamepad.lua:161 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CAMPAIGN_SET_HOME_REVIEW_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC
},
canQueue = true,
onlyQueueOnce = true,
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_CAMPAIGN_BROWSER_CHOOSE_HOME_CAMPAIGN_DIALOG_TITLE,
},
mainText =
{
text = function(dialog)
local messages = {}
local data = dialog.data
local campaignData = data.campaignData
local campaignName = ZO_SELECTED_TEXT:Colorize(campaignData.name)
local initialCooldownString = ZO_SELECTED_TEXT:Colorize(ZO_FormatTime(GetCampaignReassignInitialCooldown(), TIME_FORMAT_STYLE_SHOW_LARGEST_UNIT, TIME_FORMAT_PRECISION_TWELVE_HOUR, TIME_FORMAT_DIRECTION_DESCENDING))
local campaignInfoMessage = ZO_CachedStrFormat(SI_SELECT_HOME_CAMPAIGN_QUERY, campaignName, initialCooldownString)
table.insert(messages, campaignInfoMessage)
if ZO_CampaignBrowserDialogs_ShouldShowAllianceLockWarning(campaignData) then
local playerAlliance = GetUnitAlliance("player")
local allianceString = ZO_SELECTED_TEXT:Colorize(ZO_CampaignBrowser_FormatPlatformAllianceIconAndName(playerAlliance))
local campaignEndCooldownString = ZO_SELECTED_TEXT:Colorize(ZO_FormatTime(data.secondsUntilCampaignEnd, TIME_FORMAT_STYLE_SHOW_LARGEST_TWO_UNITS, TIME_FORMAT_PRECISION_TWELVE_HOUR, TIME_FORMAT_DIRECTION_DESCENDING))
local allianceLockMessage = zo_strformat(SI_ABOUT_TO_ALLIANCE_LOCK_CAMPAIGN_WARNING, allianceString, campaignEndCooldownString)
table.insert(messages, allianceLockMessage)
end
local nowCost, endCost = ZO_SelectHomeCampaign_GetCost()
local isFree = nowCost == 0
local costMessage
if isFree then
costMessage = GetString(SI_SELECT_HOME_CAMPAIGN_FREE)
else
local numAlliancePoints = GetCurrencyAmount(CURT_ALLIANCE_POINTS, CURRENCY_LOCATION_CHARACTER)
local hasEnough = nowCost <= numAlliancePoints
local priceMessage = GAMEPAD_AVA_BROWSER:GetPriceMessage(nowCost, hasEnough)
costMessage = ZO_CachedStrFormat(SI_GAMEPAD_CAMPAIGN_BROWSER_CHOOSE_HOME_CAMPAIGN_COST, priceMessage)
end
table.insert(messages, costMessage)
return ZO_GenerateParagraphSeparatedList(messages)
end,
},
updateFn = function(dialog)
local campaignData = dialog.data.campaignData
if not ZO_CampaignBrowserDialogs_ShouldShowAllianceLockWarning(campaignData) then
-- no need to update
return
end
local _, secondsUntilCampaignEnd = GetSelectionCampaignTimes(campaignData.selectionIndex)
if dialog.data.secondsUntilCampaignEnd ~= secondsUntilCampaignEnd then
dialog.data.secondsUntilCampaignEnd = secondsUntilCampaignEnd
ZO_Dialogs_RefreshDialogText(ZO_GAMEPAD_CAMPAIGN_SET_HOME_REVIEW_DIALOG, dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
ZO_Dialogs_ShowGamepadDialog(ZO_GAMEPAD_CAMPAIGN_SET_HOME_CONFIRM_DIALOG, { id = dialog.data.id } )
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/campaign/gamepad/campaignbrowserdialogs_gamepad.lua:264 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CAMPAIGN_SET_HOME_CONFIRM_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC
},
canQueue = true,
setup = function(dialog)
local nowCost, endCost = ZO_SelectHomeCampaign_GetCost()
screen.nowCost = nowCost
screen.endCost = endCost
screen.isFree = screen.nowCost == 0
screen.numAlliancePoints = GetCurrencyAmount(CURT_ALLIANCE_POINTS, CURRENCY_LOCATION_CHARACTER)
screen.hasEnoughNow = screen.nowCost <= screen.numAlliancePoints
screen.hasEnoughEnd = screen.endCost <= screen.numAlliancePoints
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_CAMPAIGN_BROWSER_CONFIRM_HOME_CAMPAIGN_DIALOG_TITLE,
},
parametricList =
{
{
template = "ZO_CampaignBrowserDialogsGamepadMenuEntryNoIcon",
text = GetString(SI_GAMEPAD_CAMPAIGN_SELECT_HOME_NOW),
templateData = {
isNow = true,
showUnselectedSublabels = true,
subLabels = {
function(control)
if screen.isFree then
return ""
else
return GAMEPAD_AVA_BROWSER:GetPriceMessage(screen.nowCost, screen.hasEnoughNow)
end
end
},
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
AssignCampaignToPlayer(dialog.data.id, CAMPAIGN_REASSIGN_TYPE_IMMEDIATE)
end,
},
},
{
template = "ZO_CampaignBrowserDialogsGamepadMenuEntryNoIcon",
text = GetString(SI_GAMEPAD_CAMPAIGN_SELECT_HOME_ON_END),
templateData = {
showUnselectedSublabels = true,
subLabels = {
GetString(SI_GAMEPAD_CAMPAIGN_SELECT_HOME_ON_END_INFO),
function(control)
if screen.isFree then
return ""
else
return GAMEPAD_AVA_BROWSER:GetPriceMessage(screen.endCost, screen.hasEnoughEnd)
end
end
},
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
AssignCampaignToPlayer(dialog.data.id, CAMPAIGN_REASSIGN_TYPE_ON_END)
end,
visible = function()
return GetAssignedCampaignId() ~= 0
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
visible = function(dialog)
return CanChange(dialog)
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/campaign/gamepad/campaignbrowserdialogs_gamepad.lua:380 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CAMPAIGN_ABANDON_HOME_CONFIRM_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC
},
canQueue = true,
onlyQueueOnce = true,
setup = function(dialog)
local alliancePointCost, goldCost = ZO_AbandonHomeCampaign_GetCost()
screen.alliancePointCost = alliancePointCost
screen.goldCost = goldCost
screen.numAlliancePoints = GetCurrencyAmount(CURT_ALLIANCE_POINTS, CURRENCY_LOCATION_CHARACTER)
screen.numGoldAvailable = GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)
screen.hasEnoughAlliancePoints = screen.alliancePointCost <= screen.numAlliancePoints
screen.hasEnoughGold = screen.goldCost <= screen.numGoldAvailable
dialog:setupFunc()
end,
title =
{
text = SI_CAMPAIGN_BROWSER_ABANDON_CAMPAIGN,
},
mainText =
{
text = SI_GAMEPAD_CAMPAIGN_BROWSER_CHOOSE_HOME_CAMPAIGN_MESSAGE,
},
--Only show those options that are relevant to the current cost of abandoning campaign through visible function parameter
parametricList =
{
--Free Change: this option intentionally empty text, if the change is free then only this option will be allowed and the dialog is just an accept/confirm with no options
{
template = "ZO_CampaignBrowserDialogsGamepadMenuEntryNoIcon",
text = "",
templateData = {
useAlliancePoints = true,
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function()
UnassignCampaignForPlayer(CAMPAIGN_UNASSIGN_TYPE_HOME_USE_ALLIANCE_POINTS)
end,
visible = function()
return screen.alliancePointCost == 0
end,
},
},
--Use Alliance Points
{
template = "ZO_CampaignBrowserDialogsGamepadMenuEntryNoIcon",
text = GetString(SI_ABANDON_HOME_CAMPAIGN_USE_ALLIANCE_POINTS),
templateData = {
useAlliancePoints = true,
showUnselectedSublabels = true,
subLabels = {
function(control)
return GAMEPAD_AVA_BROWSER:GetPriceMessage(screen.alliancePointCost, screen.hasEnoughAlliancePoints)
end
},
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function()
UnassignCampaignForPlayer(CAMPAIGN_UNASSIGN_TYPE_HOME_USE_ALLIANCE_POINTS)
end,
visible = function()
return screen.alliancePointCost ~= 0
end,
},
},
--Use Gold
{
template = "ZO_CampaignBrowserDialogsGamepadMenuEntryNoIcon",
text = GetString(SI_ABANDON_HOME_CAMPAIGN_USE_GOLD),
templateData = {
showUnselectedSublabels = true,
subLabels = {
function(control)
local USE_GOLD = true
return GAMEPAD_AVA_BROWSER:GetPriceMessage(screen.goldCost, screen.hasEnoughGold, USE_GOLD)
end
},
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function()
UnassignCampaignForPlayer(CAMPAIGN_UNASSIGN_TYPE_HOME_USE_GOLD)
end,
visible = function()
return screen.goldCost ~= 0 and screen.alliancePointCost ~= 0
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_ACCEPT,
visible = function()
return CanChange()
end,
callback = function()
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback()
end
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/champion/champion.lua:336 --
ZO_Dialogs_RegisterCustomDialog("CHAMPION_CONFIRM_COST",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
customControl = customControl,
title =
{
text = SI_CHAMPION_DIALOG_CONFIRM_CHANGES_TITLE,
},
mainText =
{
text = zo_strformat(SI_CHAMPION_DIALOG_CONFIRM_POINT_COST),
},
setup = function(dialog)
if SCENE_MANAGER:IsCurrentSceneGamepad() then
local gamepadGoldIconMarkup = ZO_Currency_GetGamepadFormattedCurrencyIcon(CURT_MONEY)
gamepadData.data1.value = zo_strformat(SI_CHAMPION_RESPEC_CURRENCY_FORMAT, ZO_CommaDelimitNumber(GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)), gamepadGoldIconMarkup)
gamepadData.data2.value = zo_strformat(SI_CHAMPION_RESPEC_CURRENCY_FORMAT, ZO_CommaDelimitNumber(GetChampionRespecCost()), gamepadGoldIconMarkup)
dialog.setupFunc(dialog, gamepadData)
else
ZO_CurrencyControl_SetSimpleCurrency(customControl:GetNamedChild("BalanceAmount"), CURT_MONEY, GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER))
ZO_CurrencyControl_SetSimpleCurrency(customControl:GetNamedChild("RespecCost"), CURT_MONEY, GetChampionRespecCost())
end
end,
buttons =
{
{
control = customControl:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
CHAMPION_PERKS:SpendPointsConfirmed(dialog.data.respecNeeded)
end,
},
{
control = customControl:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/chapterupgrade/gamepad/chapterupgrade_gamepad.lua:446 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CHAPTER_UPGRADE_CHOOSE_EDITION",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_CHAPTER_UPGRADE_GAMEPAD_SELECT_EDITION_DIALOG_TITLE,
},
parametricList =
{
-- Collector's
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = function(dialog)
if dialog.data.chapterUpgradeData:IsContentPass() then
return GetString(SI_CHAPTER_UPGRADE_CONTENT_PASS_GAMEPAD_SELECT_EDITION_DIALOG_COLLECTORS_ENTRY)
else
return GetString(SI_CHAPTER_UPGRADE_GAMEPAD_SELECT_EDITION_DIALOG_COLLECTORS_ENTRY)
end
end,
setup = ZO_SharedGamepadEntry_OnSetup,
isCollectorsEdition = true,
},
},
-- Standard
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_CHAPTER_UPGRADE_GAMEPAD_SELECT_EDITION_DIALOG_STANDARD_ENTRY),
setup = ZO_SharedGamepadEntry_OnSetup,
isCollectorsEdition = false,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local entryData = dialog.entryList:GetTargetData()
if dialog.data.chapterUpgradeData:IsPreRelease() then
ZO_ShowChapterPrepurchasePlatformDialog(dialog.data.chapterUpgradeData:GetChapterUpgradeId(), entryData.isCollectorsEdition, CHAPTER_UPGRADE_SOURCE_IN_GAME)
else
ZO_ShowChapterUpgradePlatformDialog(entryData.isCollectorsEdition, CHAPTER_UPGRADE_SOURCE_IN_GAME)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/chatsystem/chatoptions.lua:63 --
ZO_Dialogs_RegisterCustomDialog("CHAT_OPTIONS_DIALOG",
{
customControl = control,
title =
{
text = SI_WINDOW_TITLE_CHAT_CHANNEL_OPTIONS,
},
setup = function(self) CHAT_OPTIONS:Initialize(control) end,
buttons =
{
{
control = GetControl(control, "Commit"),
text = SI_DIALOG_EXIT,
keybind = "DIALOG_NEGATIVE",
callback = function(dialog)
ZO_ChatOptions_OnCommitClicked()
end,
},
{
control = GetControl(control, "Reset"),
text = SI_OPTIONS_DEFAULTS,
keybind = "DIALOG_RESET",
callback = function(dialog)
ZO_ChatOptions_OnResetClicked()
end,
},
}
})
- ingame/collections/itemsetcollectionsmanager.lua:82 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_ITEM_SETS_BOOK_OPTIONS_DIALOG",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_GAMEPAD_ITEM_SETS_BOOK_OPTIONS))
-- Get the last saved state once when the dialog opens, but then only modify it locally until the dialog closes
dialog.showLocked = ITEM_SET_COLLECTIONS_DATA_MANAGER:GetShowLocked()
dialog:setupFunc()
end,
parametricList =
{
-- Show Locked
{
template = "ZO_CheckBoxTemplate_WithoutIndent_Gamepad",
text = GetString(SI_ITEM_SETS_BOOK_SHOW_LOCKED),
templateData =
{
-- Called when the checkbox is toggled
setChecked = function(checkBox, checked)
checkBox.dialog.showLocked = checked
SCREEN_NARRATION_MANAGER:QueueDialog(checkBox.dialog)
end,
-- Used during setup to determine if the data should be setup checked or unchecked
checked = function(data)
return data.dialog.showLocked
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.checkBox.dialog = data.dialog
ZO_GamepadCheckBoxTemplate_Setup(control, data, selected, reselectingDuringRebuild, enabled, active)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
end,
narrationText = function(entryData, entryControl)
local isChecked = entryData.checked(entryData)
return ZO_FormatToggleNarrationText(entryData.text, isChecked)
end,
},
header = GetString(SI_GAMEPAD_ITEM_SETS_BOOK_OPTIONS_FILTERS),
},
-- Equipment Filter Types
apparelFilterTypesDropdownEntry,
weaponFilterTypesDropdownEntry,
-- Link in Chat
{
template = "ZO_GamepadFullWidthLeftLabelEntryTemplate",
templateData =
{
text = GetString(SI_ITEM_ACTION_LINK_TO_CHAT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local itemSetCollectionPieceData = dialog.data.selectedItemSetCollectionPieceData
ZO_LinkHandler_InsertLinkAndSubmit(zo_strformat(SI_TOOLTIP_ITEM_NAME, itemSetCollectionPieceData:GetItemLink()))
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_ITEM_SETS_BOOK_OPTIONS_DIALOG")
end,
visible = function(dialog)
if IsChatSystemAvailableForCurrentPlatform() then
return dialog.data.selectedItemSetCollectionPieceData ~= nil
end
return false
end,
},
header = GetString(SI_GAMEPAD_ITEM_SETS_BOOK_OPTIONS_ACTIONS),
},
},
blockDialogReleaseOnPress = true,
buttons =
{
-- Select
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
-- Back
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_ITEM_SETS_BOOK_OPTIONS_DIALOG")
end,
},
-- Reset Filters
{
keybind = "DIALOG_RESET",
text = SI_GUILD_BROWSER_RESET_FILTERS_KEYBIND,
enabled = function(dialog)
return not dialog.showLocked or
apparelFilterTypesData:GetNumSelectedItems() > 0 or
weaponFilterTypesData:GetNumSelectedItems() > 0
end,
callback = function(dialog)
dialog.showLocked = true
apparelFilterTypesData:ClearAllSelections()
weaponFilterTypesData:ClearAllSelections()
dialog:setupFunc()
--Re-narrate the selection when the filters are reset
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
},
},
onHidingCallback = function(dialog)
ITEM_SET_COLLECTIONS_DATA_MANAGER:SetShowLocked(dialog.showLocked)
local equipmentFilterTypes = {}
apparelFilterTypesData.dropdownInstance:Deactivate()
for _, item in ipairs(apparelFilterTypesData:GetSelectedItems()) do
table.insert(equipmentFilterTypes, item.equipmentFilterType)
end
weaponFilterTypesData.dropdownInstance:Deactivate()
for _, item in ipairs(weaponFilterTypesData:GetSelectedItems()) do
table.insert(equipmentFilterTypes, item.equipmentFilterType)
end
ITEM_SET_COLLECTIONS_DATA_MANAGER:SetEquipmentFilterTypes(equipmentFilterTypes)
end,
})
- ingame/collections/gamepad/collectionsbook_gamepad.lua:1762 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_COLLECTIONS_ACTIONS_DIALOG_NAME,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_INVENTORY_ACTION_LIST_KEYBIND,
},
parametricList =
{
-- Primary Interaction
{
template = "ZO_GamepadMenuEntryTemplate",
text = function(dialog)
local collectibleData = dialog.data
local nameStringId = collectibleData:GetPrimaryInteractionStringId(GAMEPLAY_ACTOR_CATEGORY_PLAYER)
return GetString(nameStringId)
end,
templateData =
{
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local collectibleData = dialog.data
collectibleData:Use(GAMEPLAY_ACTOR_CATEGORY_PLAYER)
end,
visible = function(dialog)
local collectibleData = dialog.data
if not collectibleData then
return false
end
return collectibleData:IsUsable(GAMEPLAY_ACTOR_CATEGORY_PLAYER) and not collectibleData:IsSkillStyle()
end,
enabled = function(dialog)
local collectibleData = dialog.data
if collectibleData:IsActive(GAMEPLAY_ACTOR_CATEGORY_PLAYER) then
return true
end
local remainingMs = GetCollectibleCooldownAndDuration(collectibleData:GetId())
if remainingMs > 0 then
return false
end
if collectibleData:IsBlocked(GAMEPLAY_ACTOR_CATEGORY_PLAYER) then
return false
end
return true
end,
},
},
-- Place Furniture
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_ITEM_ACTION_PLACE_FURNITURE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local collectibleData = dialog.data
COLLECTIONS_BOOK_SINGLETON.TryPlaceCollectibleFurniture(collectibleData)
end,
visible = function(dialog)
local collectibleData = dialog.data
return collectibleData and collectibleData.CanPlaceInCurrentHouse and collectibleData:CanPlaceInCurrentHouse()
end,
},
},
-- Link In Chat
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_ITEM_ACTION_LINK_TO_CHAT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local link = ZO_LinkHandler_CreateChatLink(GetCollectibleLink, dialog.data:GetId())
ZO_LinkHandler_InsertLinkAndSubmit(zo_strformat(SI_TOOLTIP_ITEM_NAME, link))
end,
visible = function(dialog)
return IsChatSystemAvailableForCurrentPlatform() and not (dialog.data:IsHouse() and dialog.data:IsUnlocked())
end,
},
},
-- Link Invite In Chat (Housing)
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_HOUSING_LINK_IN_CHAT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local houseId = dialog.data:GetReferenceId()
local ownerDisplayName = GetDisplayName()
ZO_HousingBook_LinkHouseInChat(houseId, ownerDisplayName)
end,
visible = function(dialog)
return IsChatSystemAvailableForCurrentPlatform() and (dialog.data:IsHouse() and dialog.data:IsUnlocked())
end,
},
},
-- Link Invite in Mail (Housing)
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_HOUSING_LINK_IN_MAIL),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local houseId = dialog.data:GetReferenceId()
local ownerDisplayName = GetDisplayName()
local link = ZO_HousingBook_GetHouseLink(houseId, ownerDisplayName)
if link then
MAIL_GAMEPAD.inbox:InsertBodyText(link)
end
end,
visible = function(dialog)
return IsChatSystemAvailableForCurrentPlatform() and (dialog.data:IsHouse() and dialog.data:IsUnlocked())
end,
},
},
-- Show Achievement
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_COLLECTIBLE_ACTION_SHOW_ACHIEVEMENT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local collectibleData = self:GetCurrentTargetData()
local linkedAchievement = collectibleData:GetLinkedAchievement()
SYSTEMS:GetObject("achievements"):ShowAchievement(linkedAchievement)
end,
visible = function(dialog)
local collectibleData = self:GetCurrentTargetData()
if collectibleData and collectibleData:IsInstanceOf(ZO_CollectibleData) then
local linkedAchievement = collectibleData:GetLinkedAchievement()
return linkedAchievement > 0
end
return false
end,
},
},
-- Show in Skills
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_COLLECTIBLE_ACTION_SHOW_IN_SKILLS),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local collectibleData = self:GetCurrentTargetData()
local skillStyleProgressionId = collectibleData:GetSkillStyleProgressionId()
local skillData = SKILLS_DATA_MANAGER:GetSkillDataByProgressionId(skillStyleProgressionId)
MAIN_MENU_GAMEPAD:ShowScene("gamepad_skills_root")
GAMEPAD_SKILLS:SelectSkillLineBySkillData(skillData)
end,
visible = function(dialog)
local collectibleData = self:GetCurrentTargetData()
if collectibleData and collectibleData:IsInstanceOf(ZO_CollectibleData) then
local skillStyleProgressionId = collectibleData:GetSkillStyleProgressionId()
local skillData = SKILLS_DATA_MANAGER:GetSkillDataByProgressionId(skillStyleProgressionId)
return collectibleData:IsSkillStyle() and skillData:IsPurchased()
end
return false
end,
},
},
-- Rename
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_COLLECTIBLE_ACTION_RENAME),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local nickname = dialog.data:GetNickname()
local defaultNickname = dialog.data:GetDefaultNickname()
--Only pre-fill the edit text if it's different from the default nickname
local initialEditText = ""
if nickname ~= defaultNickname then
initialEditText = nickname
end
ZO_Dialogs_ShowGamepadDialog(GAMEPAD_COLLECTIONS_RENAME_COLLECTIBLE_DIALOG_NAME, { collectibleId = dialog.data:GetId(), name = initialEditText, defaultName = defaultNickname })
end,
visible = function(dialog)
return dialog.data:IsRenameable()
end
},
},
-- Unlock Permanently (Purchase)
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_GAMEPAD_DLC_BOOK_ACTION_OPEN_CROWN_STORE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local searchTerm = zo_strformat(SI_CROWN_STORE_SEARCH_FORMAT_STRING, dialog.data:GetName())
ShowMarketAndSearch(searchTerm, MARKET_OPEN_OPERATION_COLLECTIONS_DLC)
end,
visible = function()
return self:CanPurchaseCurrentTarget()
end
},
},
-- Chapter Upgrade
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_DLC_BOOK_ACTION_CHAPTER_UPGRADE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
ZO_ShowChapterUpgradePlatformScreen(MARKET_OPEN_OPERATION_COLLECTIONS_DLC)
end,
visible = function()
return self:CanUpgradeCurrentTarget()
end
},
},
-- Add/Remove Favorite
{
template = "ZO_GamepadMenuEntryTemplate",
text = function(dialog)
return dialog.data:IsFavorite() and GetString(SI_COLLECTIBLE_ACTION_REMOVE_FAVORITE) or GetString(SI_COLLECTIBLE_ACTION_ADD_FAVORITE)
end,
templateData =
{
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
SetOrClearCollectibleUserFlag(dialog.data:GetId(), COLLECTIBLE_USER_FLAG_FAVORITE, not dialog.data:IsFavorite())
end,
visible = function(dialog)
return dialog.data:IsFavoritable()
end
},
},
-- Set as Primary Residence
{
template = "ZO_GamepadMenuEntryTemplate",
text = GetString(SI_HOUSING_FURNITURE_SETTINGS_GENERAL_PRIMARY_RESIDENCE_BUTTON_TEXT),
templateData =
{
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
COLLECTIONS_BOOK_SINGLETON:SetPrimaryResidence(dialog.data:GetReferenceId())
end,
visible = function(dialog)
return dialog.data:IsUnlocked() and dialog.data:IsHouse() and not dialog.data:IsPrimaryResidence()
end
},
},
-- Tour Home
{
template = "ZO_GamepadMenuEntryTemplate",
text = GetString(SI_COLLECTIBLE_ACTION_TOUR_THIS_HOME),
templateData =
{
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
--Order matters. Attempt to browse to the house before showing it in the activity finder
HOUSE_TOURS_GAMEPAD:BrowseSpecificHouse(dialog.data:GetReferenceId())
ZO_ACTIVITY_FINDER_ROOT_GAMEPAD:ShowCategory(HOUSE_TOURS_GAMEPAD:GetCategoryData())
end,
visible = function(dialog)
return dialog.data:IsHouse() and ZO_IsHouseToursEnabled()
end
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_OK,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/collections/gamepad/collectionsbook_gamepad.lua:2105 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_COLLECTIONS_INVENTORY_DIALOG_RENAME_COLLECTIBLE_TITLE,
},
mainText =
{
text = SI_COLLECTIONS_INVENTORY_DIALOG_RENAME_COLLECTIBLE_MAIN,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData =
{
nameField = true,
textChangedCallback = function(control)
inputText = control:GetText()
local isHouse
if parametricDialog.data then
parametricDialog.data.name = inputText
isHouse = GetCollectibleCategoryType(parametricDialog.data.collectibleId) == COLLECTIBLE_CATEGORY_TYPE_HOUSE
end
UpdateSelectedName(inputText, isHouse)
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetMaxInputChars(COLLECTIBLE_NAME_MAX_LENGTH)
data.control = control
if parametricDialog.data then
control.editBoxControl:SetText(zo_strformat(SI_COLLECTIBLE_NAME_FORMATTER, parametricDialog.data.name))
control.editBoxControl:SetDefaultText(zo_strformat(SI_COLLECTIBLE_NAME_FORMATTER, parametricDialog.data.defaultName))
end
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local isHouse
if dialog.data then
isHouse = GetCollectibleCategoryType(dialog.data.collectibleId) == COLLECTIBLE_CATEGORY_TYPE_HOUSE
end
SetActiveEdit(data.control.editBoxControl, isHouse)
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_GAMEPAD_COLLECTIONS_SAVE_NAME_OPTION,
callback = function(dialog)
local collectibleId = dialog.data.collectibleId
RenameCollectible(collectibleId, inputText)
ReleaseDialog()
end,
visible = function()
return self.noViolations
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_TERTIARY",
text = SI_COLLECTIONS_INVENTORY_DIALOG_DEFAULT_NAME,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.control.editBoxControl:SetText("")
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/collections/keyboard/collectionsbook.lua:702 --
ZO_Dialogs_RegisterCustomDialog("COLLECTIONS_INVENTORY_RENAME_COLLECTIBLE",
{
title =
{
text = SI_COLLECTIONS_INVENTORY_DIALOG_RENAME_COLLECTIBLE_TITLE,
},
mainText =
{
text = "",
},
setup = function(dialog, data, textParams)
--Set up the rules for the edit box
local editControl = dialog:GetNamedChild("ContentContainerEditBox")
editControl:SetTextType(TEXT_TYPE_ALL)
editControl:SetMaxInputChars(COLLECTIBLE_NAME_MAX_LENGTH)
local defaultText = textParams.initialDefaultText or ""
editControl:SetDefaultText(defaultText)
if textParams.initialEditText then
editControl:SetText(textParams.initialEditText)
end
editControl:SelectAll()
end,
customControl = control,
buttons =
{
{
noReleaseOnClick = true,
control = control:GetNamedChild("KeybindsOk"),
text = SI_OK,
callback = function(dialog)
local editControl = dialog:GetNamedChild("ContentContainerEditBox")
local inputText = editControl:GetText()
if inputText then
local violations
if GetCollectibleCategoryType(dialog.data.collectibleId) == COLLECTIBLE_CATEGORY_TYPE_HOUSE then
violations = { IsValidHouseName(inputText) }
else
violations = { IsValidCollectibleName(inputText) }
end
if #violations == 0 then
local collectibleId = dialog.data.collectibleId
RenameCollectible(collectibleId, inputText)
ZO_Dialogs_ReleaseDialog("COLLECTIONS_INVENTORY_RENAME_COLLECTIBLE")
end
end
end
},
{
control = control:GetNamedChild("KeybindsCancel"),
text = SI_DIALOG_CANCEL,
},
{
control = control:GetNamedChild("KeybindsDefault"),
text = SI_COLLECTIONS_INVENTORY_DIALOG_DEFAULT_NAME,
keybind = "DIALOG_SECONDARY",
noReleaseOnClick = true,
callback = function(dialog)
local editControl = dialog:GetNamedChild("ContentContainerEditBox")
if editControl then
editControl:SetText("")
end
end
}
},
finishedCallback = function(dialog)
if dialog.data and dialog.data.finishedCallback then
dialog.data.finishedCallback(dialog)
end
end,
})
- ingame/companion/gamepad/companioncollectionbook_gamepad.lua:779 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_COMPANION_COLLECTIONS_ACTIONS_DIALOG_NAME,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_INVENTORY_ACTION_LIST_KEYBIND,
},
parametricList =
{
-- Link In Chat
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_ITEM_ACTION_LINK_TO_CHAT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local link = ZO_LinkHandler_CreateChatLink(GetCollectibleLink, dialog.data.collectibleId)
ZO_LinkHandler_InsertLinkAndSubmit(zo_strformat(SI_TOOLTIP_ITEM_NAME, link))
end,
visible = IsChatSystemAvailableForCurrentPlatform
},
},
-- Unlock Permanently (Purchase)
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_GAMEPAD_DLC_BOOK_ACTION_OPEN_CROWN_STORE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local collectibleData = self:GetCurrentTargetData()
local searchTerm = zo_strformat(SI_CROWN_STORE_SEARCH_FORMAT_STRING, collectibleData:GetName())
ShowMarketAndSearch(searchTerm, MARKET_OPEN_OPERATION_COLLECTIONS_DLC)
end,
visible = function()
return self:CanPurchaseCurrentTarget()
end
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_OK,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/contacts/gamepad/notifications_gamepad.lua:804 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_NOTIFICATIONS_DECLINE_INVITE,
},
mainText =
{
text = function(dialog)
return dialog.data.mainText()
end,
},
parametricList = parametricListOptions,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_OK,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:69 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
local data = dialog.data
if data.setupFunction then
data.setupFunction(dialog)
end
dialog.info.parametricList = data.parametricList
finishedCallback = nil
dialog:setupFunc()
end,
finishedCallback = function(dialog)
if finishedCallback then
finishedCallback()
end
end,
title =
{
text = SI_GAMEPAD_CONTACTS_OPTIONS_TITLE,
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
if data.callback then
data.callback()
end
finishedCallback = data.finishedCallback
ReleaseDialog(dialogName)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog(dialogName)
end,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:130 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_EDIT_NOTE_DIALOG_TITLE,
},
parametricList =
{
-- note
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
parametricDialog.data.note = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetMaxInputChars(254)
control.editBoxControl:SetDefaultText(GetString(SI_EDIT_NOTE_DEFAULT_TEXT))
if parametricDialog.data.note then
control.editBoxControl:SetText(parametricDialog.data.note)
end
data.control = control
end,
callback = function(dialog)
SetActiveEdit(dialog)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- save
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GAMEPAD_CONTACTS_EDIT_NOTE_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
if dialog.data.noteChangedCallback then
dialog.data.noteChangedCallback(dialog.data.displayName, dialog.data.note)
ZO_Alert(UI_ALERT_CATEGORY_ALERT, nil, SI_GAMEPAD_CONTACTS_NOTE_SAVED)
ReleaseDialog(dialogName)
end
end,
},
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
PrimaryButtonCallback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog(dialogName)
end,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:323 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
if dialog.data then
nameText = dialog.data.displayName
else
nameText = ""
end
dialog:setupFunc()
end,
title =
{
text = SI_REQUEST_FRIEND_DIALOG_TITLE,
},
parametricList = friendParametricList,
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
PrimaryButtonCallback(dialog)
end,
enabled = function(dialog)
return IsButtonEnabled(dialog, SI_GAMEPAD_REQUEST_OPTION, nameText)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseAddFriendDialog()
end,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:382 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_PROMPT_TITLE_ADD_IGNORE,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
nameText = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(ZO_GetInviteInstructions())
data.control = control
if parametricDialog.data and data.nameField then
control.editBoxControl:SetText(parametricDialog.data.displayName)
else
local validInput = IsValidInput(nameText)
if validInput then
control.editBoxControl:SetText(nameText)
end
end
end,
callback = function(dialog)
SetActiveEdit(dialog)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- ignore
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_FRIEND_MENU_IGNORE),
setup = SetupRequestEntry,
callback = function(dialog)
if IsValidInput(nameText) then
AddIgnore(nameText)
ReleaseDialog(dialogName)
end
end,
validInput = function()
return IsValidInput(nameText)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
PrimaryButtonCallback(dialog)
end,
enabled = function(dialog)
return IsButtonEnabled(dialog, SI_FRIEND_MENU_IGNORE, nameText)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog(dialogName)
end,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:480 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
nameText = ""
dialog:setupFunc()
end,
title =
{
text = SI_PROMPT_TITLE_GUILD_INVITE,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
textChangedCallback = function(control)
nameText = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(ZO_GetInviteInstructions())
data.control = control
local validInput = IsValidInput(nameText)
if validInput then
control.editBoxControl:SetText(nameText)
end
end,
callback = function(dialog)
SetActiveEdit(dialog)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- add
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GAMEPAD_REQUEST_OPTION),
setup = SetupRequestEntry,
callback = function(dialog)
if IsValidInput(nameText) then
local guildId = dialog.data.guildId
ZO_TryGuildInvite(guildId, ZO_FormatManualNameEntry(nameText))
ReleaseDialog(dialogName)
end
end,
validInput = function()
return IsValidInput(nameText)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
PrimaryButtonCallback(dialog)
end,
enabled = function(dialog)
return IsButtonEnabled(dialog, SI_GAMEPAD_REQUEST_OPTION, nameText)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog(dialogName)
end,
},
}
})
- ingame/contacts/gamepad/socialdialogs_gamepad.lua:574 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
nameText = ""
dialog:setupFunc()
end,
title =
{
text = SI_GROUP_WINDOW_INVITE_PLAYER,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
textChangedCallback = function(control)
nameText = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(ZO_GetInviteInstructions())
data.control = control
local validInput = IsValidInput(nameText)
if validInput then
control.editBoxControl:SetText(nameText)
end
end,
callback = function(dialog)
SetActiveEdit(dialog)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- invite
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GAMEPAD_REQUEST_OPTION),
setup = SetupRequestEntry,
callback = function(dialog)
if IsValidInput(nameText) then
local NOT_SENT_FROM_CHAT = false
local DISPLAY_INVITED_MESSAGE = true
TryGroupInviteByName(ZO_FormatManualNameEntry(nameText), NOT_SENT_FROM_CHAT, DISPLAY_INVITED_MESSAGE)
ReleaseDialog(dialogName)
end
end,
validInput = function()
return IsValidInput(nameText)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
PrimaryButtonCallback(dialog)
end,
enabled = function(dialog)
return IsButtonEnabled(dialog, SI_GAMEPAD_REQUEST_OPTION, nameText)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog(dialogName)
end,
},
}
})
- ingame/contacts/keyboard/socialdialogs_keyboard.lua:14 --
ZO_Dialogs_RegisterCustomDialog("REQUEST_FRIEND",
{
customControl = self,
setup = RequestFriendDialogSetup,
title =
{
text = SI_REQUEST_FRIEND_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(self, "Request"),
text = SI_REQUEST_FRIEND_DIALOG_REQUEST,
callback = function(dialog)
local name = GetControl(dialog, "NameEdit"):GetText()
local message = GetControl(dialog, "MessageEdit"):GetText()
if(name ~= "") then
RequestFriend(name, message)
end
end,
},
[2] =
{
control = GetControl(self, "Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/contacts/keyboard/socialdialogs_keyboard.lua:60 --
ZO_Dialogs_RegisterCustomDialog("EDIT_NOTE",
{
customControl = self,
setup = EditNoteDialogSetup,
title =
{
text = SI_EDIT_NOTE_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(self, "Save"),
text = SI_SAVE,
callback = function(dialog)
local data = dialog.data
local note = GetControl(dialog, "NoteEdit"):GetText()
if(note ~= data.note) then
data.changedCallback(data.displayName, note)
end
end,
},
[2] =
{
control = GetControl(self, "Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/contacts/keyboard/socialdialogs_keyboard.lua:110 --
ZO_Dialogs_RegisterCustomDialog("CREATE_GUILD",
{
title =
{
text = SI_PROMPT_TITLE_GUILD_CREATE,
},
customControl = self,
setup = CreateGuildDialogSetup,
buttons =
{
[1] =
{
control = GetControl(self, "Create"),
text = SI_DIALOG_CREATE,
callback = function(dialog)
local guildName = dialog.nameEdit:GetText()
if(guildName and guildName ~= "") then
GuildCreate(guildName, dialog.selectedAlliance)
end
end,
},
[2] =
{
control = GetControl(self, "Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/crafting/scribing_manager.lua:199 --
ZO_Dialogs_RegisterCustomDialog("SCRIBING_OPEN_SKILLS_CONFIRM",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.STATIC_LIST,
},
customControl = customControl,
canQueue = true,
title =
{
text = function(dialog)
local skillData = dialog.data.skillsData
return zo_strformat(SI_SCRIBING_OPEN_SKILL_DIALOG_TITLE, skillData.skillProgressionData:GetName())
end,
},
mainText =
{
text = SI_SCRIBING_OPEN_SKILL_DIALOG_DESCRIPTION,
},
setup = function(dialog, data)
if IsInGamepadPreferredMode() then
dialog:setupFunc()
else
local skillsData = dialog.data.skillsData
local iconControl = customControl:GetNamedChild("ScribedSkill")
iconControl:SetTexture(skillsData.skillProgressionData:GetIcon())
end
end,
itemInfo = function(dialog)
local skillsData = dialog.data.skillsData
local iconTable =
{
{
icon = skillsData.skillProgressionData:GetIcon(),
iconSize = 64,
}
}
return iconTable
end,
buttons =
{
{
control = customControl:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local skillsData = dialog.data.skillsData
if skillsData then
if IsInGamepadPreferredMode() then
MAIN_MENU_GAMEPAD:ShowScene("gamepad_skills_root")
GAMEPAD_SKILLS:SelectSkillLineBySkillData(skillsData)
else
MAIN_MENU_KEYBOARD:ShowScene("skills")
SKILLS_WINDOW:BrowseToSkill(skillsData)
end
end
end,
},
{
control = customControl:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/crafting/gamepad/consolidatedsmithingsets_gamepad.lua:455 --
ZO_Dialogs_RegisterCustomDialog("CONSOLIDATED_SMITHING_ADD_SETS_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = GetString(SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_TITLE),
},
mainText =
{
text = GetString(SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_DESCRIPTION),
},
setup = function(dialog, data)
local parametricListEntries = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(self.selectedItems)
ZO_ClearNumericallyIndexedTable(parametricListEntries)
--Generate the initial list of consumable items.
local virtualInventoryList = PLAYER_INVENTORY:GenerateListOfVirtualStackedItems(INVENTORY_BACKPACK, CanItemBeConsumedByConsolidatedStation)
local listedSets = {}
for itemId, itemInfo in pairs(virtualInventoryList) do
local itemSetId = GetSmithingStationItemSetIdFromItem(itemInfo.bag, itemInfo.index)
--Filter out any stations with the same set as a station we have already added to the list
if not listedSets[itemSetId] then
local itemName = zo_strformat(SI_TOOLTIP_ITEM_NAME, GetItemName(itemInfo.bag, itemInfo.index))
local icon, _, _, _, _, _, _, _, displayQuality = GetItemInfo(itemInfo.bag, itemInfo.index)
local entryData = ZO_GamepadEntryData:New(itemName, icon)
entryData:SetNameColors(entryData:GetColorsBasedOnQuality(displayQuality))
entryData.setup = ZO_SharedGamepadEntry_OnSetup
entryData.tooltipFunction = function() GAMEPAD_TOOLTIPS:LayoutBagItem(GAMEPAD_LEFT_DIALOG_TOOLTIP, itemInfo.bag, itemInfo.index) end
entryData.itemInfo = itemInfo
entryData.narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP
local listItem =
{
template = "ZO_GamepadItemSubEntryTemplate",
entryData = entryData,
}
table.insert(parametricListEntries, listItem)
listedSets[itemSetId] = true
end
end
--Sort the entries alphabetically
local function SortComparator(left, right)
return left.entryData:GetText() < right.entryData:GetText()
end
table.sort(parametricListEntries, SortComparator)
dialog.setupFunc(dialog)
end,
parametricList = {}, -- Generated Dynamically
blockDialogReleaseOnPress = true, -- We need to manually control when we release so we can use the select/deselect keybind to select entries
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
if newSelectedData and newSelectedData.tooltipFunction then
newSelectedData.tooltipFunction()
ZO_GenericGamepadDialog_ShowTooltip(dialog)
else
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = function(dialog)
local data = dialog.entryList:GetTargetData()
local isSelected = ZO_IsElementInNumericallyIndexedTable(self.selectedItems, data.itemInfo)
return isSelected and GetString(SI_GAMEPAD_DESELECT_OPTION) or GetString(SI_GAMEPAD_SELECT_OPTION)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local itemInfo = data.itemInfo
if itemInfo then
if ZO_IsElementInNumericallyIndexedTable(self.selectedItems, itemInfo) then
ZO_RemoveFirstElementFromNumericallyIndexedTable(self.selectedItems, itemInfo)
else
table.insert(self.selectedItems, itemInfo)
end
RefreshSelected(dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("CONSOLIDATED_SMITHING_ADD_SETS_GAMEPAD")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_DIALOG_CONFIRM,
enabled = function()
return #self.selectedItems > 0
end,
callback = function(dialog)
ZO_Dialogs_ShowGamepadDialog("CONSOLIDATED_SMITHING_CONFIRM_ADD_SETS_GAMEPAD", { selectedItems = self.selectedItems })
ZO_Dialogs_ReleaseDialogOnButtonPress("CONSOLIDATED_SMITHING_ADD_SETS_GAMEPAD")
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_TERTIARY",
text = SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_SELECT_ALL,
callback = function(dialog)
--Clear out the selected items table and then go through and add every entry
ZO_ClearNumericallyIndexedTable(self.selectedItems)
local parametricListEntries = dialog.info.parametricList
for _, entryInfo in ipairs(parametricListEntries) do
local entryData = entryInfo.entryData
table.insert(self.selectedItems, entryData.itemInfo)
end
RefreshSelected(dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
},
})
- ingame/crafting/gamepad/consolidatedsmithingsets_gamepad.lua:586 --
ZO_Dialogs_RegisterCustomDialog("CONSOLIDATED_SMITHING_CONFIRM_ADD_SETS_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
canQueue = true,
title =
{
text = SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_TITLE,
},
mainText =
{
text = function(dialog)
local selectedItems = dialog.data.selectedItems
if #selectedItems > 1 then
return zo_strformat(SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_MULTIPLE_SELECTED_TEXT, #selectedItems)
else
return GetString(SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_SELECTED_TEXT)
end
end,
},
buttons =
{
{
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local itemsToAdd = dialog.data.selectedItems
PrepareConsumeAttunableStationsMessage()
--Add each item to the consume message
local addedAllItems = true
for _, item in ipairs(itemsToAdd) do
if not AddItemToConsumeAttunableStationsMessage(item.bag, item.index) then
addedAllItems = false
break
end
end
--If all items were added successfully, proceed with the consume
if addedAllItems then
SendConsumeAttunableStationsMessage()
end
end,
},
{
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/crafting/gamepad/scribing_gamepad.lua:43 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SCRIBING_SCRIPT_FILTERS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = GetString(SI_GAMEPAD_CRAFTING_OPTIONS_FILTERS),
},
parametricList =
{
-- Usable Checkbox
{
template = "ZO_CheckBoxTemplate_WithoutIndent_Gamepad",
text = GetString(SI_SCRIBING_FILTER_USABLE),
templateData =
{
-- Called when the checkbox is toggled
setChecked = function(checkBox, checked)
self.scriptFilters.isUsable = checked
SCREEN_NARRATION_MANAGER:QueueDialog(checkBox.dialog)
end,
-- Used during setup to determine if the data should be setup checked or unchecked
checked = function(data)
return self.scriptFilters.isUsable
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.checkBox.dialog = data.dialog
ZO_GamepadCheckBoxTemplate_Setup(control, data, selected, reselectingDuringRebuild, enabled, active)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
end,
narrationText = function(entryData, entryControl)
local isChecked = entryData.checked(entryData)
return ZO_FormatToggleNarrationText(entryData.text, isChecked)
end,
},
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_SCRIBING_SCRIPT_FILTERS")
self:RefreshScriptsList()
end,
},
},
})
- ingame/crafting/gamepad/smithingresearch_gamepad.lua:273 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CONFIRM_CANCEL_RESEARCH_DIALOG,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.destroyConfirmText = nil
dialog:setupFunc()
end,
title =
{
text = SI_CRAFTING_CONFIRM_CANCEL_RESEARCH_TITLE,
},
mainText =
{
text = SI_GAMEPAD_CRAFTING_CONFIRM_CANCEL_RESEARCH_DESCRIPTION,
},
buttons =
{
{
onShowCooldown = 2000,
keybind = "DIALOG_PRIMARY",
text = GetString(SI_YES),
callback = function(dialog)
local data = dialog.data
CancelSmithingTraitResearch(data.craftingType, data.researchLineIndex, data.traitIndex)
ReleaseDialog()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_NO),
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/crafting/keyboard/craftingresults_keyboard.lua:29 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
customControl = control,
setup = SetupEnchantDialog,
title =
{
text = SI_ENCHANTING_TRANSLATION_LEARNED_DIALOG_TITLE,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Exit"),
text = SI_EXIT_BUTTON,
},
}
})
- ingame/crafting/keyboard/craftingresults_keyboard.lua:157 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
customControl = control,
setup = SetupAlchemyDialog,
title =
{
text = SI_ALCHEMY_REAGENT_TRAIT_LEARNED_DIALOG_TITLE,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Exit"),
text = SI_EXIT_BUTTON,
},
}
})
- ingame/crafting/keyboard/smithingresearch_keyboard.lua:215 --
ZO_Dialogs_RegisterCustomDialog("SMITHING_RESEARCH_SELECT",
{
customControl = function() return ZO_InventorySlot_GetItemListDialog():GetControl() end,
setup = function(dialog, data) self:SetupDialog(data.craftingType, data.researchLineIndex, data.traitIndex) end,
title =
{
text = SI_SMITHING_RESEARCH_DIALOG_TITLE,
},
buttons =
{
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(1),
text = SI_SMITHING_RESEARCH_DIALOG_CONFIRM,
clickSound = SOUNDS.SMITHING_START_RESEARCH,
callback = function()
local selectedData = ZO_InventorySlot_GetItemListDialog():GetSelectedItem()
if selectedData then
ResearchSmithingTrait(selectedData.bag, selectedData.index)
end
end,
},
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(2),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/crafting/keyboard/smithing_keyboard.lua:296 --
ZO_Dialogs_RegisterCustomDialog("CONSOLIDATED_SMITHING_ADD_SETS",
{
customControl = function() return ZO_InventorySlot_GetMultiSelectItemListDialog():GetControl() end,
setup = function(dialog, data) self:SetupAddSetsDialog(data) end,
title =
{
text = SI_SMITHING_CONSOLIDATED_STATION_ADD_SET_DIALOG_TITLE,
},
buttons =
{
{
control = ZO_InventorySlot_GetMultiSelectItemListDialog():GetButton(1),
text = SI_DIALOG_CONFIRM,
callback = function()
local itemsToAdd = self.consolidatedSetsListDialog:GetSelectedItems()
PrepareConsumeAttunableStationsMessage()
--Add each item to the consume message
local addedAllItems = true
for _, item in ipairs(itemsToAdd) do
if not AddItemToConsumeAttunableStationsMessage(item.bag, item.index) then
addedAllItems = false
break
end
end
--If all items were added sucessfully, proceed with the consume
if addedAllItems then
SendConsumeAttunableStationsMessage()
end
end,
},
{
control = ZO_InventorySlot_GetMultiSelectItemListDialog():GetButton(2),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/enchanting/keyboard/applyenchant_keyboard.lua:42 --
ZO_Dialogs_RegisterCustomDialog("ENCHANTING",
{
customControl = function() return ZO_InventorySlot_GetItemListDialog():GetControl() end,
setup = function(dialog, data) self:SetupDialog(data.bag, data.index) end,
canQueue = true,
title =
{
text = SI_ENCHANT_TITLE,
},
buttons =
{
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(1),
text = SI_ENCHANT_CONFIRM,
clickSound = SOUNDS.INVENTORY_ITEM_APPLY_ENCHANT,
callback = PerformEnchant,
},
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(2),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/giftinventory/gamepad/giftinventorydialogs_gamepad.lua:36 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_CLAIM_GIFT_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
local giftData = dialog.data.gift
if giftData then
local claimQuantity = giftData:GetClaimQuantity()
if claimQuantity ~= giftData:GetQuantity() then
GAMEPAD_TOOLTIPS:LayoutPartialClaimGiftData(GAMEPAD_LEFT_DIALOG_TOOLTIP, giftData)
end
end
end,
title =
{
text = SI_CONFIRM_CLAIM_GIFT_TITLE,
},
mainText =
{
text = function(dialog)
return zo_strformat(SI_CONFIRM_CLAIM_GIFT_NOTE_ENTRY_HEADER, ZO_WHITE:Colorize(dialog.data.gift:GetUserFacingPlayerName()))
end,
},
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
canQueue = true,
parametricList =
{
-- Thank You message
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
entryData = CreateGiftMessageEntryData(),
},
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
entryData = CreateConfirmationEntryData(),
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("CONFIRM_CLAIM_GIFT_GAMEPAD")
end,
},
-- Select Button (used for entering name)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
enabled = function(dialog)
if ZO_IsConsolePlatform() then
local targetData = dialog.entryList:GetTargetData()
if targetData.messageEntry then
if IsConsoleCommunicationRestricted() then
return false, GetString(SI_CONSOLE_COMMUNICATION_PERMISSION_ERROR_GLOBALLY_RESTRICTED)
end
end
end
return true
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.messageEntry and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.confirmEntry then
local note = dialog.data.giftMessage
dialog.data.gift:TakeGift(note)
end
end,
clickSound = SOUNDS.GIFT_INVENTORY_ACTION_CLAIM,
},
-- Random note
{
keybind = "DIALOG_SECONDARY",
text = SI_GAMEPAD_GENERATE_RANDOM_NOTE,
visible = function(dialog)
local targetData = dialog.entryList:GetTargetData()
return targetData.messageEntry == true
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.messageEntry and targetControl then
targetControl.editBoxControl:SetText(GetRandomGiftThankYouNoteText())
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end
end,
},
},
noChoiceCallback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("CONFIRM_CLAIM_GIFT_GAMEPAD")
end,
onHidingCallback = function(dialog)
GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP)
end
})
- ingame/giftinventory/gamepad/giftinventorydialogs_gamepad.lua:151 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_RETURN_GIFT_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_CONFIRM_RETURN_GIFT_TITLE,
},
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
parametricList =
{
-- Return message
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
entryData = CreateGiftMessageEntryData(),
},
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
entryData = CreateConfirmationEntryData(),
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("CONFIRM_RETURN_GIFT_GAMEPAD")
end,
},
-- Select Button (used for entering name)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
enabled = function(dialog)
if ZO_IsConsolePlatform() then
local targetData = dialog.entryList:GetTargetData()
if targetData.messageEntry then
if IsConsoleCommunicationRestricted() then
return false, GetString(SI_CONSOLE_COMMUNICATION_PERMISSION_ERROR_GLOBALLY_RESTRICTED)
end
end
end
return true
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.messageEntry and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.confirmEntry then
local note = dialog.data.giftMessage
dialog.data.gift:ReturnGift(note)
end
end,
},
},
noChoiceCallback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("CONFIRM_RETURN_GIFT_GAMEPAD")
end,
})
- ingame/giftinventory/gamepad/giftinventorydialogs_gamepad.lua:227 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_DELETE_GIFT_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_CONFIRM_DELETE_GIFT_TITLE,
},
mainText =
{
text = SI_CONFIRM_DELETE_GIFT_PROMPT,
},
buttons =
{
-- Confirm Button
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_CONFIRM),
callback = function(dialog)
local gift = dialog.data.gift
gift:DeleteGift()
end,
},
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/giftinventory/gamepad/giftinventorydialogs_gamepad.lua:263 --
ZO_Dialogs_RegisterCustomDialog("CLAIM_GIFT_NOTICE_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_MARKET_PRODUCT_NAME_FORMATTER,
},
mainText =
{
text = SI_CLAIM_GIFT_NOTICE_BODY_FORMATTER,
},
buttons =
{
-- Continue Button
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_CLAIM_GIFT_NOTICE_CONTINUE_KEYBIND),
callback = function(dialog)
ZO_Dialogs_ShowGamepadDialog("CONFIRM_CLAIM_GIFT_GAMEPAD", { gift = dialog.data.gift })
end,
},
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
-- More Info Button
{
keybind = "DIALOG_TERTIARY",
text = GetString(SI_CLAIM_GIFT_NOTICE_MORE_INFO_KEYBIND),
visible = function(dialog)
return dialog.data.helpCategoryIndex ~= nil
end,
callback = function(dialog)
local data = dialog.data
HELP_TUTORIALS_ENTRIES_GAMEPAD:Push(data.helpCategoryIndex, data.helpIndex)
end,
},
},
})
- ingame/giftinventory/keyboard/giftinventorydialogs_keyboard.lua:12 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_CLAIM_GIFT_KEYBOARD",
{
canQueue = true,
title =
{
text = SI_CONFIRM_CLAIM_GIFT_TITLE,
},
customControl = self,
setup = function(dialog, gift)
local noteHeaderLabel = dialog:GetNamedChild("NoteHeader")
noteHeaderLabel:SetText(zo_strformat(SI_CONFIRM_CLAIM_GIFT_NOTE_ENTRY_HEADER, ZO_WHITE:Colorize(gift:GetUserFacingPlayerName())))
noteHeaderLabel:ClearAnchors()
dialog:GetNamedChild("NoteEdit"):SetText("")
local giftData = dialog.data
local giftQuantity = giftData:GetQuantity()
local claimQuantity = giftData:GetClaimQuantity()
local claimContainer = dialog:GetNamedChild("PartialClaim")
if claimQuantity == giftQuantity then
local promptLabel = dialog:GetNamedChild("Prompt")
noteHeaderLabel:SetAnchor(TOPLEFT, promptLabel, BOTTOMLEFT)
noteHeaderLabel:SetAnchor(TOPRIGHT, promptLabel, BOTTOMRIGHT)
claimContainer:SetHidden(true)
else
noteHeaderLabel:SetAnchor(TOPLEFT, claimContainer, BOTTOMLEFT, 0, 12)
noteHeaderLabel:SetAnchor(TOPRIGHT, claimContainer, BOTTOMRIGHT, 0, 12)
claimContainer:SetHidden(false)
local returnQuantity = giftQuantity - claimQuantity
local productName = giftData:GetName()
local productIcon = giftData:GetIcon()
local senderName = giftData:GetUserFacingPlayerName()
local returnString = zo_strformat(SI_CONFIRM_PARTIAL_GIFT_RETURN_EXPLANATION_TEXT, productName, returnQuantity, senderName)
local claimIconTexture = claimContainer:GetNamedChild("ProductIcon")
claimIconTexture:SetTexture(productIcon)
local claimQuantityLabel = claimContainer:GetNamedChild("ProductIconQuantity")
claimQuantityLabel:SetText(claimQuantity)
local claimProductNameLabel = claimContainer:GetNamedChild("ProductName")
claimProductNameLabel:SetText(productName)
local claimReturnLabel = claimContainer:GetNamedChild("ReturnExplanation")
claimReturnLabel:SetText(returnString)
end
end,
buttons =
{
-- Cancel Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
-- Confirm Button
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_CONFIRM),
callback = function(dialog)
local noteText = dialog:GetNamedChild("NoteEdit"):GetText()
dialog.data:TakeGift(noteText)
end,
clickSound = SOUNDS.GIFT_INVENTORY_ACTION_CLAIM,
},
},
})
- ingame/giftinventory/keyboard/giftinventorydialogs_keyboard.lua:92 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_RETURN_GIFT_KEYBOARD",
{
title =
{
text = SI_CONFIRM_RETURN_GIFT_TITLE,
},
customControl = self,
setup = function(dialog, gift)
dialog:GetNamedChild("NoteEdit"):SetText("")
end,
buttons =
{
-- Cancel Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
-- Confirm Button
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_CONFIRM),
callback = function(dialog)
local noteText = dialog:GetNamedChild("NoteEdit"):GetText()
dialog.data:ReturnGift(noteText)
end,
},
},
})
- ingame/giftinventory/keyboard/giftinventorydialogs_keyboard.lua:129 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_DELETE_GIFT_KEYBOARD",
{
title =
{
text = SI_CONFIRM_DELETE_GIFT_TITLE,
},
mainText =
{
text = SI_CONFIRM_DELETE_GIFT_PROMPT,
},
buttons =
{
-- Confirm Button
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_CONFIRM),
callback = function(dialog)
local gift = dialog.data
gift:DeleteGift()
end,
},
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/giftinventory/keyboard/giftinventorydialogs_keyboard.lua:164 --
ZO_Dialogs_RegisterCustomDialog("CLAIM_GIFT_NOTICE_KEYBOARD",
{
customControl = control,
setup = function(dialog)
local data = dialog.data
helpButton:SetHidden(data.helpCategoryIndex == nil)
helpButton:SetHandler("OnClicked", function()
HELP:ShowSpecificHelp(data.helpCategoryIndex, data.helpIndex)
ZO_Dialogs_ReleaseDialog(dialog)
end)
end,
title =
{
text = SI_MARKET_PRODUCT_NAME_FORMATTER,
},
mainText =
{
text = SI_CLAIM_GIFT_NOTICE_BODY_FORMATTER,
},
buttons =
{
-- Continue Button
{
control = control:GetNamedChild("Continue"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_CLAIM_GIFT_NOTICE_CONTINUE_KEYBIND),
callback = function(dialog)
ZO_Dialogs_ShowDialog("CONFIRM_CLAIM_GIFT_KEYBOARD", dialog.data.gift)
end,
},
-- Cancel Button
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
}
},
})
- ingame/groupfinder/gamepad/groupfinder_additionalfilters_gamepad.lua:30 --
ZO_Dialogs_RegisterCustomDialog("GROUP_FINDER_ADDITIONAL_FILTERS_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = setupFunction,
finishedCallback = function()
GROUP_FINDER_SEARCH_RESULTS_LIST_SCREEN_GAMEPAD:RefreshCategory()
end,
parametricList = self:BuildFiltersList(),
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
enabled = function(dialog)
local enabled = true
local targetData = dialog.entryList:GetTargetData()
if targetData then
if type(targetData.enabled) == "function" then
enabled = targetData.enabled(dialog)
else
enabled = targetData.enabled
end
end
return enabled
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
CancelGroupFinderFilterOptionsChanges()
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_ADDITIONAL_FILTERS_GAMEPAD")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_ADDITIONAL_FILTERS_GAMEPAD")
GROUP_FINDER_SEARCH_RESULTS_LIST_SCREEN_GAMEPAD:RefreshFooter()
GROUP_FINDER_SEARCH_MANAGER:ExecuteSearch()
end,
},
{
keybind = "DIALOG_RESET",
text = SI_GROUP_FINDER_FILTERS_RESET,
enabled = function(dialog)
-- TODO GroupFinder: Check to see if filters are already default
return true
end,
callback = function(dialog)
ResetGroupFinderFilterOptionsToDefault()
self:Refresh()
-- Re-narrate the selection when the filters are reset
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
dialog.info.setup(dialog)
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- ingame/groupfinder/gamepad/groupfinder_createeditgrouplisting_gamepad.lua:43 --
ZO_Dialogs_RegisterCustomDialog("GROUP_FINDER_CREATE_EDIT_GROUP_LISTING_GAMEPAD",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = setupFunction,
parametricList = self:BuildCreateEditList(),
blockDialogReleaseOnPress = true,
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
if newSelectedData and newSelectedData.isTitle then
self:UpdateTitleTooltip(dialog)
else
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
parametricListOnActivatedChangedCallback = function(list, isActive)
if not isActive then
local selectedControl = list:GetSelectedControl()
if selectedControl and selectedControl.roleSpinner then
selectedControl.roleSpinner:SetActive(false)
end
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
visible = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.roleType then
return false
end
return true
end,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
if type(targetData.enabled) == "function" then
return targetData.enabled()
else
return targetData.enabled
end
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_CREATE_EDIT_GROUP_LISTING_GAMEPAD")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = GetDialogText,
enabled = function(dialog)
local IS_EDITING = true
return ZO_GroupFinder_CanDoCreateEdit(self.userTypeData, self.groupTitleEditControl, IS_EDITING)
end,
callback = function(dialog)
self:DoCreateEdit()
-- TODO GroupFinder: Put up waiting dialog while create request is sent to server
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_CREATE_EDIT_GROUP_LISTING_GAMEPAD")
end,
},
{
keybind = "DIALOG_TERTIARY",
text = function()
return self.showInviteCode and GetString(SI_EDIT_BOX_HIDE_PASSWORD) or GetString(SI_EDIT_BOX_SHOW_PASSWORD)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.togglePasswordCallback(dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
--Re-narrate since keybind will have changed
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
visible = function(dialog)
local data = dialog.entryList:GetTargetData()
if data and data.togglePasswordCallback then
return true
end
return false
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- ingame/groupfinder/gamepad/groupfinder_searchresults_gamepad.lua:297 --
ZO_Dialogs_RegisterCustomDialog("GROUP_FINDER_APPLICATION_GAMEPAD",
{
blockDialogReleaseOnPress = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
title =
{
text = function(dialog)
return dialog.data:DoesGroupAutoAcceptRequests() and SI_GROUP_FINDER_JOIN_DIALOG_TITLE or SI_GROUP_FINDER_APPLY_DIALOG_TITLE
end,
},
mainText =
{
text = function(dialog)
local autoAccept = dialog.data:DoesGroupAutoAcceptRequests()
local descriptionFormatter = autoAccept and SI_GROUP_FINDER_JOIN_DIALOG_DESCRIPTION_FORMATTER or SI_GROUP_FINDER_APPLY_DIALOG_DESCRIPTION_FORMATTER
local descriptionText = zo_strformat(descriptionFormatter, ZO_SELECTED_TEXT:Colorize(dialog.data:GetTitle()))
return descriptionText
end,
},
warning =
{
text = function(dialog)
local autoAccept = dialog.data:DoesGroupAutoAcceptRequests()
if IsUnitGrouped("player") then
local currentGroupText = autoAccept and GetString(SI_GROUP_FINDER_JOIN_DIALOG_CURRENT_GROUP_TEXT) or GetString(SI_GROUP_FINDER_APPLY_DIALOG_CURRENT_GROUP_TEXT)
return currentGroupText
elseif HasGroupListingForUserType(GROUP_FINDER_GROUP_LISTING_USER_TYPE_APPLIED_TO_GROUP_LISTING) then
return GetString(SI_GROUP_FINDER_APPLY_JOIN_DIALOG_PENDING_APPLICATION_TEXT)
else
return ""
end
end
},
setup = function(dialog)
--Reset the invite code and optional message when opening the dialog
self.inviteCodeText = ""
self.showInviteCode = true
self.optionalMessage = ""
dialog:setupFunc()
end,
parametricList =
{
{
template = "ZO_GroupFinder_InviteCode_EditBox_Gamepad",
templateData =
{
textChangedCallback = function(control)
local inviteCodeText = control:GetText()
self.inviteCodeText = inviteCodeText
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetText(self.inviteCodeText)
control.editBoxControl:SetAsPassword(not self.showInviteCode)
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups()
end,
visible = function(dialog)
local listingData = dialog.data
if listingData then
return listingData:DoesGroupRequireInviteCode()
end
return false
end,
tooltipText = function(dialog)
local listingData = dialog.data
if listingData then
return listingData:DoesGroupAutoAcceptRequests() and GetString(SI_GROUP_FINDER_JOIN_DIALOG_INVITE_CODE_DESCRIPTION_TEXT) or GetString(SI_GROUP_FINDER_APPLY_DIALOG_INVITE_CODE_DESCRIPTION_TEXT)
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
togglePasswordCallback = function(dialog)
self.showInviteCode = not self.showInviteCode
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:SetAsPassword(not self.showInviteCode)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData =
{
textChangedCallback = function(control)
local optionalMessage = control:GetText()
self.optionalMessage = optionalMessage
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GROUP_FINDER_APPLY_DIALOG_OPTIONAL_MESSAGE_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(GROUP_FINDER_GROUP_LISTING_APPLICATION_MESSAGE_MAX_LENGTH)
control.editBoxControl:SetText(self.optionalMessage)
end,
visible = function(dialog)
local listingData = dialog.data
if listingData then
return not listingData:DoesGroupAutoAcceptRequests()
end
return false
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
finishedSelector = true,
text = GetString(SI_DIALOG_CONFIRM),
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local isValid = enabled
if data.validInput then
isValid = data.validInput(data.dialog)
data.disabled = not isValid
data:SetEnabled(isValid)
end
ZO_SharedGamepadEntry_OnSetup(control, data, selected, reselectingDuringRebuild, isValid, active)
end,
validInput = function(dialog)
local listingData = dialog.data
--If the listing requires an invite code, make sure the field has been filled out
if listingData and listingData:DoesGroupRequireInviteCode() then
return self.inviteCodeText ~= ""
end
return true
end,
tooltipText = function(dialog)
local listingData = dialog.data
if listingData and listingData:DoesGroupRequireInviteCode() and self.inviteCodeText == "" then
return ZO_ERROR_COLOR:Colorize(GetString(SI_GAMEPAD_GROUP_FINDER_APPLY_JOIN_DIALOG_INVITE_CODE_REQUIRED_TOOLTIP))
end
end,
callback = function(dialog)
local data = dialog.data
local listingIndex = data:GetListingIndex()
local result
if data:DoesGroupRequireInviteCode() then
result = RequestApplyToGroupListing(listingIndex, self.optionalMessage, tonumber(self.inviteCodeText))
else
result = RequestApplyToGroupListing(listingIndex, self.optionalMessage)
end
--If we failed to send the request, fire an alert
if result ~= GROUP_FINDER_ACTION_RESULT_SUCCESS then
ZO_Alert(UI_ALERT_CATEGORY_ALERT, SOUNDS.GENERAL_ALERT_ERROR, GetString("SI_GROUPFINDERACTIONRESULT", result))
end
--If the invite code was wrong, leave the dialog open, otherwise close it
if result ~= GROUP_FINDER_ACTION_RESULT_FAILED_INCORRECT_INVITE_CODE then
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_APPLICATION_GAMEPAD")
end
end,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
},
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
local tooltipText
if newSelectedData and newSelectedData.tooltipText then
tooltipText = newSelectedData.tooltipText(dialog)
end
if tooltipText then
GAMEPAD_TOOLTIPS:LayoutTextBlockTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, tooltipText)
ZO_GenericGamepadDialog_ShowTooltip(dialog)
else
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
enabled = function(dialog)
local selectedData = dialog.entryList:GetTargetData()
local enabled = true
if selectedData.finishedSelector then
local listingData = dialog.data
if listingData and listingData:DoesGroupRequireInviteCode() then
enabled = self.inviteCodeText ~= ""
end
end
return enabled
end,
},
{
keybind = "DIALOG_SECONDARY",
text = function()
return self.showInviteCode and GetString(SI_EDIT_BOX_HIDE_PASSWORD) or GetString(SI_EDIT_BOX_SHOW_PASSWORD)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.togglePasswordCallback(dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
--Re-narrate since keybind will have changed
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
visible = function(dialog)
local data = dialog.entryList:GetTargetData()
if data and data.togglePasswordCallback then
return true
end
return false
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_APPLICATION_GAMEPAD")
end,
},
}
})
- ingame/groupfinder/keyboard/groupfinder_additionalfilters_keyboard.lua:166 --
ZO_Dialogs_RegisterCustomDialog("GROUP_FINDER_ADDITIONAL_FILTERS_KEYBOARD",
{
customControl = self.control,
canQueue = true,
title =
{
text = SI_GROUP_FINDER_FILTERS_TITLE,
},
setup = function(dialog, data)
self:Refresh()
end,
finishedCallback = function()
GROUP_FINDER_KEYBOARD:RefreshFilterOptions()
GROUP_FINDER_KEYBOARD:RefreshCurrentRoleLabel()
end,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
control = self.cancelButton,
text = SI_DIALOG_CANCEL,
callback = function(dialog)
CancelGroupFinderFilterOptionsChanges()
ZO_Dialogs_ReleaseDialogOnButtonPress("GROUP_FINDER_ADDITIONAL_FILTERS_GAMEPAD")
end,
},
{
keybind = "DIALOG_PRIMARY",
control = self.confirmButton,
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
GROUP_FINDER_KEYBOARD:ExecuteSearchForCategory(GetGroupFinderFilterCategory())
end,
},
{
keybind = "DIALOG_RESET",
control = self.resetButton,
text = SI_GROUP_FINDER_FILTERS_RESET,
noReleaseOnClick = true,
enabled = function(dialog)
-- TODO GroupFinder: Check to see if filters are already default
return true
end,
callback = function(dialog)
ResetGroupFinderFilterOptionsToDefault()
self:Refresh()
end,
},
},
})
- ingame/groupfinder/keyboard/groupfinder_searchresults_keyboard.lua:657 --
ZO_Dialogs_RegisterCustomDialog("GROUP_FINDER_APPLICATION_KEYBOARD",
{
title =
{
text = function(dialog)
return dialog.data:DoesGroupAutoAcceptRequests() and SI_GROUP_FINDER_JOIN_DIALOG_TITLE or SI_GROUP_FINDER_APPLY_DIALOG_TITLE
end,
},
mainText =
{
text = function(dialog)
local autoAccept = dialog.data:DoesGroupAutoAcceptRequests()
local descriptionFormatter = autoAccept and SI_GROUP_FINDER_JOIN_DIALOG_DESCRIPTION_FORMATTER or SI_GROUP_FINDER_APPLY_DIALOG_DESCRIPTION_FORMATTER
local descriptionText = zo_strformat(descriptionFormatter, ZO_SELECTED_TEXT:Colorize(dialog.data:GetTitle()))
if IsUnitGrouped("player") then
local currentGroupText = autoAccept and GetString(SI_GROUP_FINDER_JOIN_DIALOG_CURRENT_GROUP_TEXT) or GetString(SI_GROUP_FINDER_APPLY_DIALOG_CURRENT_GROUP_TEXT)
return ZO_GenerateParagraphSeparatedList({ descriptionText, currentGroupText })
elseif HasGroupListingForUserType(GROUP_FINDER_GROUP_LISTING_USER_TYPE_APPLIED_TO_GROUP_LISTING) then
return ZO_GenerateParagraphSeparatedList({ descriptionText, GetString(SI_GROUP_FINDER_APPLY_JOIN_DIALOG_PENDING_APPLICATION_TEXT) })
else
return descriptionText
end
end,
},
customControl = control,
setup = function(dialog)
dialog.requiredTextFields:ClearButtons()
local inviteCodeHeader = dialog:GetNamedChild("InviteCodeHeader")
local inviteCodeControl = dialog:GetNamedChild("InviteCodeEdit")
local inviteCodeEdit = inviteCodeControl:GetNamedChild("Box")
local optionalMessageControl = dialog:GetNamedChild("OptionalMessage")
local optionalMessageEdit = optionalMessageControl:GetNamedChild("Edit")
local requiresInviteCode = dialog.data:DoesGroupRequireInviteCode()
local isAutoAccept = dialog.data:DoesGroupAutoAcceptRequests()
--If the listing requires an invite code, do not let the player confirm unless the field has been filled out
if requiresInviteCode then
dialog.requiredTextFields:AddButton(dialog:GetNamedChild("Confirm"))
end
inviteCodeHeader:SetText(isAutoAccept and GetString(SI_GROUP_FINDER_JOIN_DIALOG_INVITE_CODE_DESCRIPTION_TEXT) or GetString(SI_GROUP_FINDER_APPLY_DIALOG_INVITE_CODE_DESCRIPTION_TEXT))
inviteCodeEdit:SetText("")
local SHOW_PASSWORD = false
ZO_EditBoxKeyboard_SetAsPassword(inviteCodeEdit, SHOW_PASSWORD, inviteCodeEdit:GetNamedChild("TogglePasswordButton"))
inviteCodeHeader:SetHidden(not requiresInviteCode)
inviteCodeControl:SetHidden(not requiresInviteCode)
optionalMessageEdit:SetText("")
optionalMessageControl:SetHidden(isAutoAccept)
end,
buttons =
{
-- Confirm Button
{
noReleaseOnClick = true,
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
local listingIndex = data:GetListingIndex()
local optionalMessage = dialog:GetNamedChild("OptionalMessageEdit"):GetText()
local result
if data:DoesGroupRequireInviteCode() then
local inviteCodeText = dialog:GetNamedChild("InviteCodeEditBox"):GetText()
result = RequestApplyToGroupListing(listingIndex, optionalMessage, tonumber(inviteCodeText))
else
result = RequestApplyToGroupListing(listingIndex, optionalMessage)
end
--If we failed to send the request, fire an alert
if result ~= GROUP_FINDER_ACTION_RESULT_SUCCESS then
ZO_Alert(UI_ALERT_CATEGORY_ALERT, SOUNDS.GENERAL_ALERT_ERROR, GetString("SI_GROUPFINDERACTIONRESULT", result))
end
--If the invite code was wrong, leave the dialog open, otherwise close it
if result ~= GROUP_FINDER_ACTION_RESULT_FAILED_INCORRECT_INVITE_CODE then
ZO_Dialogs_ReleaseDialog("GROUP_FINDER_APPLICATION_KEYBOARD")
end
end,
},
-- Cancel Button
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/guild/guildheraldry_shared.lua:512 --
ZO_Dialogs_RegisterCustomDialog(self:GetPurchaseDialogName(),
{
customControl = control,
setup = SetupHeraldryDialog,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GUILD_HERALDRY_DIALOG_PURCHASE_TITLE,
},
mainText =
{
text = SI_GUILD_HERALDRY_DIALOG_PURCHASE_DESCRIPTION,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control and GetControl(control, "Accept"),
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
ApplyPendingHeraldryChanges()
dialog.data.owner.pendingTransaction = true
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control and GetControl(control, "Cancel"),
text = SI_DIALOG_CANCEL,
callback = function(dialog)
-- Do nothing
end,
},
}
})
- ingame/guild/guildheraldry_shared.lua:556 --
ZO_Dialogs_RegisterCustomDialog(self:GetApplyChangesDialogName(),
{
customControl = control,
setup = SetupHeraldryDialog,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GUILD_HERALDRY_DIALOG_APPLY_CHANGES_TITLE,
},
mainText =
{
text = function()
local textValue
if self:IsPendingExit() then
textValue = SI_GUILD_HERALDRY_DIALOG_APPLY_CHANGES_PENDING_EXIT_DESCRIPTION
else
textValue = SI_GUILD_HERALDRY_DIALOG_APPLY_CHANGES_DESCRIPTION
end
return textValue
end,
},
noChoiceCallback = function()
if self:IsPendingExit() then
self:NoChoiceExitCallback()
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control and GetControl(control, "Accept"),
text = SI_GUILD_HERALDRY_DIALOG_ACCEPT,
callback = function(dialog)
ApplyPendingHeraldryChanges()
dialog.data.owner.pendingTransaction = true
if self:IsPendingExit() then
self:ConfirmExit()
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control and GetControl(control, "Cancel"),
text = SI_GUILD_HERALDRY_DIALOG_CANCEL,
callback = function(dialog)
if self:IsPendingExit() then
self:ConfirmExit()
end
end,
},
{
keybind = "DIALOG_TERTIARY",
control = control and GetControl(control, "Return"),
text = SI_GAMEPAD_GUILD_HERALDRY_CANCEL_EXIT,
callback = function(dialog)
self:CancelExit()
end,
visible = function()
return IsInGamepadPreferredMode() and self:IsPendingExit()
end,
},
}
})
- ingame/guild/selectguilddialog.lua:34 --
ZO_Dialogs_RegisterCustomDialog(dialogName, self.dialogInfo)
- ingame/guild/zo_guildranks_shared.lua:281 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
setup = function(dialog)
dialog:GetNamedChild("NameEdit"):SetText("")
dialog.copyComboBox:ClearItems()
local noneEntry = dialog.copyComboBox:CreateItemEntry(GetString(SI_GUILD_RANKS_COPY_NONE), dialog.copyComboBox.OnRankSelected)
dialog.copyComboBox:AddItem(noneEntry)
--Skip Guild Master
for i = 2, #self.ranks do
local entry = dialog.copyComboBox:CreateItemEntry(self.ranks[i].name, dialog.copyComboBox.OnRankSelected)
entry.rankIndex = i
dialog.copyComboBox:AddItem(entry)
end
dialog.copyComboBox:SetSelectedItemText(GetString(SI_GUILD_RANKS_COPY_NONE))
dialog.copyComboBox.selectedRankIndex = nil
end,
customControl = control,
title =
{
text = SI_GUILD_RANKS_ADD_RANK,
},
buttons =
{
[1] =
{
control = GetControl(control, "Add"),
text = SI_DIALOG_CREATE,
callback = function(dialog)
local rankName = dialog:GetNamedChild("NameEdit"):GetText()
self:AddRank(rankName, dialog.copyComboBox.selectedRankIndex)
end,
},
[2] =
{
control = GetControl(control, "Cancel"),
text = SI_DIALOG_CANCEL,
callback = function()
self:CancelDialog()
end,
}
}
})
- ingame/guild/gamepad/guildroster_gamepad.lua:378 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CONFIRM_REMOVE_GUILD_MEMBER_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.canAddToBlacklist = DoesPlayerHaveGuildPermission(self.guildId, GUILD_PERMISSION_MANAGE_BLACKLIST)
self.addToBlacklist = false
self.blacklistNote = nil
GUILD_RECRUITMENT_MANAGER:RegisterCallback("GuildPermissionsChanged", OnGuildPermissionChangedCallback)
dialog:setupFunc()
-- Select Remove button if no blacklist permissions
if not DoesPlayerHaveGuildPermission(self.guildId, GUILD_PERMISSION_MANAGE_BLACKLIST) then
local REMOVE_ENTRY_INDEX = 2
dialog.entryList:SetSelectedIndex(REMOVE_ENTRY_INDEX)
end
end,
finishedCallback = function(dialog)
GUILD_RECRUITMENT_MANAGER:UnregisterCallback("GuildPermissionsChanged", OnGuildPermissionChangedCallback)
end,
title =
{
text = SI_PROMPT_TITLE_GUILD_REMOVE_MEMBER,
},
mainText =
{
text = SI_GUILD_REMOVE_MEMBER_WARNING,
},
parametricList =
{
-- Backlist checkbox
{
template = "ZO_CheckBoxTemplate_WithoutIndent_Gamepad",
templateData = {
text = GetString(SI_GUILD_RECRUITMENT_ADD_TO_BLACKLIST_ACTION),
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
data.enabled = self.canAddToBlacklist
ZO_SharedGamepadEntry_OnSetup(control, data, selected, reselectingDuringRebuild, enabled, active)
local checkboxControl = control.checkBox
if self.addToBlacklist then
ZO_CheckButton_SetChecked(checkboxControl)
else
ZO_CheckButton_SetUnchecked(checkboxControl)
end
if self.canAddToBlacklist then
ZO_CheckButton_Enable(checkboxControl)
else
ZO_CheckButton_Disable(checkboxControl)
if selected then
local NO_TOOLTIP_TITLE = nil
GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_TOOLTIP, NO_TOOLTIP_TITLE, GetString(SI_GUILD_RECRUITMENT_NO_BLACKLIST_PERMISSION))
else
GAMEPAD_TOOLTIPS:ClearLines(GAMEPAD_LEFT_TOOLTIP)
end
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
self.addToBlacklist = ZO_GamepadCheckBoxTemplate_IsChecked(targetControl)
local RESELECT_ENTRY = true
ZO_GenericParametricListGamepadDialogTemplate_RebuildEntryList(dialog, nil, RESELECT_ENTRY)
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
narrationText = ZO_GetDefaultParametricListToggleNarrationText,
},
},
-- Blacklist Note
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData = {
textChangedCallback = function(control)
local blacklistNote = control:GetText()
self.blacklistNote = blacklistNote
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_RECRUITMENT_BLACKLIST_NOTE_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_BLACKLIST_MESSAGE_LENGTH)
if self.blacklistNote then
control.editBoxControl:SetText(self.blacklistNote)
end
end,
visible = function()
return self.addToBlacklist
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Remove applicant
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_DIALOG_REMOVE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
if self.addToBlacklist then
local blacklistResult = AddToGuildBlacklistByDisplayName(dialog.data.guildId, dialog.data.displayName, self.blacklistNote)
if not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
else
GuildRemove(dialog.data.guildId, dialog.data.displayName)
end
ReleaseDialog()
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/guild/gamepad/guildroster_gamepad.lua:557 --
ZO_Dialogs_RegisterCustomDialog("GUILD_SET_RANK_GAMEPAD",
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog, data)
EVENT_MANAGER:RegisterForEvent("SetRankDialogGamepad", EVENT_GUILD_MEMBER_RANK_CHANGED, function(_, guildId, displayName)
if guildId == data.guildId and displayName == data.targetData.displayName or displayName == data.playerData.displayName then
ZO_Dialogs_ReleaseDialog("GUILD_SET_RANK_GAMEPAD")
end
end)
EVENT_MANAGER:RegisterForEvent("SetRankDialogGamepad", EVENT_GUILD_RANK_CHANGED, function(_, guildId)
if guildId == data.guildId then
ZO_Dialogs_ReleaseDialog("GUILD_SET_RANK_GAMEPAD")
end
end)
dialog.info.parametricList = {}
local targetRankIndex = data.targetData.rankIndex
local IS_GAMEPAD = true
local entries = ZO_GuildRosterManager.ComputeSetRankEntries(data.guildId, data.playerData.rankIndex, targetRankIndex, IS_GAMEPAD)
for rankIndex, entry in ipairs(entries) do
local rankEntry = ZO_GamepadEntryData:New(entry.rankName, entry.rankIcon)
rankEntry:SetEnabled(entry.enabled)
if rankIndex == targetRankIndex then
rankEntry:SetSelected(true)
end
rankEntry.rankIndex = rankIndex
rankEntry.setup = ZO_SharedGamepadEntry_OnSetup
rankEntry.callback = OnRankSelected
rankEntry.narrationText = GetRankNarrationText
table.insert(dialog.info.parametricList,
{
template = "ZO_GamepadSubMenuEntryTemplateWithStatus",
entryData = rankEntry,
})
end
dialog:setupFunc()
dialog.entryList:SetSelectedIndexWithoutAnimation(targetRankIndex)
end,
finishedCallback = function(dialog)
EVENT_MANAGER:UnregisterForEvent("SetRankDialogGamepad", EVENT_GUILD_MEMBER_RANK_CHANGED)
EVENT_MANAGER:UnregisterForEvent("SetRankDialogGamepad", EVENT_GUILD_RANK_CHANGED)
end,
title =
{
text = SI_GUILD_SET_RANK_DIALOG_TITLE,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
enabled = function(dialog)
local entry = dialog.entryList:GetTargetData()
return entry.enabled
end,
callback = function(dialog)
local entry = dialog.entryList:GetTargetData()
entry.callback(dialog, entry)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/guild/gamepad/zo_guildhub_gamepad.lua:220 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = SetupDialog,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_GAMEPAD_GUILD_INFO_CHANGE_MOTD,
},
parametricList =
{
-- motd edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData = {
nameField = true,
textChangedCallback = function(control)
local newMotd = control:GetText()
UpdateSelectedMotd(newMotd)
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_GAMEPAD_GUILD_MOTD_EMPTY_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_MOTD_LENGTH)
control.editBoxControl:SetText(self.selectedMotd)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- accept
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
finishedSelector = true,
text = GetString(SI_DIALOG_ACCEPT),
setup = SetupRequestEntry,
validInput = function()
return self.selectedMotd and self.selectedMotd ~= ""
end,
}
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
-- Select Button (used for entering name and selected alliance)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local selectedData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if selectedData.nameField and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif selectedData.finishedSelector then
if self.selectedMotd and self.selectedMotd ~= "" then
SetGuildMotD(self.optionsGuildId, self.selectedMotd)
end
ReleaseDialog()
end
end,
enabled = function()
local selectedData = parametricDialog.entryList:GetTargetData()
local enabled = true
if selectedData.finishedSelector then
enabled = self.selectedMotd and self.selectedMotd ~= ""
end
return enabled
end,
},
},
noChoiceCallback = function(dialog)
ReleaseDialog()
end,
})
- ingame/guild/gamepad/zo_guildhub_gamepad.lua:340 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = SetupDialog,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_GAMEPAD_GUILD_INFO_CHANGE_ABOUT_US,
},
parametricList =
{
-- about us edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData = {
nameField = true,
textChangedCallback = function(control)
local newAboutUs = control:GetText()
UpdateSelectedAboutUs(newAboutUs)
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_DESCRIPTION_HEADER))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_DESCRIPTION_LENGTH)
control.editBoxControl:SetText(self.selectedAboutUs)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- accept
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
finishedSelector = true,
text = GetString(SI_DIALOG_ACCEPT),
setup = SetupRequestEntry,
validInput = function()
return self.selectedAboutUs and self.selectedAboutUs ~= ""
end,
}
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
-- Select Button (used for entering name and selected alliance)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local selectedData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if selectedData.nameField and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif selectedData.finishedSelector then
if self.selectedAboutUs and self.selectedAboutUs ~= "" then
SetGuildDescription(self.optionsGuildId, self.selectedAboutUs)
end
ReleaseDialog()
end
end,
enabled = function()
local selectedData = parametricDialog.entryList:GetTargetData()
local enabled = true
if selectedData.finishedSelector then
enabled = self.selectedAboutUs and self.selectedAboutUs ~= ""
end
return enabled
end,
},
},
noChoiceCallback = function(dialog)
ReleaseDialog()
end,
})
- ingame/guild/gamepad/zo_guildhub_gamepad.lua:507 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = SetupDialog,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_PROMPT_TITLE_GUILD_CREATE,
},
parametricList =
{
-- alliance icon selector entry
{
header = GetString(SI_GAMEPAD_GUILD_CREATE_DIALOG_ALLIANCE_SELECTOR_HEADER),
template = "ZO_GamepadDropdownItem",
templateData = {
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dropDown = control.dropdown
self.allianceDropDown = dropDown
dropDown:SetSortsItems(false)
dropDown:ClearItems()
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(data.dialog, dropDown)
for i = 1, NUM_ALLIANCES do
local allianceText = zo_iconTextFormat(ZO_GetLargeAllianceSymbolIcon(i), 32, 32, GetAllianceName(i))
local entry = dropDown:CreateItemEntry(allianceText, OnAllianceSelected)
entry.allianceIndex = i
dropDown:AddItem(entry)
end
dropDown:SelectItemByIndex(self.selectedAllianceIndex)
dropDown:SetHighlightedItem(self.selectedAllianceIndex)
end,
callback = function()
self.allianceDropDown:Activate()
self.allianceDropDown:SetHighlightedItem(self.selectedAllianceIndex)
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
-- guild name edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
textChangedCallback = function(control)
local newName = control:GetText()
UpdateSelectedName(newName)
if self.noViolations or self.selectedName == "" then
control:SetColor(ZO_SELECTED_TEXT:UnpackRGB())
else
control:SetColor(ZO_ERROR_COLOR:UnpackRGB())
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_CREATE_DIALOG_NAME_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_NAME_LENGTH)
control.editBoxControl:SetText(self.selectedName)
self.createGuildEditBoxSelected = selected
self.createGuildEditBox = control.editBoxControl
UpdateSelectedName(self.selectedName)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
UpdateSelectedName(self.selectedName)
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
controlReset = function(control, pool)
control.editBoxControl:SetColor(ZO_SELECTED_TEXT:UnpackRGB())
end,
},
-- Finish
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GAMEPAD_GUILD_CREATE_DIALOG_FINISH),
setup = SetupRequestEntry,
callback = function(dialog)
if self.noViolations then
if IsConsoleUI() then
PLAYER_CONSOLE_INFO_REQUEST_MANAGER:RequestNameValidation(self.selectedName, GuildNameValidationCallback)
else
GuildCreate(self.selectedName, self.selectedAllianceIndex)
end
ReleaseDialog(dialog)
end
end,
validInput = function()
return self.noViolations
end,
}
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function(dialog)
ReleaseDialog(dialog)
end,
},
-- Select Button (used for entering name and selected alliance)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.validInput then
return targetData.validInput()
end
return true
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
},
noChoiceCallback = function(dialog)
ReleaseDialog(dialog)
end,
})
- ingame/guild/gamepad/zo_guildranks_gamepad.lua:310 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
self.noViolations = nil
self.selectedRankIndex = nil
self.selectedName = nil
UpdateSelectedName("")
dialog:setupFunc()
end,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_GUILD_RANKS_ADD_RANK,
},
parametricList =
{
-- guild name edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
local newName = control:GetText()
if self.selectedName ~= newName then
UpdateSelectedName(newName)
ZO_GenericParametricListGamepadDialogTemplate_RefreshVisibleEntries(parametricDialog)
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_GAMEPAD_GUILD_RANK_DIALOG_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_RANK_NAME_LENGTH)
control.editBoxControl:SetText(self.selectedName)
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- rank to copy entry
{
header = GetString(SI_GUILD_RANKS_COPY_HEADER),
template = "ZO_GamepadDropdownItem",
templateData = {
rankSelector = true,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.dropdown:SetSortsItems(false)
self:SetCurrentDropdown(control.dropdown)
control.dropdown:ClearItems()
local function UpdateDropdownSelection()
if(self.selectedRankIndex) then
control.dropdown:SetSelectedItemText(self.ranks[self.selectedRankIndex].name)
else
control.dropdown:SetSelectedItemText(GetString(SI_GUILD_RANKS_COPY_NONE))
end
end
local function OnRankSelected(comboBox, entryText, entry)
UpdateSelectedRankIndex(entry.rankIndex)
end
local noneEntry = control.dropdown:CreateItemEntry(GetString(SI_GUILD_RANKS_COPY_NONE), OnRankSelected)
control.dropdown:AddItem(noneEntry)
--Skip Guild Master
for i = 2, #self.ranks do
local entry = control.dropdown:CreateItemEntry(self.ranks[i].name, OnRankSelected)
entry.rankIndex = i
control.dropdown:AddItem(entry)
end
control.dropdown:UpdateItems()
UpdateDropdownSelection()
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(data.dialog, control.dropdown)
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
-- create
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
finishedSelector = true,
text = GetString(SI_DIALOG_ACCEPT),
setup = SetupRequestEntry,
validInput = function()
return self.noViolations
end,
},
icon = ZO_GAMEPAD_SUBMIT_ENTRY_ICON,
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
-- Select Button (used for entering name)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.nameField and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.rankSelector then
self.currentDropdown:Activate()
local highlightIndex = 1
if self.selectedRankIndex ~= nil then
highlightIndex = self.selectedRankIndex
end
self.currentDropdown:SetHighlightedItem(highlightIndex)
elseif targetData.finishedSelector then
if self.noViolations then
self:AddRank(self.selectedName, self.selectedRankIndex)
self:RefreshScreen()
end
ReleaseDialog()
end
end,
enabled = function()
local targetData = parametricDialog.entryList:GetTargetData()
local enabled = true
if targetData.finishedSelector then
enabled = self.noViolations
end
return enabled
end,
},
},
noChoiceCallback = function(dialog)
ReleaseDialog()
end,
})
- ingame/guild/gamepad/zo_guildranks_gamepad.lua:487 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
self.noViolations = nil
self.selectedName = nil
UpdateSelectedName(self.selectedRank:GetName())
dialog:setupFunc()
end,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = SI_GAMEPAD_GUILD_RANK_RENAME,
},
parametricList =
{
-- guild name edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
local newName = control:GetText()
if self.selectedName ~= newName then
UpdateSelectedName(newName)
ZO_GenericParametricListGamepadDialogTemplate_RefreshVisibleEntries(parametricDialog)
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_GAMEPAD_GUILD_RANK_DIALOG_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_RANK_NAME_LENGTH)
control.editBoxControl:SetText(self.selectedName)
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- confirm rename
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
finishedSelector = true,
text = GetString(SI_DIALOG_ACCEPT),
setup = SetupRequestEntry,
validInput = function()
return self.noViolations
end,
},
icon = ZO_GAMEPAD_SUBMIT_ENTRY_ICON,
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
-- Select Button (used for entering name)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.nameField and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.finishedSelector then
if self.noViolations then
self.selectedRank:SetName(self.selectedName)
self:RefreshScreen()
end
ReleaseDialog()
end
end,
enabled = function()
local targetData = parametricDialog.entryList:GetTargetData()
local enabled = true
if targetData.finishedSelector then
enabled = self.noViolations
end
return enabled
end,
},
},
noChoiceCallback = function(dialog)
ReleaseDialog()
end,
})
- ingame/guild/gamepad/zo_guildranks_gamepad.lua:600 --
ZO_Dialogs_RegisterCustomDialog(GUILD_DELETE_RANK_GAMEPAD_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = function()
return zo_strformat(SI_GAMEPAD_GUILD_RANK_DELETE_TITLE, self.selectedRank:GetName())
end,
},
mainText =
{
text = function()
return zo_strformat(SI_GUILD_RANK_DELETE_WARNING, self.selectedRank:GetName())
end,
},
setup = function()
g_deleteRankOnFinished = false
end,
finishedCallback = function(dialog)
if g_deleteRankOnFinished then
self:DeleteSelectedRank()
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_DIALOG_YES_BUTTON,
callback = function()
g_deleteRankOnFinished = true
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_DIALOG_NO_BUTTON,
callback = function()
self:RefreshScreen()
end,
},
}
})
- ingame/guild/keyboard/guildroster_keyboard.lua:377 --
ZO_Dialogs_RegisterCustomDialog("GUILD_SET_RANK_KEYBOARD",
{
title =
{
text = SI_GUILD_SET_RANK_DIALOG_TITLE,
},
mainText =
{
text = function(dialog)
return dialog.data.targetData.displayName
end
},
customControl = control,
setup = function(dialog, data)
EVENT_MANAGER:RegisterForEvent("SetRankDialogKeyboard", EVENT_GUILD_MEMBER_RANK_CHANGED, function(_, guildId, displayName)
if guildId == data.guildId and displayName == data.targetData.displayName or displayName == data.playerData.displayName then
ZO_Dialogs_ReleaseDialog("GUILD_SET_RANK_KEYBOARD")
end
end)
EVENT_MANAGER:RegisterForEvent("SetRankDialogKeyboard", EVENT_GUILD_RANK_CHANGED, function(_, guildId)
if guildId == data.guildId then
ZO_Dialogs_ReleaseDialog("GUILD_SET_RANK_KEYBOARD")
end
end)
self.setRankDialogRadioButtonGroup:Clear()
self.setRankDialogRankControlPool:ReleaseAllObjects()
local targetRankIndex = data.targetData.rankIndex
local IS_KEYBOARD = false
local entries = ZO_GuildRosterManager.ComputeSetRankEntries(data.guildId, data.playerData.rankIndex, targetRankIndex, IS_KEYBOARD)
local previousControl
local INHERIT_COLOR = true
for rankIndex, entry in ipairs(entries) do
local rank = self.setRankDialogRankControlPool:AcquireObject()
local rankButton = rank:GetNamedChild("Button")
rankButton.rankIndex = rankIndex
rankButton.label:SetText(zo_iconTextFormat(entry.rankIcon, "100%", "100%", entry.rankName, INHERIT_COLOR))
local rankBind = rank:GetNamedChild("Bind")
ZO_KeyMarkupLabel_SetCustomOffsets(rankBind, -5, 5, -2, 3)
local keyMarkup = ZO_Keybindings_GetBindingStringFromAction("SET_GUILD_RANK_"..rankIndex, KEYBIND_TEXT_OPTIONS_FULL_NAME, KEYBIND_TEXTURE_OPTIONS_EMBED_MARKUP)
rankBind:SetText(keyMarkup)
if previousControl then
rank:SetAnchor(TOPLEFT, previousControl, BOTTOMLEFT, 0, 5)
else
rank:SetAnchor(TOPLEFT, nil, TOPLEFT, 0, 0)
end
self.setRankDialogRadioButtonGroup:Add(rankButton)
self.setRankDialogRadioButtonGroup:SetButtonIsValidOption(rankButton, entry.enabled)
previousControl = rank
if rankIndex == targetRankIndex then
self.setRankDialogRadioButtonGroup:SetClickedButton(rankButton)
rankBind:SetAlpha(SELECTED_BIND_ALPHA)
else
rankBind:SetAlpha(DESELECTED_BIND_ALPHA)
end
end
end,
finishedCallback = function(dialog)
EVENT_MANAGER:UnregisterForEvent("SetRankDialogKeyboard", EVENT_GUILD_MEMBER_RANK_CHANGED)
EVENT_MANAGER:UnregisterForEvent("SetRankDialogKeyboard", EVENT_GUILD_RANK_CHANGED)
end,
buttons =
{
-- Confirm Button
{
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_ACCEPT),
callback = function(dialog)
local data = dialog.data
local newRankIndex = self.setRankDialogRadioButtonGroup:GetClickedButton().rankIndex
if newRankIndex ~= data.targetData.rankIndex then
if newRankIndex == 1 then
self:ShowPromoteToGuildMasterDialog(data.guildId, data.targetData.rankIndex, data.targetData.displayName)
else
if newRankIndex < data.targetData.rankIndex then
PlaySound(SOUNDS.GUILD_ROSTER_PROMOTE)
else
PlaySound(SOUNDS.GUILD_ROSTER_DEMOTE)
end
GuildSetRank(data.guildId, data.targetData.displayName, newRankIndex)
end
end
end,
},
-- Cancel Button
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/guild/keyboard/guildroster_keyboard.lua:561 --
ZO_Dialogs_RegisterCustomDialog("GUILD_REMOVE_MEMBER_KEYBOARD",
{
title =
{
text = SI_PROMPT_TITLE_GUILD_REMOVE_MEMBER,
},
mainText =
{
text = SI_GUILD_REMOVE_MEMBER_WARNING,
},
canQueue = true,
customControl = self,
setup = function(dialog)
local checkboxControl = dialog:GetNamedChild("Check")
local blacklistMessageControl = dialog:GetNamedChild("BlacklistMessage")
local blacklistMessageEdit = blacklistMessageControl:GetNamedChild("Edit")
-- Setup checkbox
ZO_CheckButton_SetUnchecked(checkboxControl)
ZO_CheckButton_SetLabelText(checkboxControl, GetString(SI_GUILD_RECRUITMENT_ADD_TO_BLACKLIST_ACTION))
ZO_CheckButton_SetToggleFunction(checkboxControl, function() blacklistMessageControl:SetHidden(not ZO_CheckButton_IsChecked(checkboxControl)) end)
if DoesPlayerHaveGuildPermission(dialog.data.guildId, GUILD_PERMISSION_MANAGE_BLACKLIST) then
ZO_CheckButton_Enable(checkboxControl)
ZO_CheckButton_SetTooltipEnabledState(checkboxControl, false)
else
ZO_CheckButton_SetTooltipEnabledState(checkboxControl, true)
ZO_CheckButton_SetTooltipAnchor(checkboxControl, RIGHT, checkboxControl.label)
ZO_CheckButton_SetTooltipText(checkboxControl, GetString(SI_GUILD_RECRUITMENT_NO_BLACKLIST_PERMISSION))
ZO_CheckButton_Disable(checkboxControl)
end
-- Set to default values each time dialog is opened
blacklistMessageControl:SetHidden(true)
blacklistMessageEdit:SetText("")
end,
buttons =
{
-- Yes Button
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_DIALOG_REMOVE),
callback = function(dialog)
local isChecked = ZO_CheckButton_IsChecked(dialog:GetNamedChild("Check"))
if isChecked then
local blacklistMessageControl = dialog:GetNamedChild("BlacklistMessageEdit")
local blacklistMessage = blacklistMessageControl:GetText()
local blacklistResult = AddToGuildBlacklistByDisplayName(dialog.data.guildId, dialog.data.displayName, blacklistMessage)
if not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
else
GuildRemove(dialog.data.guildId, dialog.data.displayName)
end
end,
},
-- No Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/guild/keyboard/guildweeklybidsdialog_keyboard.lua:23 --
ZO_Dialogs_RegisterCustomDialog("GUILD_WEEKLY_BIDS_KEYBOARD",
{
customControl = control,
setup = function(dialog, data)
self:DialogSetup(data)
EVENT_MANAGER:RegisterForEvent("ZO_GuildWeeklyBidsDialog_Keyboard", EVENT_GUILD_PLAYER_RANK_CHANGED, OnGuildPermissionChanged)
EVENT_MANAGER:RegisterForEvent("ZO_GuildWeeklyBidsDialog_Keyboard", EVENT_GUILD_SELF_LEFT_GUILD, OnGuildPermissionChanged)
end,
title =
{
text = SI_GUILD_WEEKLY_BIDS_TITLE,
},
finishedCallback = function(dialog)
EVENT_MANAGER:UnregisterForEvent("ZO_GuildWeeklyBidsDialog_Keyboard", EVENT_GUILD_PLAYER_RANK_CHANGED, OnGuildPermissionChanged)
EVENT_MANAGER:UnregisterForEvent("ZO_GuildWeeklyBidsDialog_Keyboard", EVENT_GUILD_SELF_LEFT_GUILD, OnGuildPermissionChanged)
end,
buttons =
{
{
control = control:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
keybind = "DIALOG_NEGATIVE",
},
}
})
- ingame/guild/keyboard/zo_guildranks_keyboard.lua:618 --
ZO_Dialogs_RegisterCustomDialog("RankIconPicker",
{
title =
{
text = SI_GUILD_RANK_ICONS_DIALOG_HEADER,
},
mainText =
{
text = "",
},
setup = function()
self.rankIconPicker:RefreshGridList()
end,
customControl = self,
buttons =
{
[1] =
{
control = self:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
},
}
})
- ingame/guildfinder/gamepad/guildbrowser_gamepad.lua:713 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_GUILD_BROWSER_FILTERS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = setupFunction,
parametricList =
{
-- Has Trader
{
template = "ZO_CheckBoxTemplate_WithoutIndent_Gamepad",
text = GetString(SI_GAMEPAD_GUILD_BROWSER_FILTERS_HAS_GUILD_TRADER),
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
ZO_GamepadCheckBoxTemplate_Setup(control, data, selected, reselectingDuringRebuild, enabled, active)
if self.hasGuildTrader then
ZO_CheckButton_SetChecked(control.checkBox)
else
ZO_CheckButton_SetUnchecked(control.checkBox)
end
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
self.hasGuildTrader = ZO_GamepadCheckBoxTemplate_IsChecked(targetControl)
self.filterManager:SetFilterValueIsDefaultByAttributeType(GUILD_META_DATA_ATTRIBUTE_KIOSK, self.hasGuildTrader == self.filterManager:GetHasGuildTraderDefault())
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
narrationText = ZO_GetDefaultParametricListToggleNarrationText,
},
},
-- Activities
activitiesDropdownEntry,
-- Personalities
personalitiesDropdownEntry,
-- Roles
roleDropdownEntry,
-- Min Champion Points
{
template = "ZO_GuildBrowser_ChampionPoint_EditBox_Gamepad",
headerTemplate = "ZO_GamepadMenuEntryFullWidthHeaderTemplate",
header = GetString(SI_GUILD_BROWSER_CHAMPION_POINT_RANGE_HEADER),
templateData =
{
textChangedCallback = function(control)
local newCP = tonumber(control:GetText())
if self.minCP ~= newCP then
self.minCP = newCP
local maxAllowedValue = ZO_GuildFinder_Manager.GetMaxCPAllowedForInput()
if self.minCP == nil then
self.minCP = self.filterManager:GetMinCPDefault()
elseif self.minCP > self.maxCP then
self.minCP = self.maxCP
elseif self.minCP > maxAllowedValue then
self.minCP = maxAllowedValue
end
self.filterManager:SetFilterValueIsDefaultByAttributeType(GUILD_META_DATA_ATTRIBUTE_MINIMUM_CP, self.minCP == self.filterManager:GetMinCPDefault())
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetText(self.minCP)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local edit = data.control.editBoxControl
edit:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Max Champion Points
{
template = "ZO_GuildBrowser_ChampionPoint_EditBox_Gamepad",
headerTemplate = "ZO_GamepadMenuEntryFullWidthHeaderTemplate",
header = GetString(SI_GAMEPAD_GUILD_BROWSER_MAX_CHAMPION_POINTS_FILTER),
templateData =
{
textChangedCallback = function(control)
local newCP = tonumber(control:GetText())
if self.maxCP ~= newCP then
self.maxCP = newCP
local maxAllowedValue = ZO_GuildFinder_Manager.GetMaxCPAllowedForInput()
if self.maxCP == nil then
self.maxCP = self.filterManager:GetMaxCPDefault()
elseif self.minCP > self.maxCP then
self.maxCP = self.minCP
elseif self.maxCP > maxAllowedValue then
self.maxCP = maxAllowedValue
end
self.filterManager:SetFilterValueIsDefaultByAttributeType(GUILD_META_DATA_ATTRIBUTE_MINIMUM_CP, self.maxCP == self.filterManager:GetMaxCPDefault())
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetText(self.maxCP)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local edit = data.control.editBoxControl
edit:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Language
languageDropdownEntry,
-- Alliance
allianceDropdownEntry,
-- Size
sizeDropdownEntry,
-- Start Time
startTimeDropdownEntry,
-- End Time
endTimeDropdownEntry,
},
blockDialogReleaseOnPress = true,
buttons =
{
primaryButton,
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_GUILD_BROWSER_FILTERS")
end,
},
resetFilterButton,
},
onHidingCallback = OnHidingCallback,
noChoiceCallback = NoChoiceCallback,
})
- ingame/guildfinder/gamepad/guildbrowser_gamepad.lua:880 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_GAMEPAD_GUILD_BROWSER_APPLICATION_MESSAGE_DIALOG_HEADER))
dialog.currentText = GUILD_BROWSER_MANAGER:GetSavedApplicationMessage()
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:ShowApplicationMessageTooltip()
end,
parametricList =
{
-- Edit Box
{
template = "ZO_Gamepad_GenericDialog_TextFieldItem_Multiline_Large",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
local dialog = data.dialog
control.editBoxControl.textChangedCallback = function(control)
dialog.currentText = control:GetText()
end
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_BROWSER_APPLICATIONS_MESSAGE_EMPTY_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_APPLICATION_MESSAGE_LENGTH)
control.editBoxControl:SetText(dialog.currentText)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local edit = data.control.editBoxControl
edit:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
}
},
-- Accept
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_ACCEPT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
GUILD_BROWSER_MANAGER:SetSavedApplicationMessage(dialog.currentText)
ReleaseDialog()
end
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
},
})
- ingame/guildfinder/gamepad/guildbrowser_guildinfo_gamepad.lua:356 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SUBMIT_GUILD_FINDER_APPLICATION",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_TITLE))
self.applicationSubmissionText = GUILD_BROWSER_MANAGER:GetSavedApplicationMessage()
local ICON_SIZE = 32
local displayData =
{
data1 =
{
header = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_CHARACTER_LABEL),
value = zo_strformat(SI_GAMEPAD_GUILD_BROWSER_GUILD_LIST_CONTEXTUAL_INFO_FORMATTER, GetRawUnitName("player"))
},
data2 =
{
header = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_LEVEL_LABEL),
value = zo_strformat(SI_GAMEPAD_GUILD_BROWSER_GUILD_LIST_CONTEXTUAL_INFO_FORMATTER, ZO_GetLevelOrChampionPointsString(GetUnitLevel("player"), GetUnitChampionPoints("player"), ICON_SIZE))
},
data3 =
{
header = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_CLASS_LABEL),
value = zo_strformat(SI_GAMEPAD_GUILD_BROWSER_GUILD_LIST_CONTEXTUAL_INFO_FORMATTER, GetUnitClass("player"))
},
data4 =
{
header = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_ACHIEVEMENT_POINTS_LABEL),
value = zo_strformat(SI_GAMEPAD_GUILD_BROWSER_GUILD_LIST_CONTEXTUAL_INFO_FORMATTER, GetEarnedAchievementPoints())
},
}
local DONT_LIMIT_NUM_ENTRIES = nil
dialog:setupFunc(DONT_LIMIT_NUM_ENTRIES, displayData)
end,
parametricList =
{
-- Application Message
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
header = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_MESSAGE_HEADER),
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
local dialog = data.dialog
control.editBoxControl:SetMaxInputChars(MAX_GUILD_APPLICATION_MESSAGE_LENGTH)
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_DEFAULT_EDIT_TEXT))
control.editBoxControl.textChangedCallback = function(control)
self.applicationSubmissionText = control:GetText()
end
data.control = control
if self.applicationSubmissionText == "" then
control.resetFunction = function()
control.editBoxControl.textChangedCallback = nil
control.editBoxControl:SetText("")
end
else
control.editBoxControl:SetText(self.applicationSubmissionText)
end
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local edit = data.control.editBoxControl
edit:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Apply To Guild
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_GUILD_BROWSER_GUILD_INFO_APPLY_TO_GUILD),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local applicationResult = SubmitGuildFinderApplication(self.currentGuildId, self.applicationSubmissionText)
if applicationResult ~= GUILD_APP_RESPONSE_APPLICATION_SENT then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_APPLICATION_FAILED", nil, { mainTextParams = { GetString("SI_GUILDAPPLICATIONRESPONSE", applicationResult) } })
end
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_SUBMIT_GUILD_FINDER_APPLICATION")
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
-- Select
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_SUBMIT_GUILD_FINDER_APPLICATION")
end,
},
},
})
- ingame/guildfinder/gamepad/guildrecruitment_applications_gamepad.lua:157 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GAMEPAD_CONFIRM_ACCEPT_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.acceptConfirmText = nil
self:RegisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS, ReleaseDialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:UnregisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS)
end,
title =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_ACCEPT_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_ACCEPT_DESCRIPTION,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local acceptApplicationResult = AcceptGuildApplication(dialog.data.guildId, dialog.data.index)
if ZO_GuildFinder_Manager.IsFailedApplicationResult(acceptApplicationResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_PROCESS_APPLICATION_FAILED", nil, { mainTextParams = { acceptApplicationResult } })
end
ReleaseDialog()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_applications_gamepad.lua:218 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GAMEPAD_CONFIRM_DECLINE_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.declineMessage = GUILD_RECRUITMENT_MANAGER:GetSavedApplicationsDefaultMessage(self.guildId)
self.addToBlacklist = false
self.blacklistNote = nil
self:RegisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS, ReleaseDialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:UnregisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS)
end,
title =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_DECLINE_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_DECLINE_DESCRIPTION,
},
parametricList =
{
-- Text reply to applicant
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData = {
textChangedCallback = function(control)
local declineMessage = control:GetText()
self.declineMessage = declineMessage
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl:SetMaxInputChars(MAX_GUILD_APPLICATION_DECLINE_MESSAGE_LENGTH)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_RECRUITMENT_APPLICATION_DECLINE_DEFAULT_RESPONSE))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_APPLICATION_DECLINE_MESSAGE_LENGTH)
if self.declineMessage then
control.editBoxControl:SetText(self.declineMessage)
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Blacklist checkbox
{
template = "ZO_CheckBoxTemplate_WithoutIndent_Gamepad",
templateData = {
text = GetString(SI_GUILD_RECRUITMENT_ADD_TO_BLACKLIST_ACTION),
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local hasPermission = DoesPlayerHaveGuildPermission(self.guildId, GUILD_PERMISSION_MANAGE_BLACKLIST)
local blacklistFull = GetNumGuildBlacklistEntries(self.guildId) >= MAX_GUILD_BLACKLISTED_PLAYERS
enabled = hasPermission and not blacklistFull
data.enabled = enabled
ZO_SharedGamepadEntry_OnSetup(control, data, selected, reselectingDuringRebuild, enabled, active)
local checkboxControl = control.checkBox
if self.addToBlacklist then
ZO_CheckButton_SetChecked(checkboxControl)
else
ZO_CheckButton_SetUnchecked(checkboxControl)
end
if enabled then
ZO_CheckButton_Enable(checkboxControl)
else
ZO_CheckButton_Disable(checkboxControl)
if selected then
local NO_TOOLTIP_TITLE = nil
local tooltipText = ""
if not hasPermission then
tooltipText = GetString(SI_GUILD_RECRUITMENT_NO_BLACKLIST_PERMISSION)
elseif blacklistFull then
tooltipText = GetString("SI_GUILDBLACKLISTRESPONSE", GUILD_BLACKLIST_RESPONSE_BLACKLIST_FULL)
end
GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_TOOLTIP, NO_TOOLTIP_TITLE, tooltipText)
else
GAMEPAD_TOOLTIPS:ClearLines(GAMEPAD_LEFT_TOOLTIP)
end
end
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
self.addToBlacklist = ZO_GamepadCheckBoxTemplate_IsChecked(targetControl)
local RESELECT_ENTRY = true
ZO_GenericParametricListGamepadDialogTemplate_RebuildEntryList(dialog, nil, RESELECT_ENTRY)
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
narrationText = ZO_GetDefaultParametricListToggleNarrationText,
},
},
-- Blacklist Note
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem_Multiline",
templateData = {
textChangedCallback = function(control)
local blacklistNote = control:GetText()
self.blacklistNote = blacklistNote
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_RECRUITMENT_BLACKLIST_NOTE_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_BLACKLIST_MESSAGE_LENGTH)
if self.blacklistNote then
control.editBoxControl:SetText(self.blacklistNote)
end
end,
visible = function()
return self.addToBlacklist
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Decline applicant
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GUILD_RECRUITMENT_APPLICATION_DECLINE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local declineApplicationResult, blacklistResult = DeclineGuildApplication(dialog.data.guildId, dialog.data.index, self.declineMessage, self.addToBlacklist, self.blacklistNote)
ReleaseDialog()
if ZO_GuildFinder_Manager.IsFailedApplicationResult(declineApplicationResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_APPLICATION_DECLINED_FAILED", nil, { mainTextParams = { GetString("SI_GUILDPROCESSAPPLICATIONRESPONSE", declineApplicationResult) } })
elseif self.addToBlacklist and not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_applications_gamepad.lua:407 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GAMEPAD_OPTIONS_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self:RegisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS, ReleaseDialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:UnregisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_APPLICATIONS)
end,
title =
{
text = SI_GAMEPAD_OPTIONS_MENU,
},
parametricList =
{
-- Send Mail
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_SOCIAL_MENU_SEND_MAIL),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
MAIL_GAMEPAD:GetSend():ComposeMailTo(ZO_FormatUserFacingCharacterOrDisplayName(dialog.data.name))
ReleaseDialog()
end,
},
},
-- Report
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_GUILD_FINDER_REPORT_ACTION),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local selectedData = self:GetSelectedData()
if selectedData then
local function ReportCallback()
-- If the player was reported then decline their application
local NO_MESSAGE = ""
local BLACKLIST = true
local declineApplicationResult, blacklistResult = DeclineGuildApplication(selectedData.guildId, selectedData.index, NO_MESSAGE, BLACKLIST, NO_MESSAGE)
if ZO_GuildFinder_Manager.IsFailedApplicationResult(declineApplicationResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_APPLICATION_DECLINED_FAILED", nil, { mainTextParams = { GetString("SI_GUILDPROCESSAPPLICATIONRESPONSE", declineApplicationResult) } })
elseif not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
end
ZO_HELP_GENERIC_TICKET_SUBMISSION_MANAGER:OpenReportPlayerTicketScene(dialog.data.name, ReportCallback)
end
ReleaseDialog()
end,
},
},
-- View Gamercard
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(ZO_GetGamerCardStringId()),
setup = ZO_SharedGamepadEntry_OnSetup,
visible = IsConsoleUI,
callback = function()
local selectedData = self:GetSelectedData()
if selectedData then
ZO_ShowGamerCardFromDisplayNameOrFallback(selectedData.name, ZO_ID_REQUEST_TYPE_GUILD_APPLICATION_INFO, selectedData.guildId, selectedData.index)
end
ReleaseDialog()
end,
}
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_blacklist_gamepad.lua:125 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GAMEPAD_BLACKLIST_PLAYER_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
self:RegisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_BLACKLIST, ReleaseDialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:UnregisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_BLACKLIST)
end,
title =
{
text = SI_GUILD_RECRUITMENT_BLACKLIST_PLAYER_ACTION_TEXT,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
parametricDialog.data.name = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
local platform = ZO_GetPlatformAccountLabel()
control.editBoxControl:SetDefaultText(zo_strformat(SI_REQUEST_DISPLAY_NAME_INSTRUCTIONS, platform))
if parametricDialog.data.name then
control.editBoxControl:SetText(parametricDialog.data.name)
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- note
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
parametricDialog.data.note = control:GetText()
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl:SetMaxInputChars(MAX_GUILD_BLACKLIST_MESSAGE_LENGTH)
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_RECRUITMENT_BLACKLIST_DEFAULT_NOTE_TEXT))
control.editBoxControl.textChangedCallback = data.textChangedCallback
if parametricDialog.data.note then
control.editBoxControl:SetText(parametricDialog.data.note)
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
-- Add to Blacklist
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
confirmEntry = true,
text = GetString(SI_GUILD_RECRUITMENT_ADD_TO_BLACKLIST_ACTION),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local blacklistResult = AddToGuildBlacklistByDisplayName(dialog.data.guildId, dialog.data.name, dialog.data.note)
if not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
ReleaseDialog()
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData.messageEntry then
if ZO_IsConsolePlatform() then
if IsConsoleCommunicationRestricted() then
return false, GetString(SI_CONSOLE_COMMUNICATION_PERMISSION_ERROR_GLOBALLY_RESTRICTED)
end
end
elseif targetData.confirmEntry then
local blacklistDisplayName = dialog.data.name or ""
local result = IsGuildBlacklistAccountNameValid(dialog.data.guildId, blacklistDisplayName)
if ZO_GuildRecruitment_Manager.IsBlacklistResultSuccessful(result) then
return true
else
local errorText = zo_strformat(GetString("SI_GUILDBLACKLISTRESPONSE", result), blacklistDisplayName)
return false, errorText
end
end
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_blacklist_gamepad.lua:269 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GAMEPAD_SELECT_BLACKLIST_ENTRY_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self:RegisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_BLACKLIST, ReleaseDialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
self:UnregisterPermissionRemovedDialogCallback(GUILD_PERMISSION_MANAGE_BLACKLIST)
end,
title =
{
text = SI_GAMEPAD_OPTIONS_MENU,
},
parametricList =
{
-- Remove from Blacklist
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_GUILD_RECRUITMENT_BLACKLIST_REMOVE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local blacklistResult = RemoveFromGuildBlacklist(dialog.data.guildId, dialog.data.index)
if not ZO_GuildRecruitment_Manager.IsBlacklistResultSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
ReleaseDialog()
end,
},
},
-- Edit Note
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = {
text = GetString(SI_SOCIAL_MENU_EDIT_NOTE),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
local function NoteChangedCallback(displayName, note)
local blacklistResult = SetGuildBlacklistNote(self.guildId, dialog.data.index, note)
if not ZO_GuildRecruitment_Manager.IsBlacklistResultSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
end
ReleaseDialog()
local data =
{
displayName = dialog.data.name,
index = dialog.data.index,
note = dialog.data.note,
noteChangedCallback = NoteChangedCallback,
}
ZO_Dialogs_ShowGamepadDialog("GAMEPAD_SOCIAL_EDIT_NOTE_DIALOG", data)
end,
},
},
-- View Gamercard
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(ZO_GetGamerCardStringId()),
setup = ZO_SharedGamepadEntry_OnSetup,
visible = IsConsoleUI,
callback = function(dialog)
ZO_ShowGamerCardFromDisplayNameOrFallback(dialog.data.name, ZO_ID_REQUEST_TYPE_GUILD_BLACKLIST_INFO, self.guildId, dialog.data.index)
ReleaseDialog()
end,
}
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_gamepad.lua:362 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_GUILD_RECRUITMENT_DEFAULT_RESPONSE_HEADER))
dialog.currentText = GUILD_RECRUITMENT_MANAGER:GetSavedApplicationsDefaultMessage(self.guildId)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
GUILD_RECRUITMENT_RESPONSE_MESSAGE_GAMEPAD:OnShowing()
end,
parametricList =
{
-- Edit Box
{
template = "ZO_Gamepad_GenericDialog_TextFieldItem_Multiline_Large",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
local dialog = data.dialog
control.editBoxControl.textChangedCallback = function(control)
dialog.currentText = control:GetText()
end
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_GUILD_RECRUITMENT_DEFAULT_RESPONSE_DEFAULT_TEXT))
control.editBoxControl:SetMaxInputChars(MAX_GUILD_APPLICATION_DECLINE_MESSAGE_LENGTH)
control.editBoxControl:SetText(dialog.currentText)
end,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
local edit = data.control.editBoxControl
edit:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
}
},
-- Accept
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_ACCEPT),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
GUILD_RECRUITMENT_MANAGER:SetSavedApplicationsDefaultMessage(self.guildId, dialog.currentText)
ReleaseDialog()
end
}
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
},
})
- ingame/guildfinder/gamepad/guildrecruitment_guildlisting_gamepad.lua:278 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GUILD_LISTING_GAMEPAD_NOT_LISTED_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.STATIC_LIST,
allowShowOnNextScene = true,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GUILD_RECRUITMENT_NOT_LISTED_DIALOG_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_NOT_LISTED_DIALOG_DESCRIPTION,
},
itemInfo = function(dialog)
local bulletListTable = {}
for i, attribute in ipairs(dialog.data) do
table.insert(bulletListTable,
{
icon = BULLET_ICON,
iconSize = BULLET_ICON_SIZE,
label = GetString("SI_GUILDMETADATAATTRIBUTE", attribute),
})
end
return bulletListTable
end,
buttons =
{
-- Exit Button
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/gamepad/guildrecruitment_guildlisting_gamepad.lua:338 --
ZO_Dialogs_RegisterCustomDialog(ZO_GUILD_RECRUITMENT_GUILD_LISTING_GAMEPAD_UNLISTED_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.STATIC_LIST,
allowShowOnNextScene = true,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GUILD_RECRUITMENT_LISTING_FAILED_DIALOG_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_LISTING_FAILED_DIALOG_DESCRIPTION,
},
itemInfo = function(dialog)
local bulletListTable = {}
for i, attribute in ipairs(dialog.data) do
table.insert(bulletListTable,
{
icon = BULLET_ICON,
iconSize = BULLET_ICON_SIZE,
label = GetString("SI_GUILDMETADATAATTRIBUTE", attribute),
})
end
return bulletListTable
end,
buttons =
{
-- Exit Button
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ReleaseDialog()
end,
},
}
})
- ingame/guildfinder/keyboard/guildbrowser_guildinfo_keyboard.lua:278 --
ZO_Dialogs_RegisterCustomDialog("SUBMIT_GUILD_FINDER_APPLICATION",
{
customControl = control,
setup = SubmitApplicationDialogSetup,
title =
{
text = SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = control:GetNamedChild("Submit"),
text = GetString(SI_GUILD_BROWSER_SUBMIT_APPLICATION_DIALOG_BUTTON_SUBMIT),
callback = function(dialog)
local message = dialog:GetNamedChild("ApplicationMessageEdit"):GetText()
GUILD_BROWSER_GUILD_INFO_KEYBOARD:OnApplyToGuildSubmit(message)
end,
},
[2] =
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/guildfinder/keyboard/guildbrowser_guildlist_keyboard.lua:506 --
ZO_Dialogs_RegisterCustomDialog("GUILD_BROWSER_ADDITIONAL_FILTERS",
{
customControl = self,
canQueue = true,
title =
{
text = SI_GUILD_BROWSER_GUILD_LIST_ADDITIONAL_FILTERS,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = self.confirmButton,
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
GUILD_BROWSER_GUILD_LIST_KEYBOARD:OnAdditionalFiltersDialogClose()
end
},
{
keybind = "DIALOG_RESET",
control = self.resetButton,
text = SI_GUILD_BROWSER_RESET_FILTERS_KEYBIND,
noReleaseOnClick = true,
enabled = function(dialog)
return not GUILD_BROWSER_GUILD_LIST_KEYBOARD.filterManager:AreFiltersSetToDefault()
end,
callback = function(dialog)
GUILD_BROWSER_GUILD_LIST_KEYBOARD:ResetFilters()
end
},
},
})
- ingame/guildfinder/keyboard/guildrecruitment_applicationslist_keyboard.lua:195 --
ZO_Dialogs_RegisterCustomDialog("GUILD_DECLINE_APPLICATION_KEYBOARD",
{
title =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_DECLINE_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_APPLICATION_DECLINE_DESCRIPTION,
},
canQueue = true,
customControl = self,
setup = function(dialog)
local declineMessageEdit = dialog:GetNamedChild("DeclineMessageEdit")
declineMessageEdit:SetMaxInputChars(MAX_GUILD_APPLICATION_DECLINE_MESSAGE_LENGTH)
local checkboxControl = dialog:GetNamedChild("Check")
local blacklistMessageControl = dialog:GetNamedChild("BlacklistMessage")
local blacklistMessageEdit = blacklistMessageControl:GetNamedChild("Edit")
-- Setup checkbox
ZO_CheckButton_SetUnchecked(checkboxControl)
ZO_CheckButton_SetLabelText(checkboxControl, GetString(SI_GUILD_RECRUITMENT_ADD_TO_BLACKLIST_ACTION))
ZO_CheckButton_SetToggleFunction(checkboxControl, function() blacklistMessageControl:SetHidden(not ZO_CheckButton_IsChecked(checkboxControl)) end)
local function DisableBlacklistCheckbox(tooltipString)
ZO_CheckButton_SetUnchecked(checkboxControl)
ZO_CheckButton_SetTooltipEnabledState(checkboxControl, true)
ZO_CheckButton_SetTooltipAnchor(checkboxControl, RIGHT, checkboxControl.label)
ZO_CheckButton_SetTooltipText(checkboxControl, tooltipString)
ZO_CheckButton_Disable(checkboxControl)
end
if DoesPlayerHaveGuildPermission(dialog.data.guildId, GUILD_PERMISSION_MANAGE_BLACKLIST) then
if GetNumGuildBlacklistEntries(dialog.data.guildId) >= MAX_GUILD_BLACKLISTED_PLAYERS then
DisableBlacklistCheckbox(GetString("SI_GUILDBLACKLISTRESPONSE", GUILD_BLACKLIST_RESPONSE_BLACKLIST_FULL))
else
ZO_CheckButton_Enable(checkboxControl)
ZO_CheckButton_SetTooltipEnabledState(checkboxControl, false)
end
else
DisableBlacklistCheckbox(GetString(SI_GUILD_RECRUITMENT_NO_BLACKLIST_PERMISSION))
end
-- Set to default values each time dialog is opened
declineMessageEdit:SetText(GUILD_RECRUITMENT_MANAGER:GetSavedApplicationsDefaultMessage(dialog.data.guildId) or "")
blacklistMessageControl:SetHidden(true)
blacklistMessageEdit:SetText("")
end,
buttons =
{
-- Confirm Button
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local declineMessageControl = dialog:GetNamedChild("DeclineMessageEdit")
local declineMessage = declineMessageControl:GetText()
local isChecked = ZO_CheckButton_IsChecked(dialog:GetNamedChild("Check"))
local blacklistMessageControl = dialog:GetNamedChild("BlacklistMessageEdit")
local blacklistMessage = blacklistMessageControl:GetText()
local declineApplicationResult, blacklistResult = DeclineGuildApplication(dialog.data.guildId, dialog.data.index, declineMessage, isChecked, blacklistMessage)
if ZO_GuildFinder_Manager.IsFailedApplicationResult(declineApplicationResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_APPLICATION_DECLINED_FAILED", nil, { mainTextParams = { GetString("SI_GUILDPROCESSAPPLICATIONRESPONSE", declineApplicationResult) } })
elseif isChecked and not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
end,
},
-- Cancel Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/guildfinder/keyboard/guildrecruitment_blacklist_keyboard.lua:277 --
ZO_Dialogs_RegisterCustomDialog("GUILD_ADD_PLAYER_TO_BLACKLIST",
{
title =
{
text = SI_GUILD_RECRUITMENT_BLACKLIST_ADD_PLAYER_DIALOG_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_BLACKLIST_ADD_PLAYER_DIALOG_DESCRIPTION,
},
canQueue = true,
customControl = self,
setup = function(dialog)
local nameEditControl = dialog:GetNamedChild("NameEdit")
nameEditControl:SetText("")
dialog:GetNamedChild("NoteEdit"):SetText("")
UpdateAddRestrictions(nameEditControl)
end,
buttons =
{
-- Yes Button
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_YES),
callback = function(dialog)
local nameControl = dialog:GetNamedChild("NameEdit")
local name = nameControl:GetText()
local noteControl = dialog:GetNamedChild("NoteEdit")
local note = noteControl:GetText()
local blacklistResult = AddToGuildBlacklistByDisplayName(dialog.data.guildId, name, note)
if not ZO_GuildRecruitment_Manager.IsAddedToBlacklistSuccessful(blacklistResult) then
ZO_Dialogs_ShowPlatformDialog("GUILD_FINDER_BLACKLIST_FAILED", nil, { mainTextParams = { blacklistResult } })
end
end,
},
-- No Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_NO),
},
},
finishedCallback = function()
ClearTooltipImmediately(InformationTooltip)
end,
})
- ingame/guildfinder/keyboard/guildrecruitment_guildlisting_keyboard.lua:204 --
ZO_Dialogs_RegisterCustomDialog("GUILD_NOT_LISTED_KEYBOARD",
{
title =
{
text = SI_GUILD_RECRUITMENT_NOT_LISTED_DIALOG_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_NOT_LISTED_DIALOG_DESCRIPTION,
},
canQueue = true,
customControl = self,
setup = function(dialog)
if not dialog.bulletList then
dialog.bulletList = ZO_BulletList:New(dialog:GetNamedChild("BulletList"))
end
dialog.bulletList:Clear()
for i, attribute in ipairs(dialog.data) do
dialog.bulletList:AddLine(GetString("SI_GUILDMETADATAATTRIBUTE", attribute))
end
end,
buttons =
{
-- Exit Button
{
control = self:GetNamedChild("Exit"),
keybind = "DIALOG_NEGATIVE",
text = SI_EXIT_BUTTON,
},
},
})
- ingame/guildfinder/keyboard/guildrecruitment_guildlisting_keyboard.lua:240 --
ZO_Dialogs_RegisterCustomDialog("GUILD_UNLISTED_KEYBOARD",
{
title =
{
text = SI_GUILD_RECRUITMENT_LISTING_FAILED_DIALOG_TITLE,
},
mainText =
{
text = SI_GUILD_RECRUITMENT_LISTING_FAILED_DIALOG_DESCRIPTION,
},
canQueue = true,
customControl = self,
setup = function(dialog)
if not dialog.bulletList then
dialog.bulletList = ZO_BulletList:New(dialog:GetNamedChild("BulletList"))
end
dialog.bulletList:Clear()
for i, attribute in ipairs(dialog.data) do
dialog.bulletList:AddLine(GetString("SI_GUILDMETADATAATTRIBUTE", attribute))
end
end,
buttons =
{
-- Exit Button
{
control = self:GetNamedChild("Exit"),
keybind = "DIALOG_NEGATIVE",
text = SI_EXIT_BUTTON,
},
},
})
- ingame/guildkiosk/gamepad/guildkiosk_gamepad.lua:122 --
ZO_Dialogs_RegisterCustomDialog("PURCHASE_KIOSK_GAMEPAD",
{
setup = function(dialog, data) self:SetupDialogLabels(dialog, data) end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GAMEPAD_GUILD_KIOSK_DIALOG_TITLE,
},
mainText =
{
text = function()
return zo_strformat(SI_GAMEPAD_GUILD_KIOSK_DIALOG, ZO_SELECTED_TEXT:Colorize(self.guildName))
end
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_DECLINE
},
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_GUILD_KIOSK_HIRE_KEYBIND,
callback = function()
GuildKioskPurchase(self.guildId)
PlaySound(SOUNDS.ITEM_MONEY_CHANGED)
SCENE_MANAGER:PopScenes(NUMBER_OF_KIOSK_SCENES)
end
}
},
noChoiceCallback = function()
SCENE_MANAGER:PopScenes(NUMBER_OF_KIOSK_SCENES)
end
})
- ingame/guildkiosk/gamepad/guildkiosk_gamepad.lua:499 --
ZO_Dialogs_RegisterCustomDialog("BID_KIOSK_GAMEPAD",
{
setup = function(dialog, data) self:SetupDialogLabels(dialog, data) end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GAMEPAD_GUILD_KIOSK_BID_DIALOG_TITLE,
},
mainText =
{
text = function()
return zo_strformat(SI_GAMEPAD_GUILD_KIOSK_BID_BODY, ZO_SELECTED_TEXT:Colorize(self.guildName))
end
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_DECLINE
},
{
keybind = "DIALOG_PRIMARY",
text = function()
return ZO_GuildKiosk_Bid_Shared.GetBidActionText(self.hasBidOnThisTraderAlready)
end,
callback = function()
GuildKioskBid(self.guildId, self.bidAmount)
PlaySound(SOUNDS.ITEM_MONEY_CHANGED)
ZO_AlertNoSuppression(UI_ALERT_CATEGORY_ALERT, nil, SI_GAMEPAD_GUILD_KIOSK_BID_ALERT)
self.shouldPopScenes = true
end
}
},
finishedCallback = function(dialog)
if self.shouldPopScenes then
SCENE_MANAGER:PopScenes(NUMBER_OF_KIOSK_SCENES)
end
end,
noChoiceCallback = function()
SCENE_MANAGER:PopScenes(NUMBER_OF_KIOSK_SCENES)
end
})
- ingame/help/gamepad/help_root_gamepad.lua:138 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_UNSTUCK_CONFIRM_DIALOG,
{
canQueue = true,
mustChoose = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GAMEPAD_HELP_GET_ME_UNSTUCK,
},
mainText =
{
text = function()
local currencyAmount = GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER) + GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_BANK)
local cost = zo_min(GetRecallCost(), currencyAmount)
local goldIcon = ZO_Currency_GetGamepadFormattedCurrencyIcon(CURT_MONEY)
local primaryButtonMarkup = ZO_WHITE:Colorize(ZO_Keybindings_GetHighestPriorityBindingStringFromAction("UI_SHORTCUT_PRIMARY", KEYBIND_TEXT_OPTIONS_FULL_NAME, KEYBIND_TEXTURE_OPTIONS_EMBED_MARKUP))
local text
if DoesCurrentZoneHaveTelvarStoneBehavior() then
local telvarLossPercentage = zo_floor(GetTelvarStonePercentLossOnNonPvpDeath() * 100)
text = zo_strformat(SI_GAMEPAD_HELP_UNSTUCK_CONFIRM_STUCK_PROMPT_TELVAR, cost, goldIcon, primaryButtonMarkup, telvarLossPercentage)
elseif IsActiveWorldBattleground() then
text = GetString(SI_CUSTOMER_SERVICE_UNSTUCK_COST_PROMPT_IN_BATTLEGROUND)
else
text = zo_strformat(SI_GAMEPAD_HELP_UNSTUCK_CONFIRM_STUCK_PROMPT, cost, goldIcon, primaryButtonMarkup)
end
return text
end,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_ACCEPT,
callback = function()
SendPlayerStuck()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/help/gamepad/help_root_gamepad.lua:192 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_UNSTUCK_COOLDOWN_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
},
setup = function(dialog)
dialog:setupFunc()
end,
updateFn = function(dialog)
local cooldownTime = GetTimeUntilStuckAvailable()
if cooldownTime > 0 then
dialog.cooldownLabelControl:SetText(ZO_FormatTimeMilliseconds(cooldownTime, TIME_FORMAT_STYLE_DESCRIPTIVE_SHORT_SHOW_ZERO_SECS, TIME_FORMAT_PRECISION_SECONDS))
elseif not ZO_Dialogs_IsDialogHiding(GAMEPAD_UNSTUCK_COOLDOWN_DIALOG) then
ZO_Dialogs_ShowGamepadDialog(GAMEPAD_UNSTUCK_CONFIRM_DIALOG)
ZO_Dialogs_ReleaseDialogOnButtonPress(GAMEPAD_UNSTUCK_COOLDOWN_DIALOG)
end
end,
title =
{
text = GetString(SI_GAMEPAD_HELP_GET_ME_UNSTUCK),
},
mainText =
{
text = GetString(SI_GAMEPAD_HELP_UNSTUCK_COOLDOWN_HEADER),
},
loading =
{
text = function()
return ZO_FormatTimeMilliseconds(GetTimeUntilStuckAvailable(), TIME_FORMAT_STYLE_DESCRIPTIVE_SHORT_SHOW_ZERO_SECS, TIME_FORMAT_PRECISION_SECONDS)
end,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_EXIT),
},
}
})
- ingame/help/gamepad/help_root_gamepad.lua:240 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_UNSTUCK_LOADING_DIALOG,
{
canQueue = true,
blockDialogReleaseOnPress = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
},
setup = function(dialog)
dialog:setupFunc()
end,
updateFn = function()
if self.stuckComplete then
ZO_Dialogs_ReleaseDialogOnButtonPress(GAMEPAD_UNSTUCK_LOADING_DIALOG)
self.stuckComplete = false
SCENE_MANAGER:ShowBaseScene()
end
end,
title =
{
text = GetString(SI_GAMEPAD_HELP_GET_ME_UNSTUCK),
},
loading =
{
text = GetString(SI_FIXING_STUCK_TEXT),
},
buttons =
{
},
mustChoose = true,
})
- ingame/help/gamepad/help_root_gamepad.lua:280 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GAMEPAD_HELP_GET_ME_UNSTUCK,
},
mainText =
{
text = dialogText,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
}
})
- ingame/help/gamepad/help_root_gamepad.lua:309 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_CS_DISABLED_ON_PC_DIALOG,
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = GetString(SI_GAMEPAD_HELP_CS_DISABLED_TITLE),
},
mainText =
{
text = GetString(SI_GAMEPAD_HELP_CS_DISABLED_TEXT),
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
}
})
- ingame/help/keyboard/helpaskforhelp_keyboard.lua:121 --
ZO_Dialogs_RegisterCustomDialog("HELP_ASK_FOR_HELP_SUBMIT_TICKET_SUCCESSFUL_DIALOG",
{
canQueue = true,
mustChoose = true,
title =
{
text = GetString(SI_CUSTOMER_SERVICE_SUBMIT_CONFIRMATION),
},
mainText =
{
text = GetString(SI_CUSTOMER_SERVICE_ASK_FOR_HELP_SUBMIT_TICKET_CONFIRMATION),
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
},
})
- ingame/help/keyboard/helpcustomerservice_keyboard.lua:45 --
ZO_Dialogs_RegisterCustomDialog("HELP_CUSTOMER_SERVICE_SUBMITTING_TICKET_DIALOG",
{
showLoadingIcon = true,
modal = false,
title =
{
text = GetString(SI_CUSTOMER_SERVICE_SUBMITTING_TICKET),
},
mainText =
{
text = GetString(SI_CUSTOMER_SERVICE_SUBMITTING),
align = TEXT_ALIGN_CENTER,
},
})
- ingame/housetours/housetours_dialogs_shared.lua:55 --
ZO_Dialogs_RegisterCustomDialog(self.dialogName, self.dialog)
- ingame/housetours/housetours_playerlistings_manager.lua:44 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_LISTING_OPERATION_DIALOG",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
allowShowOnNextScene = true,
},
title =
{
text = SI_HOUSE_TOURS_LISTING_DIALOG_TITLE_FORMATTER,
},
mainText =
{
align = TEXT_ALIGN_CENTER,
text = SI_HOUSE_TOURS_LISTING_DIALOG_BODY_FORMATTER,
},
showLoadingIcon = true,
--Since no choices are provided this forces the dialog to remain shown until programmaticly closed
mustChoose = true,
buttons = {},
})
- ingame/housetours/housetours_playerlistings_manager.lua:68 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_LISTING_OPERATION_RESPONSE_DIALOG",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_HOUSE_TOURS_LISTING_DIALOG_TITLE_FORMATTER,
},
mainText =
{
align = TEXT_ALIGN_CENTER,
text = SI_HOUSE_TOURS_LISTING_DIALOG_BODY_FORMATTER,
},
buttons =
{
{
text = SI_OK,
keybind = "DIALOG_NEGATIVE",
gamepadPreferredKeybind = "DIALOG_PRIMARY",
clickSound = SOUNDS.DIALOG_ACCEPT,
}
},
})
- ingame/housetours/gamepad/housetours_dialogs_gamepad.lua:140 --
ZO_Dialogs_RegisterCustomDialog(dialogName, self.dialog)
- ingame/housetours/gamepad/housetours_gamepad.lua:439 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_SUBMIT_LISTING_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_HOUSE_TOURS_SUBMIT_HOME,
},
mainText =
{
text = SI_HOUSE_TOURS_GAMEPAD_SUBMIT_DIALOG_TEXT,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
if data and data.selectedListingData and data.tags then
local houseId = data.selectedListingData:GetHouseId()
RequestCreateHouseToursListing(houseId, unpack(data.tags))
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/housetours/gamepad/housetours_gamepad.lua:495 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_ALL_FILTERS_GAMEPAD",
{
blockDialogReleaseOnPress = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
title =
{
text = SI_HOUSE_TOURS_ALL_FILTERS,
},
setup = function(dialog, data)
dialog.filterData = data.filterData
dialog.pendingFilterData = ZO_HouseTours_Search_Filters:New(dialog.filterData:GetListingType())
dialog.pendingFilterData:CopyFrom(dialog.filterData)
dialog:setupFunc()
end,
parametricList =
{
-- User Id
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData =
{
focusLostCallback = function(control)
local dialog = ZO_GenericGamepadDialog_GetControl(GAMEPAD_DIALOGS.PARAMETRIC)
dialog.pendingFilterData:SetDisplayName(control:GetText())
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
control.highlight:SetHidden(not selected)
control.editBoxControl:SetDefaultText(ZO_GetPlatformAccountLabel())
control.editBoxControl:SetText(dialog.pendingFilterData:GetDisplayName())
control.editBoxControl:SetMaxInputChars(DECORATED_DISPLAY_NAME_MAX_LENGTH)
control.editBoxControl.focusLostCallback = data.focusLostCallback
data.control = control
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
local editControl = targetData.control.editBoxControl
editControl:TakeFocus()
end
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText
}
},
-- Tags
{
template = "ZO_GamepadMultiSelectionDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
local dropdown = control.dropdown
dropdown:SetSortsItems(true)
dropdown:SetMaxSelections(MAX_HOUSE_TOURS_LISTING_TAGS)
dropdown:SetNoSelectionText(GetString(SI_HOUSE_TOURS_FILTERS_TAGS_DROPDOWN_NO_SELECTION_TEXT))
dropdown:SetMultiSelectionTextFormatter(SI_HOUSE_TOURS_TAGS_DROPDOWN_TEXT_FORMATTER)
dropdown:SetNormalColor(ZO_GAMEPAD_COMPONENT_COLORS.UNSELECTED_INACTIVE:UnpackRGB())
dropdown:SetHighlightedColor(ZO_GAMEPAD_COMPONENT_COLORS.SELECTED_ACTIVE:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown.dropdownData = ZO_MultiSelection_ComboBox_Data_Gamepad:New()
local function TagSelectionChanged()
local newTags = {}
local selectedTagsData = dropdown.dropdownData:GetSelectedItems()
for _, item in ipairs(selectedTagsData) do
table.insert(newTags, item.tagValue)
end
dialog.pendingFilterData:SetTags(newTags)
end
local tags = dialog.pendingFilterData:GetTags()
for i = HOUSE_TOURS_LISTING_TAG_ITERATION_BEGIN, HOUSE_TOURS_LISTING_TAG_ITERATION_END do
local tagEntry = ZO_ComboBox_Base:CreateItemEntry(GetString("SI_HOUSETOURLISTINGTAG", i), TagSelectionChanged)
tagEntry.tagValue = i
dropdown.dropdownData:AddItem(tagEntry)
if ZO_IsElementInNumericallyIndexedTable(tags, tagEntry.tagValue) then
dropdown.dropdownData:SetItemSelected(tagEntry, true)
end
end
dropdown:LoadData(dropdown.dropdownData)
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(dialog, dropdown)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
if targetControl then
targetControl.dropdown:Activate()
end
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
-- House Name
{
template = "ZO_GamepadMultiSelectionDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
local dropdown = control.dropdown
dropdown:SetSortsItems(true)
dropdown:SetMaxSelections(MAX_HOUSE_TOURS_HOUSE_FILTERS)
dropdown:SetNoSelectionText(GetString(SI_HOUSE_TOURS_FILTERS_HOUSE_DROPDOWN_NO_SELECTION_TEXT))
dropdown:SetMultiSelectionTextFormatter(SI_HOUSE_TOURS_FILTERS_HOUSE_DROPDOWN_TEXT_FORMATTER)
dropdown:SetNormalColor(ZO_GAMEPAD_COMPONENT_COLORS.UNSELECTED_INACTIVE:UnpackRGB())
dropdown:SetHighlightedColor(ZO_GAMEPAD_COMPONENT_COLORS.SELECTED_ACTIVE:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown.dropdownData = ZO_MultiSelection_ComboBox_Data_Gamepad:New()
local function HouseSelectionChanged()
local newHouseIds = {}
local selectedHouseData = dropdown.dropdownData:GetSelectedItems()
for _, item in ipairs(selectedHouseData) do
table.insert(newHouseIds, item.houseId)
end
dialog.pendingFilterData:SetHouseIds(newHouseIds)
--Changes to the house name selection can impact the house category dropdown, so refresh that too when the house selection changes
if dialog.houseCategoryDropdown then
--Update the colors of the house category dropdown depending on whether or not it is now disabled
local canSet = dialog.pendingFilterData:CanSetHouseCategoryTypes()
local normalColor = canSet and ZO_GAMEPAD_UNSELECTED_COLOR or ZO_GAMEPAD_DISABLED_UNSELECTED_COLOR
local highlightColor = canSet and ZO_GAMEPAD_SELECTED_COLOR or ZO_GAMEPAD_DISABLED_SELECTED_COLOR
dialog.houseCategoryDropdown:SetNormalColor(normalColor:UnpackRGB())
dialog.houseCategoryDropdown:SetHighlightedColor(highlightColor:UnpackRGB())
--It can be assumed that the house category dropdown is not selected, since in order to change the house selection, the house name dropdown needs to be selected
local NOT_SELECTED = false
dialog.houseCategoryDropdown:SetSelectedItemTextColor(NOT_SELECTED)
--If the house category dropdown is now supposed to be disabled, clear all of its selections
if not canSet then
dialog.houseCategoryDropdown:ClearAllSelections()
dialog.houseCategoryDropdown:RefreshSelections()
end
end
end
local allHouses = ZO_COLLECTIBLE_DATA_MANAGER:GetAllCollectibleDataObjects({ ZO_CollectibleCategoryData.IsHousingCategory })
local houseIds = dialog.pendingFilterData:GetHouseIds()
for _, collectibleData in ipairs(allHouses) do
local houseEntry = ZO_ComboBox_Base:CreateItemEntry(collectibleData:GetFormattedName(), HouseSelectionChanged)
houseEntry.houseId = collectibleData:GetReferenceId()
dropdown.dropdownData:AddItem(houseEntry)
if ZO_IsElementInNumericallyIndexedTable(houseIds, houseEntry.houseId) then
dropdown.dropdownData:SetItemSelected(houseEntry, true)
end
end
dropdown:LoadData(dropdown.dropdownData)
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(dialog, dropdown)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
if targetControl then
targetControl.dropdown:Activate()
end
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
-- House Category
{
template = "ZO_GamepadMultiSelectionDropdownItem",
templateData =
{
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
local dialog = data.dialog
local dropdown = control.dropdown
dialog.houseCategoryDropdown = dropdown
dropdown:SetSortsItems(true)
dropdown:SetMaxSelections(MAX_HOUSE_TOURS_CATEGORY_TYPE_FILTERS)
dropdown:SetNoSelectionText(GetString(SI_HOUSE_TOURS_FILTERS_HOUSE_CATEGORY_DROPDOWN_NO_SELECTION_TEXT))
dropdown:SetMultiSelectionTextFormatter(SI_HOUSE_TOURS_FILTERS_HOUSE_CATEGORY_DROPDOWN_TEXT_FORMATTER)
local canSet = dialog.pendingFilterData:CanSetHouseCategoryTypes()
local normalColor = canSet and ZO_GAMEPAD_UNSELECTED_COLOR or ZO_GAMEPAD_DISABLED_UNSELECTED_COLOR
local highlightColor = canSet and ZO_GAMEPAD_SELECTED_COLOR or ZO_GAMEPAD_DISABLED_SELECTED_COLOR
dropdown:SetNormalColor(normalColor:UnpackRGB())
dropdown:SetHighlightedColor(highlightColor:UnpackRGB())
dropdown:SetSelectedItemTextColor(selected)
dropdown.dropdownData = ZO_MultiSelection_ComboBox_Data_Gamepad:New()
local function CategorySelectionChanged()
local newCategories = {}
local selectedHouseCategoryData = dropdown.dropdownData:GetSelectedItems()
for _, item in ipairs(selectedHouseCategoryData) do
table.insert(newCategories, item.categoryValue)
end
dialog.pendingFilterData:SetHouseCategoryTypes(newCategories)
end
local categories = dialog.pendingFilterData:GetHouseCategoryTypes()
for i = HOUSE_CATEGORY_TYPE_ITERATION_BEGIN, HOUSE_CATEGORY_TYPE_ITERATION_END do
local categoryEntry = ZO_ComboBox_Base:CreateItemEntry(GetString("SI_HOUSECATEGORYTYPE", i), CategorySelectionChanged)
categoryEntry.categoryValue = i
dropdown.dropdownData:AddItem(categoryEntry)
if ZO_IsElementInNumericallyIndexedTable(categories, categoryEntry.categoryValue) then
dropdown.dropdownData:SetItemSelected(categoryEntry, true)
end
end
dropdown:LoadData(dropdown.dropdownData)
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(dialog, dropdown)
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
if targetControl then
targetControl.dropdown:Activate()
end
end,
enabled = function(dialog)
return dialog.pendingFilterData:CanSetHouseCategoryTypes()
end,
tooltipText = function(dialog)
local pendingFilterData = dialog.pendingFilterData
if not pendingFilterData:CanSetHouseCategoryTypes() then
return GetString(SI_HOUSE_TOURS_FILTERS_HOUSE_CATEGORY_DISABLED)
end
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
},
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
RefreshFiltersTooltip(dialog, list, newSelectedData)
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
enabled = function(dialog)
local enabled = true
local targetData = dialog.entryList:GetTargetData()
if targetData then
if type(targetData.enabled) == "function" then
enabled = targetData.enabled(dialog)
else
enabled = targetData.enabled
end
end
return enabled
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("HOUSE_TOURS_ALL_FILTERS_GAMEPAD")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
dialog.filterData:CopyFrom(dialog.pendingFilterData)
if dialog.data.confirmCallback then
dialog.data:confirmCallback()
end
ZO_Dialogs_ReleaseDialogOnButtonPress("HOUSE_TOURS_ALL_FILTERS_GAMEPAD")
end,
},
{
keybind = "DIALOG_RESET",
text = SI_HOUSE_TOURS_RESET_FILTERS_KEYBIND,
callback = function(dialog)
dialog.pendingFilterData:ResetFilters()
ZO_GenericParametricListGamepadDialogTemplate_RefreshVisibleEntries(dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
RefreshFiltersTooltip(dialog, dialog.entryList, targetData)
end
--Re-narrate the selection when the filters are reset
SCREEN_NARRATION_MANAGER:QueueDialog(dialog)
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- ingame/housetours/keyboard/housetours_managelistings_keyboard.lua:543 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_SUBMIT_LISTING_KEYBOARD",
{
customControl = control,
setup = function(dialog, data)
local selectedListingData = data.selectedListingData
if selectedListingData then
local houseTileControl = dialog:GetNamedChild("HouseTile")
houseTileControl:SetHandler("OnMouseEnter", function()
ClearTooltip(InformationTooltip)
InitializeTooltip(InformationTooltip, houseTileControl, RIGHT, -5)
local DEFAULT_FONT = ""
local tagsText = ZO_FormatHouseToursTagsText(data.tags)
InformationTooltip:AddLine(zo_strformat(SI_HOUSE_TOURS_LISTING_TAGS_TOOLTIP_FORMATTER, ZO_SELECTED_TEXT:Colorize(tagsText)), DEFAULT_FONT, ZO_NORMAL_TEXT:UnpackRGBA())
end)
houseTileControl:SetHandler("OnMouseExit", function()
ClearTooltip(InformationTooltip)
end)
local background = houseTileControl:GetNamedChild("Background")
local nicknameLabel = houseTileControl:GetNamedChild("Nickname")
local houseNameLabel = houseTileControl:GetNamedChild("HouseName")
local furnitureCountLabel = houseTileControl:GetNamedChild("FurnitureCount")
local displayNameLabel = houseTileControl:GetNamedChild("DisplayName")
background:SetTexture(selectedListingData:GetBackgroundImage())
houseNameLabel:SetText(selectedListingData:GetFormattedHouseName())
nicknameLabel:SetText(selectedListingData:GetFormattedNickname())
local furnitureCountText
local furnitureCount = selectedListingData:GetFurnitureCount()
if furnitureCount ~= nil then
furnitureCountText = zo_iconTextFormat(FURNITURE_COUNT_TEXTURE, 32, 32, furnitureCount)
else
furnitureCountText = zo_iconTextFormat(FURNITURE_COUNT_TEXTURE, 32, 32, GetString(SI_HOUSE_TOURS_LISTING_FURNITURE_COUNT_UNKNOWN))
end
furnitureCountLabel:SetText(furnitureCountText)
displayNameLabel:SetText(selectedListingData:GetFormattedOwnerDisplayName())
end
end,
title =
{
text = SI_HOUSE_TOURS_SUBMIT_HOME,
},
mainText =
{
text = SI_HOUSE_TOURS_SUBMIT_DIALOG_TEXT,
},
buttons =
{
{
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
if data and data.selectedListingData and data.tags then
local houseId = data.selectedListingData:GetHouseId()
RequestCreateHouseToursListing(houseId, unpack(data.tags))
end
end,
},
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/housetours/keyboard/housetours_searchresults_keyboard.lua:748 --
ZO_Dialogs_RegisterCustomDialog("HOUSE_TOURS_SEARCH_FILTERS_KEYBOARD",
{
customControl = control,
setup = function(dialog, data)
dialog.object:PerformDeferredInitialize()
local filterData = data.filterData
dialog.object:SetFilterData(filterData)
end,
title =
{
text = SI_HOUSE_TOURS_ALL_FILTERS,
},
buttons =
{
{
control = control:GetNamedChild("Reset"),
keybind = "DIALOG_RESET",
text = SI_HOUSE_TOURS_RESET_FILTERS_KEYBIND,
noReleaseOnClick = true,
callback = function(dialog)
dialog.object:ResetFilters()
end,
},
{
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
dialog.object:SavePendingChanges()
if dialog.data.confirmCallback then
dialog.data:confirmCallback()
end
end,
},
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/housingeditor/housingpreview_shared.lua:54 --
ZO_Dialogs_RegisterCustomDialog(self.dialogName, self.dialogInfo)
- ingame/housingeditor/housingsocial_manager.lua:16 --
ZO_Dialogs_RegisterCustomDialog(ZO_HOUSING_LINK_JUMP_CONFIRMATION_DIALOG_NAME,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = false,
},
setup = function(dialog)
self.acceptConfirmText = nil
dialog:setupFunc()
end,
title =
{
text = SI_HOUSING_CONFIRM_JUMP_CAPTION,
},
mainText =
{
text = function(dialog)
if dialog.data.accountName then
return GetString(SI_HOUSING_CONFIRM_JUMP_TO_PLAYER_HOUSE)
else
return GetString(SI_HOUSING_CONFIRM_JUMP_TO_HOUSE)
end
end,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
self:OnConfirmedVisitHouseLinkDialog(dialog.data)
ReleaseDialog()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/housingeditor/gamepad/furnitureclasses_gamepad.lua:593 --
ZO_Dialogs_RegisterCustomDialog(optionsDialogName, dialogInfo)
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:857 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CONFIRM_KICK_OCCUPANT",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_DIALOG_TITLE_KICK_OCCUPANT,
},
mainText =
{
text = function(dialog)
return zo_strformat(SI_DIALOG_TEXT_KICK_OCCUPANT, dialog.data.displayName)
end,
},
setup = function(dialog)
dialog:setupFunc()
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_YES,
callback = function(dialog)
local result = HousingEditorRequestKickOccupant(dialog.data.index)
ZO_AlertEvent(EVENT_HOUSING_EDITOR_REQUEST_RESULT, result)
end
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_NO,
},
},
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:911 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
SetupAddOrBanDialog(dialog, dialogName)
end,
parametricList =
{
-- user name
userNameData,
-- Preset Selector
presetSelectorData,
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local nameText = ZO_FormatManualNameEntry(dialog.nameText)
if IsValidInput(nameText) then
local ALLOW_ACCESS = true
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
AddHousingPermission(data.currentHouse, userGroup, ALLOW_ACCESS, dialog.selectedPresetIndex, dialog.applyToAllHouses, nameText)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end
end,
validInput = function(dialog)
return IsValidInput(dialog.nameText)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = individualDialogButtonData,
noChoiceCallback = NoChoiceCallback,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:967 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
SetupAddOrBanDialog(dialog, dialogName)
end,
parametricList =
{
-- Guild Selector
guildSelectorData,
-- user name
userNameData,
-- Preset Selector
presetSelectorData,
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local nameText
if dialog.selectedGuildIndex > GetNumGuilds() then
nameText = dialog.nameText
else
nameText = GetGuildName(dialog.selectedGuildId)
end
if IsValidInput(nameText) then
local ALLOW_ACCESS = true
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
AddHousingPermission(data.currentHouse, userGroup, ALLOW_ACCESS, dialog.selectedPresetIndex, dialog.applyToAllHouses, nameText)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end
end,
validInput = function(dialog)
return IsValidInput(dialog.nameText) or dialog.selectedGuildIndex <= GetNumGuilds()
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = buttonsData,
noChoiceCallback = NoChoiceCallback,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:1029 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
SetupAddOrBanDialog(dialog, dialogName)
end,
parametricList =
{
-- user name
userNameData,
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local nameText = ZO_FormatManualNameEntry(dialog.nameText)
if IsValidInput(nameText) then
local DISALLOW_ACCESS = false
local CANNOT_EDIT = false
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
AddHousingPermission(data.currentHouse, userGroup, DISALLOW_ACCESS, HOUSE_PERMISSION_PRESET_SETTING_INVALID, dialog.applyToAllHouses, nameText)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end
end,
validInput = function(dialog)
return IsValidInput(dialog.nameText)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = individualDialogButtonData,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:1082 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
SetupAddOrBanDialog(dialog, dialogName)
end,
parametricList =
{
-- Guild Selector
guildSelectorData,
-- user name
userNameData,
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local nameText
if dialog.selectedGuildIndex > GetNumGuilds() then
nameText = dialog.nameText
else
nameText = GetGuildName(dialog.selectedGuildId)
end
if IsValidInput(nameText) then
local DISALLOW_ACCESS = false
local CANNOT_EDIT = false
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
AddHousingPermission(data.currentHouse, userGroup, DISALLOW_ACCESS, HOUSE_PERMISSION_PRESET_SETTING_INVALID, dialog.applyToAllHouses, nameText)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end
end,
validInput = function(dialog)
return IsValidInput(dialog.nameText) or dialog.selectedGuildIndex <= GetNumGuilds()
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = buttonsData,
noChoiceCallback = NoChoiceCallback,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:1144 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
SetupRemoveDialog(dialog, dialogName)
end,
parametricList =
{
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local data = dialog.data
RemoveHousingPermission(data.currentHouse, data.userGroup, data.index, dialog.applyToAllHouses)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = buttonsData,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:1183 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
setup = function(dialog)
SetupChangeDialog(dialog, dialogName)
end,
parametricList =
{
-- Preset Selector
presetSelectorData,
-- All Houses
allHousesData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local data = dialog.data
SetHousingPermissionPreset(data.currentHouse, data.userGroup, data.index, dialog.selectedPresetIndex, dialog.applyToAllHouses)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end,
}
},
},
blockDialogReleaseOnPress = true,
buttons = buttonsData,
noChoiceCallback = NoChoiceCallback,
})
- ingame/housingeditor/gamepad/housingfurnituresettings_gamepad.lua:1226 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowShowOnNextScene = true
},
setup = function(dialog)
SetupCopyDialog(dialog, dialogName)
end,
parametricList =
{
-- House Selector
houseSelectorData,
-- Confirm
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_DIALOG_CONFIRM),
setup = SetupRequestEntry,
callback = function(dialog)
local data = dialog.data
CopyHousePermissions(dialog.selectedHouseId, data.currentHouse)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
end,
validInput = function(dialog)
return dialog.selectedHouseId > INVALID_HOUSE_ID
end,
},
},
},
blockDialogReleaseOnPress = true,
buttons = buttonsData,
noChoiceCallback = NoChoiceCallback,
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:396 --
ZO_Dialogs_RegisterCustomDialog("HOUSING_CONFIRM_KICK_OCCUPANT",
{
buttons =
{
{
control = self:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_YES,
callback = function(dialog)
local result = HousingEditorRequestKickOccupant(dialog.data.index)
ZO_AlertEvent(EVENT_HOUSING_EDITOR_REQUEST_RESULT, result)
end
},
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_NO,
},
},
canQueue = true,
customControl = self,
setup = function(dialog)
dialog:GetNamedChild("Header"):SetText(zo_strformat(SI_DIALOG_TEXT_KICK_OCCUPANT, dialog.data.displayName))
end,
title =
{
text = SI_DIALOG_TITLE_KICK_OCCUPANT,
},
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:502 --
ZO_Dialogs_RegisterCustomDialog("CHANGE_HOUSING_PERMISSIONS",
{
customControl = self,
setup = SetupChangePermissionsDialog,
canQueue = true,
title =
{
text = SI_DIALOG_TITLE_CHANGE_HOUSING_PERMISSION,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = self:GetNamedChild("Confirm"),
text = SI_DIALOG_BUTTON_CHANGE_HOUSING_PERMISSION,
callback = function(dialog)
local editCheckBoxControl = dialog:GetNamedChild("AllHouses")
local isAllHousesChecked = ZO_CheckButton_IsChecked(editCheckBoxControl)
HOUSE_SETTINGS_MANAGER:SetApplyToAllHousesFlag(isAllHousesChecked)
local data = dialog.data
SetHousingPermissionPreset(data.currentHouse, data.userGroup, data.index, dialog.selectedPreset, isAllHousesChecked)
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:545 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_REMOVE_PERMISSIONS",
{
customControl = self,
setup = SetupRemovePermissionsDialog,
buttons =
{
{
control = self:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
local editCheckBoxControl = dialog:GetNamedChild("AllHouses")
local isAllHousesChecked = ZO_CheckButton_IsChecked(editCheckBoxControl)
HOUSE_SETTINGS_MANAGER:SetApplyToAllHousesFlag(isAllHousesChecked)
RemoveHousingPermission(data.currentHouse, data.userGroup, data.index, isAllHousesChecked)
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:590 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
customControl = self,
setup = SetupAddOrBanUserGroupDialog,
buttons =
{
{
control = self:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
local editCheckBoxControl = dialog:GetNamedChild("AllHouses")
local isAllHousesChecked = ZO_CheckButton_IsChecked(editCheckBoxControl)
HOUSE_SETTINGS_MANAGER:SetApplyToAllHousesFlag(isAllHousesChecked)
local name = GetControl(dialog, "NameEdit"):GetText()
AddHousingPermission(data.currentHouse, userGroup, ALLOW_ACCESS, dialog.selectedPreset, isAllHousesChecked, name)
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:626 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
customControl = self,
setup = SetupAddOrBanUserGroupDialog,
buttons =
{
{
control = self:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
local activePanel = data.activePanel
local userGroup = activePanel:GetUserGroup()
local editCheckBoxControl = dialog:GetNamedChild("AllHouses")
local isAllHousesChecked = ZO_CheckButton_IsChecked(editCheckBoxControl)
HOUSE_SETTINGS_MANAGER:SetApplyToAllHousesFlag(isAllHousesChecked)
local name = GetControl(dialog, "NameEdit"):GetText()
AddHousingPermission(data.currentHouse, userGroup, not ALLOW_ACCESS, HOUSE_PERMISSION_PRESET_SETTING_INVALID, isAllHousesChecked, name)
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/housingeditor/keyboard/housingfurnituresettings_keyboard.lua:662 --
ZO_Dialogs_RegisterCustomDialog("COPY_HOUSING_PERMISSIONS",
{
customControl = self,
setup = SetupCopyPermissionsDialog,
canQueue = true,
title =
{
text = SI_DIALOG_COPY_HOUSING_PERMISSION_TITLE,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = self.confirmButton,
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local data = dialog.data
CopyHousePermissions(dialog.selectedHouseId, data.currentHouse)
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/interactwindow/keepclaimdialog.lua:153 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_GUILD_RELEASE_KEEP_CONFIRM_TITLE,
},
mainText =
{
text = SI_GUILD_RELEASE_KEEP_CONFIRM_PROMPT,
},
noChoiceCallback = function()
INTERACT_WINDOW:EndInteraction(GUILD_KEEP_RELEASE_INTERACTION)
end,
buttons =
{
[1] =
{
keybind = "DIALOG_PRIMARY",
text = SI_GUILD_RELEASE_KEEP_ACCEPT,
callback = function(dialog)
dialog.data.release()
INTERACT_WINDOW:EndInteraction(GUILD_KEEP_RELEASE_INTERACTION)
end,
visible = function()
local keepId = dialogSingleton.data.keepId
local time = GetSecondsUntilKeepClaimAvailable(keepId, BGQUERY_LOCAL)
return time == 0
end,
},
[2] =
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
INTERACT_WINDOW:EndInteraction(GUILD_KEEP_RELEASE_INTERACTION)
end,
},
},
updateFn = function(dialog)
local keepId = dialog.data.keepId
local keepName = GetKeepName(keepId)
local cooldown = GetSecondsUntilKeepClaimAvailable(keepId, BGQUERY_LOCAL)
local isClaimAvailable = cooldown == 0
local textParams
if isClaimAvailable then
dialog.info.mainText.text = SI_GUILD_RELEASE_KEEP_CONFIRM_PROMPT
textParams = { mainTextParams = { keepName } }
ZO_Dialogs_RefreshDialogText(dialogName, dialog, textParams)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
--Re-narrate once the cooldown ends
if not dialog.wasClaimAvailableLastUpdate then
local NARRATE_HEADER = true
SCREEN_NARRATION_MANAGER:QueueDialog(dialog, NARRATE_HEADER)
end
else
dialog.info.mainText.text = SI_GUILD_RELEASE_KEEP_COOLDOWN
textParams = { mainTextParams = { keepName, ZO_FormatTime(cooldown, TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR) } }
ZO_Dialogs_RefreshDialogText(dialogName, dialog, textParams)
end
--Set the new text params on the dialog so narration can use them
dialog.textParams = textParams
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups()
dialog.wasClaimAvailableLastUpdate = isClaimAvailable
end,
})
- ingame/interactwindow/keepclaimdialog.lua:275 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
self:RefreshGuildList()
self.noViolations = nil
UpdateSelectedGuildId(nil)
UpdateSelectedGuildIndex(nil)
dialog:setupFunc()
end,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
noChoiceCallback = DeinitDialog,
title =
{
text = GetString(SI_PROMPT_TITLE_SELECT_GUILD_KEEP_CLAIM),
},
mainText =
{
text = function()
local keepId = GetGuildClaimInteractionKeepId()
local keepName = GetKeepName(keepId)
local result = CheckGuildKeepClaim(self.selectedGuildId, keepId)
if result ~= CLAIM_KEEP_RESULT_TYPE_SUCCESS then
local cooldown = GetSecondsUntilKeepClaimAvailable(keepId, BGQUERY_LOCAL)
if cooldown > 0 then
return zo_strformat(SI_KEEP_CLAIM_ON_COOLDOWN, keepName, ZO_FormatTime(cooldown, TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR))
else
return zo_strformat(GetString("SI_CLAIMKEEPRESULTTYPE", result), keepName)
end
else
return zo_strformat(SI_GAMEPAD_SELECT_GUILD_KEEP_CLAIM_INSTRUCTIONS, keepName)
end
end
},
updateFn = function(dialog)
local keepId = GetGuildClaimInteractionKeepId()
local isClaimAvailable = GetSecondsUntilKeepClaimAvailable(keepId, BGQUERY_LOCAL) == 0
if isClaimAvailable and not dialog.wasClaimAvailableLastUpdate then
dialog:setupFunc()
--Re-narrate once the cooldown ends
local NARRATE_HEADER = true
SCREEN_NARRATION_MANAGER:QueueDialog(dialog, NARRATE_HEADER)
end
UpdateViolations()
ZO_Dialogs_RefreshDialogText(dialogName, dialog)
ZO_GenericGamepadDialog_RefreshKeybinds(dialog)
if self.noViolations and self.currentDropdown then
self.currentDropdown:SetSelectedColor(ZO_SELECTED_TEXT)
elseif self.currentDropdown then
self.currentDropdown:SetSelectedColor(ZO_DISABLED_TEXT)
end
dialog.wasClaimAvailableLastUpdate = isClaimAvailable
end,
parametricList =
{
-- guild select
{
header = SI_GAMEPAD_KEEP_CLAIM_SELECT_GUILD_HEADER,
template = "ZO_GamepadDropdownItem",
templateData = {
rankSelector = true,
visible = function()
return GetSecondsUntilKeepClaimAvailable(GetGuildClaimInteractionKeepId(), BGQUERY_LOCAL) == 0
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.dropdown:SetSortsItems(false)
control.dropdown:SetSelectedColor(ZO_SELECTED_TEXT)
self:SetCurrentDropdown(control.dropdown)
control.dropdown:ClearItems()
local function OnGuildSelected(comboBox, entryText, entry)
self.noViolations = entry.noViolations
UpdateSelectedGuildId(entry.guildId)
UpdateSelectedGuildIndex(entry.index)
if self.noViolations then
self.currentDropdown:SetSelectedColor(ZO_SELECTED_TEXT)
else
self.currentDropdown:SetSelectedColor(ZO_ERROR_COLOR)
end
end
local keepId = GetGuildClaimInteractionKeepId()
local count = 1
local selectedIndex = nil
for guildId, entry in pairs(self.entries) do
local newEntry = control.dropdown:CreateItemEntry(entry.guildText, OnGuildSelected)
newEntry.guildId = entry.guildId
newEntry.index = count
newEntry.guildText = entry.guildText
local result = CheckGuildKeepClaim(guildId, keepId)
newEntry.noViolations = result == CLAIM_KEEP_RESULT_TYPE_SUCCESS
if newEntry.noViolations then
newEntry.m_normalColor = ZO_DISABLED_TEXT
newEntry.m_highlightColor = ZO_SELECTED_TEXT
else
newEntry.m_normalColor = ZO_ERROR_COLOR
newEntry.m_highlightColor = ZO_ERROR_COLOR
end
control.dropdown:AddItem(newEntry)
if guildId == self.selectedGuildId then
selectedIndex = count
end
count = count + 1
end
if selectedIndex then
local IGNORE_CALLBACK = true
self.currentDropdown:SelectItemByIndex(selectedIndex, IGNORE_CALLBACK)
else
self.currentDropdown:SelectFirstItem()
end
control.dropdown:UpdateItems()
SCREEN_NARRATION_MANAGER:RegisterDialogDropdown(data.dialog, control.dropdown)
local function OnDropdownDeactivated()
KEYBIND_STRIP:PopKeybindGroupState()
end
control.dropdown:SetDeactivatedCallback(OnDropdownDeactivated)
end,
narrationText = ZO_GetDefaultParametricListDropdownNarrationText,
},
},
},
buttons =
{
-- Cancel Button
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function()
ReleaseDialog()
end,
},
-- Select Button (used for selecting guild)
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
visible = function()
return GetSecondsUntilKeepClaimAvailable(GetGuildClaimInteractionKeepId(), BGQUERY_LOCAL) == 0
end,
callback = function()
KEYBIND_STRIP:PushKeybindGroupState() -- This is just to hide the keybinds (don't need to store the state)
self.currentDropdown:Activate()
UpdateDropdownHighlight()
end,
},
-- Claim Button
{
keybind = "DIALOG_SECONDARY",
text = GetString(SI_DIALOG_ACCEPT),
visible = function()
return self.noViolations
end,
callback = function()
if(self.noViolations) then
ClaimInteractionKeepForGuild(self.selectedGuildId)
end
ReleaseDialog()
end,
},
}
})
- ingame/inventory/inventory.lua:2459 --
ZO_Dialogs_RegisterCustomDialog(self.withdrawDialogName,
{
customControl = control,
title =
{
text = SI_BANK_WITHDRAW_CURRENCY,
},
setup = function(dialog)
self.withdrawMode = true
self.depositWithdrawButton:SetState(BSTATE_NORMAL, false) --reenable in case deposit disabled it and the user cancelled
local ON_CURRENCY_CHANGED_CALLBACK = nil
ZO_DefaultCurrencyInputField_Initialize(self.depositWithdrawCurrency, ON_CURRENCY_CHANGED_CALLBACK, self.currencyType)
self.withdrawDepositCurrencyHeaderLabel:SetText(GetString(SI_BANK_CURRENCY_VALUE_ENTRY_WITHDRAW_HEADER))
self:UpdateMoneyInputAndDisplay()
self:FocusInput()
end,
buttons =
{
{
control = self.depositWithdrawButton,
text = SI_BANK_WITHDRAW_BIND,
callback = function(dialog)
local amount = ZO_DefaultCurrencyInputField_GetCurrency(self.depositWithdrawCurrency)
if amount > 0 then
TransferCurrency(self.currencyType, amount, self.currencyBankLocation, GetCurrencyPlayerStoredLocation(self.currencyType))
end
end,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/inventory.lua:2495 --
ZO_Dialogs_RegisterCustomDialog(self.depositDialogName,
{
customControl = control,
title =
{
text = SI_BANK_DEPOSIT_CURRENCY,
},
setup = function(dialog)
self.withdrawMode = false
ZO_DefaultCurrencyInputField_Initialize(self.depositWithdrawCurrency, function(_, amount) self:OnCurrencyInputAmountChanged(amount) end, self.currencyType)
self.withdrawDepositCurrencyHeaderLabel:SetText(GetString(SI_BANK_CURRENCY_VALUE_ENTRY_DEPOSIT_HEADER))
self:UpdateMoneyInputAndDisplay()
self:FocusInput()
end,
buttons =
{
{
control = self.depositWithdrawButton,
text = SI_BANK_DEPOSIT_BIND,
callback = function(dialog)
local amount = ZO_DefaultCurrencyInputField_GetCurrency(self.depositWithdrawCurrency)
if amount > 0 then
TransferCurrency(self.currencyType, amount, GetCurrencyPlayerStoredLocation(self.currencyType), self.currencyBankLocation)
end
end,
},
{
control = self.control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/stack.lua:70 --
ZO_Dialogs_RegisterCustomDialog("SPLIT_STACK",
{
customControl = self,
setup = SetupStackSplit,
title =
{
text = SI_INVENTORY_SPLIT_STACK_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(self, "Split"),
text = SI_INVENTORY_SPLIT_STACK,
callback = function(stackControl)
local bag, index = ZO_Inventory_GetBagAndIndex(stackControl.slotControl)
PickupInventoryItem(bag, index, stackControl.spinner:GetValue())
-- Auto-drop into whatever bag this came from
ZO_InventoryLandingArea_DropCursorInBag(bag)
end,
},
[2] =
{
control = GetControl(self, "Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/gamepad/confirmcollectibleevolutiondialog_gamepad.lua:10 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_COLLECTIBLE_EVOLUTION_PROMPT_GAMEPAD",
{
customControl = control,
canQueue = true,
setup = function(dialog)
local data = dialog.data
local baseCollectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(data.baseCollectibleId)
local evolvedCollectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(data.evolvedCollectibleId)
baseCollectibleTextureControl:SetTexture(baseCollectibleData:GetIcon())
evolvedCollectibleTextureControl:SetTexture(evolvedCollectibleData:GetIcon())
dialog:setupFunc()
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
title =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_TITLE,
},
mainText =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_CONFIRMATION_TEXT,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_YES,
callback = function(dialog)
dialog.data.acceptCallback()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_NO,
callback = function(dialog)
dialog.data.declineCallback()
end,
}
},
noChoiceCallback = function(dialog)
dialog.data.declineCallback()
end,
})
- ingame/inventory/gamepad/confirmcollectibleevolutiondialog_gamepad.lua:70 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_COLLECTIBLE_ADVANCED_COMBINATION_PROMPT_GAMEPAD",
{
customControl = control,
canQueue = true,
setup = function(dialog)
local data = dialog.data
local combinationId = data.combinationId
local numNonFragmentCollectibleComponents = 0
local previousComponentTextureControl = nil
local nonFragmentComponentCollectibleIds = { GetCombinationNonFragmentComponentCollectibleIds(combinationId) }
for i, collectibleId in ipairs(nonFragmentComponentCollectibleIds) do
local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
if collectibleData then
numNonFragmentCollectibleComponents = numNonFragmentCollectibleComponents + 1
local textureControl = textureControlPool:AcquireObject()
textureControl:SetParent(componentsContainer)
if previousComponentTextureControl then
textureControl:SetAnchor(TOP, previousComponentTextureControl, BOTTOM, 0, COLLECTIBLE_TEXTURE_SPACING)
else
textureControl:SetAnchor(TOPLEFT, componentsContainer)
end
textureControl:SetTexture(collectibleData:GetIcon())
previousComponentTextureControl = textureControl
end
end
local numCollectibleUnlocks = GetCombinationNumUnlockedCollectibles(combinationId)
local previousUnlockTextureControl = nil
for i = 1, numCollectibleUnlocks do
local collectibleId = GetCombinationUnlockedCollectibleId(combinationId, i)
local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
if collectibleData then
local textureControl = textureControlPool:AcquireObject()
textureControl:SetParent(unlocksContainer)
if previousUnlockTextureControl then
textureControl:SetAnchor(TOP, previousUnlockTextureControl, BOTTOM, 0, COLLECTIBLE_TEXTURE_SPACING)
else
textureControl:SetAnchor(TOPLEFT, unlocksContainer)
end
textureControl:SetTexture(collectibleData:GetIcon())
previousUnlockTextureControl = textureControl
end
end
componentsContainer:ClearAnchors()
unlocksContainer:ClearAnchors()
arrowTexture:ClearAnchors()
local maxNumCollectiblesDisplayed
if numCollectibleUnlocks > numNonFragmentCollectibleComponents then
unlocksContainer:SetAnchor(TOPLEFT, nil, TOP, 42, 0)
arrowTexture:SetAnchor(RIGHT, unlocksContainer, LEFT, -10, 0)
componentsContainer:SetAnchor(RIGHT, arrowTexture, LEFT, -10, 0)
maxNumCollectiblesDisplayed = numCollectibleUnlocks
else
componentsContainer:SetAnchor(TOPRIGHT, nil, TOP, -42, 0)
arrowTexture:SetAnchor(LEFT, componentsContainer, RIGHT, 10, 0)
unlocksContainer:SetAnchor(LEFT, arrowTexture, RIGHT, 10, 0)
maxNumCollectiblesDisplayed = numNonFragmentCollectibleComponents
end
scrollControl:ClearAnchors()
-- the collectible containers are resize to fit, so we don't have its actual height yet, so calculate the height of the larger one for our offset
local heightOfLargerContainer = maxNumCollectiblesDisplayed * ZO_COLLECTIBLE_EVOLUTION_TEXTURE_SIZE + (maxNumCollectiblesDisplayed - 1) * COLLECTIBLE_TEXTURE_SPACING
scrollControl:SetAnchor(TOPLEFT, nil, TOPLEFT, 0, heightOfLargerContainer + 25)
scrollControl:SetAnchor(BOTTOMRIGHT)
local tooltipText = zo_strformat(SI_COLLECTIBLE_ADVANCED_COMBINATION_PROMPT_CONFIRMATION_TOOLTIP_TEXT_GAMEPAD, data.componentNameList)
GAMEPAD_TOOLTIPS:LayoutTextBlockTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, tooltipText)
ZO_GenericGamepadDialog_ShowTooltip(dialog)
dialog:setupFunc()
end,
finishedCallback = function(dialog)
textureControlPool:ReleaseAllObjects()
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
title =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_TITLE,
},
mainText =
{
text = SI_COLLECTIBLE_ADVANCED_COMBINATION_PROMPT_CONFIRMATION_TEXT_GAMEPAD,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_YES,
callback = function(dialog)
dialog.data.acceptCallback()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_NO,
callback = function(dialog)
dialog.data.declineCallback()
end,
}
},
noChoiceCallback = function(dialog)
dialog.data.declineCallback()
end,
})
- ingame/inventory/gamepad/gamepadinventory.lua:355 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CONFIRM_DESTROY_DIALOG,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.destroyConfirmText = nil
dialog:setupFunc()
end,
noChoiceCallback = function(dialog)
RespondToDestroyRequest(false)
end,
title =
{
text = SI_PROMPT_TITLE_DESTROY_ITEM_PROMPT,
},
mainText =
{
text = SI_DESTROY_ITEM_PROMPT,
},
buttons =
{
{
onShowCooldown = 2000,
keybind = "DIALOG_PRIMARY",
text = GetString(SI_YES),
callback = function()
ReleaseDialog(true)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_NO),
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/inventory/gamepad/gamepadinventory.lua:413 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_CONFIRM_DESTROY_ARMORY_ITEM_DIALOG,
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
self.destroyConfirmText = nil
dialog:setupFunc()
end,
noChoiceCallback = function(dialog)
RespondToDestroyRequest(false)
end,
title =
{
text = SI_DIALOG_DESTROY_ARMORY_ITEM_TITLE,
},
mainText =
{
text = SI_GAMEPAD_ARMORY_CONFIRM_DESTROY_ITEM_BODY,
},
buttons =
{
{
onShowCooldown = 2000,
keybind = "DIALOG_PRIMARY",
text = GetString(SI_YES),
callback = function()
ReleaseDialog(true)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_NO),
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/inventory/gamepad/gamepadinventory.lua:466 --
ZO_Dialogs_RegisterCustomDialog(ZO_GAMEPAD_SPLIT_STACK_DIALOG,
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.ITEM_SLIDER,
},
setup = function(dialog, data)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_INVENTORY_SPLIT_STACK_TITLE,
},
mainText =
{
text = SI_GAMEPAD_INVENTORY_SPLIT_STACK_PROMPT,
},
OnSliderValueChanged = function(dialog, sliderControl, value)
dialog.sliderValue1:SetText(dialog.data.stackSize - value)
dialog.sliderValue2:SetText(value)
end,
narrationText = function(dialog, itemName)
--The stack on the right
local stack2 = dialog.slider:GetValue()
--The stack on the left
local stack1 = dialog.data.stackSize - stack2
return SCREEN_NARRATION_MANAGER:CreateNarratableObject(zo_strformat(SI_GAMEPAD_INVENTORY_SPLIT_STACK_NARRATION_FORMATTER, itemName, stack1, stack2))
end,
additionalInputNarrationFunction = function()
return ZO_GetHorizontalDirectionalInputNarrationData(GetString(SI_GAMEPAD_INVENTORY_SPLIT_STACK_LEFT_NARRATION), GetString(SI_GAMEPAD_INVENTORY_SPLIT_STACK_RIGHT_NARRATION))
end,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local dialogData = dialog.data
local quantity = ZO_GenericGamepadItemSliderDialogTemplate_GetSliderValue(dialog)
PickupInventoryItem(dialogData.bagId, dialogData.slotIndex, quantity)
TryPlaceInventoryItemInEmptySlot(dialogData.bagId)
end,
},
}
})
- ingame/inventory/gamepad/itemtransferdialog_gamepad.lua:22 --
ZO_Dialogs_RegisterCustomDialog("ITEM_TRANSFER_ADD_TO_CRAFT_BAG_GAMEPAD",
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.ITEM_SLIDER,
},
setup = setupFunc,
title =
{
text = SI_PROMPT_TITLE_ADD_ITEMS_TO_CRAFT_BAG,
},
buttons =
{
{
text = SI_ITEM_ACTION_ADD_ITEMS_TO_CRAFT_BAG,
callback = callbackFunc,
},
{
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/gamepad/itemtransferdialog_gamepad.lua:45 --
ZO_Dialogs_RegisterCustomDialog("ITEM_TRANSFER_REMOVE_FROM_CRAFT_BAG_GAMEPAD",
{
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.ITEM_SLIDER,
},
setup = setupFunc,
title =
{
text = SI_PROMPT_TITLE_REMOVE_ITEMS_FROM_CRAFT_BAG,
},
buttons =
{
{
text = SI_ITEM_ACTION_REMOVE_ITEMS_FROM_CRAFT_BAG,
callback = callbackFunc,
},
{
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/keyboard/confirmcollectibleevolutiondialog_keyboard.lua:8 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_COLLECTIBLE_EVOLUTION_PROMPT_KEYBOARD",
{
customControl = control,
setup = function(dialog)
local data = dialog.data
local baseCollectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(data.baseCollectibleId)
local evolvedCollectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(data.evolvedCollectibleId)
baseCollectibleTextureControl:SetTexture(baseCollectibleData:GetIcon())
evolvedCollectibleTextureControl:SetTexture(evolvedCollectibleData:GetIcon())
end,
title =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_TITLE,
},
mainText =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_CONFIRMATION_TEXT,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
dialog.data.acceptCallback()
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
callback = function(dialog)
dialog.data.declineCallback()
end,
}
},
noChoiceCallback = function(dialog)
dialog.data.declineCallback()
end,
})
- ingame/inventory/keyboard/confirmcollectibleevolutiondialog_keyboard.lua:60 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_COLLECTIBLE_ADVANCED_COMBINATION_PROMPT_KEYBOARD",
{
customControl = control,
setup = function(dialog)
local data = dialog.data
local combinationId = data.combinationId
local numNonFragmentCollectibleComponents = 0
local previousComponentTextureControl = nil
local nonFragmentComponentCollectibleIds = { GetCombinationNonFragmentComponentCollectibleIds(combinationId) }
for i, collectibleId in ipairs(nonFragmentComponentCollectibleIds) do
local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
if collectibleData then
numNonFragmentCollectibleComponents = numNonFragmentCollectibleComponents + 1
local textureControl = textureControlPool:AcquireObject()
textureControl:SetParent(componentsContainer)
if previousComponentTextureControl then
textureControl:SetAnchor(TOP, previousComponentTextureControl, BOTTOM, 0, COLLECTIBLE_TEXTURE_SPACING)
else
textureControl:SetAnchor(TOPLEFT, componentsContainer)
end
textureControl:SetTexture(collectibleData:GetIcon())
previousComponentTextureControl = textureControl
end
end
local numCollectibleUnlocks = GetCombinationNumUnlockedCollectibles(combinationId)
local previousUnlockTextureControl = nil
for i = 1, numCollectibleUnlocks do
local collectibleId = GetCombinationUnlockedCollectibleId(combinationId, i)
local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
if collectibleData then
local textureControl = textureControlPool:AcquireObject()
textureControl:SetParent(unlocksContainer)
if previousUnlockTextureControl then
textureControl:SetAnchor(TOP, previousUnlockTextureControl, BOTTOM, 0, COLLECTIBLE_TEXTURE_SPACING)
else
textureControl:SetAnchor(TOPLEFT, unlocksContainer)
end
textureControl:SetTexture(collectibleData:GetIcon())
previousUnlockTextureControl = textureControl
end
end
componentsContainer:ClearAnchors()
unlocksContainer:ClearAnchors()
arrowTexture:ClearAnchors()
if numCollectibleUnlocks > numNonFragmentCollectibleComponents then
unlocksContainer:SetAnchor(TOPLEFT, nil, TOP, 42, 0)
arrowTexture:SetAnchor(RIGHT, unlocksContainer, LEFT, -10, 0)
componentsContainer:SetAnchor(RIGHT, arrowTexture, LEFT, -10, 0)
else
componentsContainer:SetAnchor(TOPRIGHT, nil, TOP, -42, 0)
arrowTexture:SetAnchor(LEFT, componentsContainer, RIGHT, 10, 0)
unlocksContainer:SetAnchor(LEFT, arrowTexture, RIGHT, 10, 0)
end
end,
finishedCallback = function(dialog)
textureControlPool:ReleaseAllObjects()
end,
title =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_TITLE,
},
mainText =
{
text = SI_COLLECTIBLE_EVOLUTION_PROMPT_CONFIRMATION_TEXT,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
dialog.data.acceptCallback()
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
callback = function(dialog)
dialog.data.declineCallback()
end,
}
},
noChoiceCallback = function(dialog)
dialog.data.declineCallback()
end,
})
- ingame/inventory/keyboard/itemtransferdialog_keyboard.lua:27 --
ZO_Dialogs_RegisterCustomDialog("ITEM_TRANSFER_ADD_TO_CRAFT_BAG_KEYBOARD",
{
canQueue = true,
customControl = control,
setup = setupFunc,
title =
{
text = SI_PROMPT_TITLE_ADD_ITEMS_TO_CRAFT_BAG,
},
buttons =
{
{
control = control:GetNamedChild("Transfer"),
text = SI_ITEM_ACTION_ADD_ITEMS_TO_CRAFT_BAG,
callback = callbackFunc,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/inventory/keyboard/itemtransferdialog_keyboard.lua:51 --
ZO_Dialogs_RegisterCustomDialog("ITEM_TRANSFER_REMOVE_FROM_CRAFT_BAG_KEYBOARD",
{
customControl = control,
setup = setupFunc,
title =
{
text = SI_PROMPT_TITLE_REMOVE_ITEMS_FROM_CRAFT_BAG
},
buttons =
{
{
control = control:GetNamedChild("Transfer"),
text = SI_ITEM_ACTION_REMOVE_ITEMS_FROM_CRAFT_BAG,
callback = callbackFunc,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/keybindings/gamepad/keybindings_gamepad.lua:500 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_BIND_KEY",
{
customControl = control,
title =
{
text = SI_KEYBINDINGS_BINDINGS,
},
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
canQueue = true,
blockDialogReleaseOnPress = true,
setup = function(...) self:SetupDialog(...) end,
finishedCallback = function() self:OnDialogFinished() end,
narrationText = function(...) return self:GetNarrationText(...) end,
buttons =
{
self.primaryKeybindDescriptor,
self.secondaryKeybindDescriptor,
self.tertiaryKeybindDescriptor,
self.quaternaryKeybindDescriptor,
self.backKeybindDescriptor,
}
})
- ingame/keybindings/keyboard/keybindings.lua:95 --
ZO_Dialogs_RegisterCustomDialog("BINDINGS", {
customControl = function() return control end,
setup = function(dialog, ...) self:SetupDialog(...) end,
finishedCallback = function() self:OnDialogFinished() end,
title =
{
text = SI_KEYBINDINGS_BINDINGS,
},
buttons =
{
{
control = control.bindButton,
text = SI_KEYBINDINGS_BIND_BUTTON,
keybind = false,
callback = function(dialog)
self:OnBindClicked()
end,
},
{
control = control.unbindButton,
text = SI_KEYBINDINGS_UNBIND_BUTTON,
keybind = false,
callback = function(dialog)
self:OnUnbindClicked()
end,
},
{
control = control.setDefaultButton,
text = SI_KEYBINDINGS_DEFAULT_BUTTON,
keybind = false,
noReleaseOnClick = true,
callback = function(dialog)
self:OnDefaultClicked()
end,
},
{
control = control.cancelButton,
text = SI_DIALOG_CANCEL,
keybind = false,
},
}
})
- ingame/lfg/keyboard/tributerewards_keyboard.lua:154 --
ZO_Dialogs_RegisterCustomDialog("TRIBUTE_REWARDS_VIEW",
{
customControl = control,
setup = TributeRewardsDialogSetup,
title =
{
text = SI_TRIBUTE_FINDER_REWARDS_TITLE,
},
buttons =
{
{
control = control:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
},
}
})
- ingame/logout/gamepad/logoutdialog_gamepad.lua:24 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_LOG_OUT",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM
},
customControl = self,
setup = SetupLogoutDialog,
updateFn = function(dialog)
local isLocked = ZO_DAILYLOGINREWARDS_MANAGER:IsDailyRewardsLocked()
if tileObject:IsActionAvailable() == isLocked then
tileObject:SetHidden(isLocked)
tileObject:SetActionAvailable(not isLocked)
tileObject:RefreshLayout()
ZO_GenericGamepadDialog_RefreshKeybinds(self)
local dividerControl = dialog:GetNamedChild("TileDivider")
dividerControl:SetHidden(isLocked)
end
end,
OnHiddenCallback = CleanupLogoutDialog,
blockDialogReleaseOnPress = true,
canQueue = true,
title =
{
text = SI_PROMPT_TITLE_LOG_OUT,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_LOG_OUT_GAME_CONFIRM_KEYBIND,
callback = function(dialog)
Logout()
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_LOG_OUT")
end
},
tileObject:GetKeybindDescriptor(),
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_LOG_OUT")
end
},
},
})
- ingame/logout/keyboard/logoutdialog_keyboard.lua:14 --
ZO_Dialogs_RegisterCustomDialog("LOG_OUT",
{
customControl = self,
setup = SetupLogoutDialog,
canQueue = true,
title =
{
text = SI_PROMPT_TITLE_LOG_OUT,
},
updateFn = function(dialog) -- if lock status changes, make sure to update the tile visibility
local isLocked = ZO_DAILYLOGINREWARDS_MANAGER:IsDailyRewardsLocked()
local dailyRewardTile = dialog:GetNamedChild("DailyRewardTile")
if dailyRewardTile.object:IsActionAvailable() == isLocked then
SetupLogoutDialog(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = self:GetNamedChild("Confirm"),
text = SI_LOG_OUT_GAME_CONFIRM_KEYBIND,
callback = function(dialog)
Logout()
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/logout/keyboard/quitdialog_keyboard.lua:14 --
ZO_Dialogs_RegisterCustomDialog("QUIT",
{
customControl = self,
setup = SetupQuitDialog,
canQueue = true,
title =
{
text = SI_PROMPT_TITLE_QUIT,
},
updateFn = function(dialog) -- if lock status changes, make sure to update the tile visibility
local isLocked = ZO_DAILYLOGINREWARDS_MANAGER:IsDailyRewardsLocked()
local dailyRewardTile = dialog:GetNamedChild("DailyRewardTile")
if dailyRewardTile.object:IsActionAvailable() == isLocked then
SetupQuitDialog(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = self:GetNamedChild("Confirm"),
text = SI_QUIT_GAME_CONFIRM_KEYBIND,
callback = function(dialog)
Quit()
end
},
{
control = self:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/mail/gamepad/mailinbox_gamepad.lua:259 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_MAIL_INBOX_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_MAIL_INBOX_OPTIONS,
},
setup = function(dialog, data)
local parametricListEntries = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricListEntries)
local mailData = self:GetActiveMailData()
if mailData and not IsMailSystem(mailData) then
if IsConsoleUI() then
table.insert(parametricListEntries, SHOW_GAMERCARD_ENTRY)
end
table.insert(parametricListEntries, REPLY_ENTRY)
if IsMailReturnable(self:GetActiveMailId()) then
table.insert(parametricListEntries, RETURN_TO_SENDER_ENTRY)
end
--Customer service options are not currently available for PC Gamepad
if IsConsoleUI() and IsMailReportable(mailData) then
table.insert(parametricListEntries, REPORT_PLAYER_ENTRY)
end
end
table.insert(parametricListEntries, DELETE_ON_CLAIM_ENTRY)
dialog.deleteOnClaim = data.deleteOnClaim
dialog.setupFunc(dialog)
end,
parametricList = {}, -- Generated dynamically
blockDialogReleaseOnPress = true,
finishedCallback = function(dialog)
MAIL_MANAGER:SetDeleteOnClaim(dialog.deleteOnClaim)
MAIL_GAMEPAD:RefreshHeader()
KEYBIND_STRIP:UpdateKeybindButtonGroup(self.mainKeybindDescriptor)
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_MAIL_INBOX_OPTIONS")
end,
}
}
})
- ingame/mail/keyboard/mailinbox_keyboard.lua:977 --
ZO_Dialogs_RegisterCustomDialog("MAIL_TAKE_ATTACHMENT_COD",
{
customControl = self,
setup = function(dialog, data)
local currentGoldLabel = self.currentGoldContainer.currencyAmount
local codFeeLabel = self.codFeeContainer.currencyAmount
local currentGold = GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)
local canAffordCODFee = data.codAmount <= currentGold
local confirmStringId = canAffordCODFee and SI_MAIL_CONFIRM_TAKE_ATTACHMENT_COD or SI_MAIL_COD_NOT_ENOUGH_MONEY
local CURRENCY_OPTIONS =
{
showTooltips = true,
}
self.confirmTextLabel:SetText(GetString(confirmStringId))
ZO_CurrencyControl_SetSimpleCurrency(currentGoldLabel, CURT_MONEY, currentGold, CURRENCY_OPTIONS, CURRENCY_SHOW_ALL)
ZO_CurrencyControl_SetSimpleCurrency(codFeeLabel, CURT_MONEY, data.codAmount, CURRENCY_OPTIONS, CURRENCY_SHOW_ALL, not canAffordCODFee)
end,
title =
{
text = SI_PROMPT_TITLE_MAIL_TAKE_ATTACHMENT_COD,
},
buttons =
{
[1] =
{
control = self:GetNamedChild("Accept"),
text = SI_DIALOG_ACCEPT,
enabled = function(dialog)
local codAmount = dialog.data.codAmount
return codAmount <= GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)
end,
callback = function()
MAIL_INBOX:ConfirmAcceptCOD()
end,
},
[2] =
{
control = self:GetNamedChild("Decline"),
text = SI_DIALOG_DECLINE,
}
},
})
- ingame/map/gamepad/worldmapantiquities_gamepad.lua:21 --
ZO_Dialogs_RegisterCustomDialog("WORLD_MAP_ANTIQUITIES_GAMEPAD_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_WORLD_MAP_OPTIONS
},
setup = function(dialog, data)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
for i, action in ipairs(data.actions) do
local entryData = ZO_GamepadEntryData:New(action.text)
entryData.setup = ZO_SharedGamepadEntry_OnSetup
entryData.callback = action.callback
local listItem =
{
template = "ZO_GamepadItemEntryTemplate",
entryData = entryData,
}
table.insert(parametricList, listItem)
end
dialog:setupFunc()
end,
parametricList = {}, -- Generated Dynamically
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
},
},
})
- ingame/map/gamepad/worldmapchoicedialog_gamepad.lua:44 --
ZO_Dialogs_RegisterCustomDialog("WORLD_MAP_CHOICE_GAMEPAD", dialogInfo)
- ingame/promotionalevents/gamepad/promotionalevents_gamepad.lua:886 --
ZO_Dialogs_RegisterCustomDialog("PROMOTIONAL_EVENT_CAPSTONE_GAMEPAD",
{
customControl = control,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
dontEndInWorldInteractions = true,
},
canQueue = true,
setup = function(dialog, data)
self:SetCampaignData(data.campaignData)
end,
narrationText = function()
local narrations = {}
local titleText = GetString(SI_PROMOTIONAL_EVENT_CAPSTONE_DIALOG_TITLE_FORMATTER)
ZO_AppendNarration(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(titleText))
local rewardName = self.rewardData:GetFormattedName()
ZO_AppendNarration(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(rewardName))
local stackCount = self.rewardData:GetQuantity()
if stackCount > 1 then
ZO_AppendNarration(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(stackCount))
end
return narrations
end,
additionalInputNarrationFunction = function()
local narrationData = {}
local closeNarrationData =
{
name = GetString(SI_DIALOG_CLOSE),
keybindName = ZO_Keybindings_GetHighestPriorityNarrationStringFromAction("DIALOG_NEGATIVE") or GetString(SI_ACTION_IS_NOT_BOUND),
enabled = true
}
table.insert(narrationData, closeNarrationData)
local viewInCollectionsNarrationData =
{
name = GetString(SI_PROMOTIONAL_EVENT_CAPSTONE_DIALOG_VIEW_IN_COLLECTIONS_KEYBIND_LABEL),
keybindName = ZO_Keybindings_GetHighestPriorityNarrationStringFromAction("DIALOG_SECONDARY") or GetString(SI_ACTION_IS_NOT_BOUND),
enabled = true
}
table.insert(narrationData, viewInCollectionsNarrationData)
return narrationData
end,
buttons =
{
{
keybind = "DIALOG_SECONDARY",
text = SI_PROMOTIONAL_EVENT_CAPSTONE_DIALOG_VIEW_IN_COLLECTIONS_KEYBIND_LABEL,
clickSound = SOUNDS.DIALOG_ACCEPT,
alignment = KEYBIND_STRIP_ALIGN_CENTER,
callback = function() self:ViewInCollections() end,
visible = function(dialog)
return dialog.data.campaignData:GetRewardData():GetRewardType() == REWARD_ENTRY_TYPE_COLLECTIBLE
end,
ethereal = true,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CLOSE,
clickSound = SOUNDS.DIALOG_DECLINE,
alignment = KEYBIND_STRIP_ALIGN_CENTER,
ethereal = true,
},
},
})
- ingame/promotionalevents/keyboard/promotionalevents_keyboard.lua:444 --
ZO_Dialogs_RegisterCustomDialog("PROMOTIONAL_EVENT_CAPSTONE_KEYBOARD",
{
customControl = control,
setup = function(dialog, data)
self:SetCampaignData(data.campaignData)
end,
buttons =
{
{
control = self.viewInCollectionsButton,
text = SI_PROMOTIONAL_EVENT_CAPSTONE_DIALOG_VIEW_IN_COLLECTIONS_KEYBIND_LABEL,
keybind = "DIALOG_TERTIARY",
callback = function() self:ViewInCollections() end,
visible = function(dialog)
return dialog.data.campaignData:GetRewardData():GetRewardType() == REWARD_ENTRY_TYPE_COLLECTIBLE
end,
},
{
control = self.closeButton,
text = SI_DIALOG_CLOSE,
keybind = "DIALOG_NEGATIVE",
},
}
})
- ingame/repair/repairkits.lua:20 --
ZO_Dialogs_RegisterCustomDialog("REPAIR_ITEM",
{
customControl = function() return ZO_InventorySlot_GetItemListDialog():GetControl() end,
setup = function(dialog, data) self:SetupDialog(data.bag, data.index) end,
title =
{
text = SI_REPAIR_KIT_TITLE,
},
buttons =
{
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(1),
text = SI_REPAIR_KIT_CONFIRM,
clickSound = SOUNDS.INVENTORY_ITEM_REPAIR,
callback = RepairItem,
},
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(2),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/restyle/gamepad/outfit_selector_gamepad.lua:200 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_RENAME_OUFIT",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_OUTFIT_RENAME_TITLE,
},
mainText =
{
text = SI_OUTFIT_RENAME_DESCRIPTION,
},
parametricList =
{
-- user name
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData =
{
nameField = true,
textChangedCallback = function(control)
local inputText = control:GetText()
if parametricDialog.data then
parametricDialog.data.name = inputText
end
UpdateSelectedName(inputText)
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetMaxInputChars(OUTFIT_NAME_MAX_LENGTH)
data.control = control
if parametricDialog.data then
control.editBoxControl:SetText(parametricDialog.data.name)
end
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
},
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.control.editBoxControl:TakeFocus()
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_GAMEPAD_COLLECTIONS_SAVE_NAME_OPTION,
callback = function(dialog)
local outfitIndex = dialog.data.outfitIndex
local outfitManipulator = ZO_OUTFIT_MANAGER:GetOutfitManipulator(GAMEPLAY_ACTOR_CATEGORY_PLAYER, outfitIndex)
outfitManipulator:SetOutfitName(self.selectedName)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RENAME_OUFIT")
end,
visible = function()
return self.noViolations
end,
clickSound = SOUNDS.DIALOG_ACCEPT,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RENAME_OUFIT")
end,
},
}
})
- ingame/restyle/gamepad/outfit_slots_panel_gamepad.lua:276 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_OUTFIT_ITEM_MATERIAL_OPTIONS",
{
canQueue= true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = GetString(SI_GAMEPAD_OUTFITS_SELECT_MATERIAL_DIALOG_TITLE)
},
setup = function(dialog)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
local data = dialog.data
local targetOutfitData = data.selectedData
local outfitStyleId = targetOutfitData:GetReferenceId()
local numMaterials = GetNumOutfitStyleItemMaterials(outfitStyleId)
for materialIndex = 1, numMaterials do
local materialName = GetOutfitStyleItemMaterialName(outfitStyleId, materialIndex)
local entryData = ZO_GamepadEntryData:New(materialName)
entryData.materialIndex = materialIndex
entryData.setup = ZO_SharedGamepadEntry_OnSetup
local listItem =
{
template = "ZO_GamepadItemEntryTemplate",
entryData = entryData,
}
table.insert(parametricList, listItem)
end
dialog:setupFunc()
end,
parametricList = {}, -- Generated Dynamically
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
local data = dialog.data
local slotManipulator = data.slotManipulator
local primaryDye, secondaryDye, accentDye = slotManipulator:GetPendingDyeData()
AddOutfitSlotPreviewElementToPreviewCollection(slotManipulator:GetOutfitSlotIndex(), data.selectedData:GetId(), newSelectedData.materialIndex, primaryDye, secondaryDye, accentDye)
ApplyChangesToPreviewCollectionShown()
end,
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
local slotManipulator = dialog.data.slotManipulator
slotManipulator:SetPendingCollectibleIdAndItemMaterialIndex(dialog.data.selectedData:GetId(), targetData.materialIndex)
self.gridListPanelList:RefreshGridList()
self:EndSelection()
slotManipulator:UpdatePreview(REFRESH_PREVIEW_INSTANTLY)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_OUTFIT_ITEM_MATERIAL_OPTIONS")
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
dialog.data.slotManipulator:UpdatePreview(REFRESH_PREVIEW_INSTANTLY)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_OUTFIT_ITEM_MATERIAL_OPTIONS")
end,
},
}
})
- ingame/restyle/gamepad/restylestation_gamepad.lua:715 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_RESTYLE_STATION_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_GAMEPAD_OUTFITS_OPTIONS_HEADER
},
setup = function(dialog, allActions)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
dialog.dropdowns = {}
for _, action in ipairs(allActions) do
local entryData = ZO_GamepadEntryData:New(action.text)
entryData.action = action
entryData.setup = action.setup or ZO_SharedGamepadEntry_OnSetup
entryData.callback = action.callback
entryData.narrationText = action.narrationText
local listItem =
{
template = action.template or "ZO_GamepadItemEntryTemplate",
entryData = entryData,
header = action.header,
}
table.insert(parametricList, listItem)
end
dialog:setupFunc()
end,
parametricList = {}, -- Generated Dynamically
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RESTYLE_STATION_OPTIONS")
end,
},
},
noChoiceCallback = OnReleaseDialog,
})
- ingame/restyle/gamepad/restylestation_gamepad.lua:1681 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_RESTYLE_STATION_CONFIRM_APPLY",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_OUTFIT_CONFIRM_COMMIT_TITLE
},
setup = function(dialog, allActions)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
local slotCosts, flatCost = self.currentOutfitManipulator:GetAllCostsForPendingChanges()
-- gold
if slotCosts > 0 then
local entryData = ZO_GamepadEntryData:New(GetCurrencyName(CURT_MONEY, IS_SINGULAR, IS_UPPER))
entryData.currencyType = CURT_MONEY
entryData.setup = SetupOutfitApplyOption
entryData.currencyLocation = CURRENCY_LOCATION_CHARACTER
entryData.value = slotCosts
entryData.useFlatCurrency = false
entryData.narrationText = function(entryData, entryControl)
return { SCREEN_NARRATION_MANAGER:CreateNarratableObject(entryData.text), SCREEN_NARRATION_MANAGER:CreateNarratableObject(entryData.value) }
end
local listItem =
{
template = "ZO_Restyle_ApplyChanges_EntryTemplate_Gamepad",
entryData = entryData,
header = GetString(SI_GAMEPAD_OUTFITS_APPLY_CHANGES_LIST_HEADER),
headerTemplate = "ZO_GamepadMenuEntryFullWidthHeaderTemplate",
}
table.insert(parametricList, listItem)
end
-- outfit scraps
if flatCost > 0 then
local entryData = ZO_GamepadEntryData:New(zo_strformat(SI_CURRENCY_NAME_FORMAT, GetCurrencyName(CURT_STYLE_STONES, IS_SINGULAR, IS_UPPER)))
entryData.currencyType = CURT_STYLE_STONES
entryData.currencyLocation = CURRENCY_LOCATION_ACCOUNT
entryData.setup = SetupOutfitApplyOption
entryData.value = flatCost
entryData.useFlatCurrency = true
entryData.narrationText = function(entryData, entryControl)
return { SCREEN_NARRATION_MANAGER:CreateNarratableObject(entryData.text), SCREEN_NARRATION_MANAGER:CreateNarratableObject(entryData.value) }
end
local listItem =
{
template = "ZO_Restyle_ApplyChanges_EntryTemplate_Gamepad",
entryData = entryData,
}
table.insert(parametricList, listItem)
end
dialog:setupFunc()
end,
parametricList = {}, -- Added Dynamically
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
if newSelectedData then
local IS_GAMEPAD = true
local USE_SHORT_FORMAT = false
local balanceData =
{
data1 = { header = GetString(SI_GAMEPAD_OUTFITS_APPLY_CHANGES_BALANCE),
value = ZO_CurrencyControl_FormatCurrencyAndAppendIcon(GetCurrencyAmount(newSelectedData.currencyType, newSelectedData.currencyLocation), USE_SHORT_FORMAT, newSelectedData.currencyType, IS_GAMEPAD) },
}
ZO_GenericGamepadDialog_RefreshHeaderData(dialog, balanceData)
end
end,
blockDialogReleaseOnPress = true,
buttons =
{
{
onShowCooldown = 2000,
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
self.currentOutfitManipulator:SendOutfitChangeRequest(targetData.useFlatCurrency)
end
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RESTYLE_STATION_CONFIRM_APPLY")
end,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
local slotCosts, flatCost = self.currentOutfitManipulator:GetAllCostsForPendingChanges()
local costToUse = targetData.currencyType == CURT_MONEY and slotCosts or flatCost
return costToUse <= GetCurrencyAmount(targetData.currencyType, targetData.currencyLocation)
end
return false
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RESTYLE_STATION_CONFIRM_APPLY")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = zo_strformat(SI_BUY_CURRENCY, GetCurrencyName(CURT_STYLE_STONES, IS_SINGULAR, IS_UPPER)),
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_RESTYLE_STATION_CONFIRM_APPLY")
self.currentOutfitManipulator:SetMarkedForPreservation(true)
ShowMarketAndSearch("", MARKET_OPEN_OPERATION_OUTFIT_CURRENCY)
end,
},
}
})
- ingame/restyle/keyboard/restylestation_keyboard.lua:628 --
ZO_Dialogs_RegisterCustomDialog("OUTFIT_CONFIRM_COST_KEYBOARD",
{
customControl = control,
title =
{
text = SI_OUTFIT_CONFIRM_COMMIT_TITLE,
},
setup = function(dialog, data)
self:SetupDialog(data.outfitManipulator)
end,
buttons =
{
{
control = self.confirmButton,
text = function() self:GetConfirmButtonText() end,
keybind = "DIALOG_PRIMARY",
callback = function() self:Confirm() end,
},
{
control = contentsControl:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
keybind = "DIALOG_NEGATIVE",
},
}
})
- ingame/retrait/retraitstation_reconstruct_dialogs.lua:52 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_ITEM_RECONSTRUCTION",
{
customControl = control,
setup = SetupDialog,
title =
{
text = SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_TITLE,
},
buttons =
{
-- Confirm Button
{
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_RETRAIT_STATION_RECONSTRUCT_ACTION),
callback = function(dialog)
ZO_RECONSTRUCT_KEYBOARD:RequestReconstruction()
end,
},
-- Cancel Button
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
},
},
})
- ingame/retrait/retraitstation_reconstruct_dialogs.lua:100 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CONFIRM_ITEM_RECONSTRUCTION",
{
canQueue = true,
customControl = control,
setup = function(dialog)
local data = dialog.data
local itemSetPieceData = data.itemSetPieceData
itemName:SetText(itemSetPieceData:GetItemLink())
itemIcon:SetTexture(itemSetPieceData:GetIcon())
costLinePool:ReleaseAllObjects()
local previousControl
local currencyCosts, materialCosts = itemSetPieceData:GetCostInfo()
local currencyCost = currencyCosts[1]
if currencyCost then
local costLine = costLinePool:AcquireObject()
costLine.stackCountLabel:SetText(currencyCost.currencyRequired)
costLine.iconTexture:SetTexture(currencyCost.currencyIcon)
costLine.nameLabel:SetText(currencyCost.currencyName)
costLine:ClearAnchors()
costLine:SetAnchor(TOPLEFT, summaryDescriptionLabel, BOTTOMLEFT, 0, 20)
previousControl = costLine
end
for index, materialCost in ipairs(materialCosts) do
local costLine = costLinePool:AcquireObject()
costLine.stackCountLabel:SetText(materialCost.reagentsRequired)
costLine.iconTexture:SetTexture(materialCost.reagentIcon)
costLine.nameLabel:SetText(materialCost.reagentItemLink)
costLine:ClearAnchors()
if previousControl then
costLine:SetAnchor(TOPLEFT, previousControl, BOTTOMLEFT)
else
costLine:SetAnchor(TOPLEFT, summaryDescriptionLabel, BOTTOMLEFT, 0, 20)
end
previousControl = costLine
end
local NO_ENTRY_LIMIT = nil
dialog:setupFunc(NO_ENTRY_LIMIT, data)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
title =
{
text = SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_HEADER,
},
mainText =
{
text = "",
},
narrationText = function(dialog)
local data = dialog.data
local itemSetPieceData = data.itemSetPieceData
local narrations = {}
--Get the narration for the item name
table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(itemSetPieceData:GetFormattedName()))
--Get the narration for the dialog main text
table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(GetString(SI_RETRAIT_STATION_CONFIRM_ITEM_RECONSTRUCTION_DESCRIPTION)))
--Get the narration for the required currency
local currencyCosts, materialCosts = itemSetPieceData:GetCostInfo()
local currencyCost = currencyCosts[1]
if currencyCost then
local formattedCost = ZO_Currency_FormatGamepad(currencyCost.currencyType, currencyCost.currencyRequired, ZO_CURRENCY_FORMAT_AMOUNT_NAME)
table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(formattedCost))
end
--Get the narration for the required materials
for index, materialCost in ipairs(materialCosts) do
local name = GetItemLinkName(materialCost.reagentItemLink)
local stackCount = materialCost.reagentsRequired
table.insert(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(zo_strformat(SI_GAMEPAD_RECONSTRUCT_REQUIRED_ITEM_NARRATION_FORMATTER, stackCount, name)))
end
return narrations
end,
buttons =
{
-- Reconstruct Button
{
keybind = "DIALOG_PRIMARY",
text = SI_RETRAIT_STATION_RECONSTRUCT_ACTION,
callback = function(dialog)
ZO_RETRAIT_STATION_RECONSTRUCT_GAMEPAD:RequestReconstruction()
end,
},
-- Back
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1358 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SKILLS_PURCHASE_CONFIRMATION",
{
setup = SetupFunction,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
title =
{
text = GetString(SI_GAMEPAD_SKILLS_PURCHASE_TITLE),
},
mainText =
{
text = GetString(SI_GAMEPAD_SKILLS_PURCHASE_CONFIRM),
},
warning =
{
text = function(dialog)
if not ZO_SKILLS_ADVISOR_SINGLETON:IsAdvancedModeSelected() and dialog.data.purchaseSkillProgressionData:IsAdvised() then
ZO_GenericGamepadDialog_SetDialogWarningColor(dialog, ZO_SKILLS_ADVISOR_ADVISED_COLOR)
return GetString(SI_SKILLS_ADVISOR_PURCHASE_ADVISED)
end
return ""
end
},
buttons =
{
[1] =
{
text = SI_GAMEPAD_SKILLS_PURCHASE,
callback = function(dialog)
local purchaseSkillProgressionData = dialog.data.purchaseSkillProgressionData
local skillData = purchaseSkillProgressionData:GetSkillData()
skillData:GetPointAllocator():Purchase()
end,
},
[2] =
{
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1402 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SKILLS_UPGRADE_CONFIRMATION",
{
setup = SetupFunction,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
title =
{
text = GetString(SI_GAMEPAD_SKILLS_PURCHASE_TITLE),
},
mainText =
{
text = GetString(SI_GAMEPAD_SKILLS_UPGRADE_CONFIRM),
},
warning =
{
text = function(dialog)
local currentSkillProgressionData = dialog.data.currentSkillProgressionData
local upgradeSkillProgressionData = currentSkillProgressionData:GetNextRankData()
if not ZO_SKILLS_ADVISOR_SINGLETON:IsAdvancedModeSelected() and upgradeSkillProgressionData:IsAdvised() then
ZO_GenericGamepadDialog_SetDialogWarningColor(dialog, ZO_SKILLS_ADVISOR_ADVISED_COLOR)
return GetString(SI_SKILLS_ADVISOR_PURCHASE_ADVISED)
end
return ""
end
},
buttons =
{
[1] =
{
text = SI_GAMEPAD_SKILLS_PURCHASE,
callback = function(dialog)
local currentSkillProgressionData = dialog.data.currentSkillProgressionData
local skillData = currentSkillProgressionData:GetSkillData()
skillData:GetPointAllocator():IncreaseRank()
end,
},
[2] =
{
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1488 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SKILLS_MORPH_CONFIRMATION",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
local availablePoints = GetAvailableSkillPoints()
g_morphHeaderData.data1.value = availablePoints
ZO_GenericGamepadDialog_ShowTooltip(dialog)
dialog:setupFunc(nil, g_morphHeaderData)
--Select the currently chosen morph if a morph is chosen, or pick the first one
local morphSkillData = dialog.data.morphSkillData
local selectedMorphSkillProgressionData = morphSkillData:GetPointAllocatorProgressionData()
if selectedMorphSkillProgressionData:GetMorphSlot() == MORPH_SLOT_MORPH_2 then
dialog.entryList:SetSelectedIndexWithoutAnimation(2)
else
dialog.entryList:SetSelectedIndexWithoutAnimation(1)
end
end,
title =
{
text = GetString(SI_GAMEPAD_SKILLS_MORPH_TITLE),
},
parametricList =
{
-- Morph 1
{
template = "ZO_GamepadSimpleAbilityEntryTemplate",
templateData =
{
setup = MorphConfirmSetup,
morphSlot = MORPH_SLOT_MORPH_1,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
-- Morph 2
{
template = "ZO_GamepadSimpleAbilityEntryTemplate",
templateData =
{
setup = MorphConfirmSetup,
morphSlot = MORPH_SLOT_MORPH_2,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
},
},
parametricListOnSelectionChangedCallback = function(dialog, list)
local targetData = list:GetTargetData()
local morphSkillData = parametricDialog.data.morphSkillData
local morphSkillProgressionData = morphSkillData:GetMorphData(targetData.morphSlot)
local SHOW_RANK_NEEDED_LINE = true
local SHOW_POINT_SPEND_LINE = true
local SHOW_ADVISED_LINE = true
local DONT_SHOW_RESPEC_TO_FIX_BAD_MORPH_LINE = false
local SHOW_UPGRADE_INFO_BLOCK = true
GAMEPAD_TOOLTIPS:LayoutSkillProgression(GAMEPAD_LEFT_DIALOG_TOOLTIP, morphSkillProgressionData, SHOW_RANK_NEEDED_LINE, SHOW_POINT_SPEND_LINE, SHOW_ADVISED_LINE, DONT_SHOW_RESPEC_TO_FIX_BAD_MORPH_LINE, SHOW_UPGRADE_INFO_BLOCK)
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SKILLS_MORPH,
callback = MorphConfirmCallback,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
self.selectedTooltipRefreshGroup:MarkDirty("Full")
end,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1572 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SKILL_STYLE_SELECTION",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
local progressionId = dialog.data.skillData.progressionId
local isSkillLinePurchased = dialog.data.skillData.isPurchased
local parametricListEntries = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricListEntries)
local currentCollectibleId = GetActiveProgressionSkillAbilityFxOverrideCollectibleId(progressionId)
-- Insert Default Entry
local defaultEntryData = ZO_GamepadEntryData:New(GetString(SI_SKILL_STYLING_DEFAULT_NAME))
defaultEntryData.setup = ZO_SharedGamepadEntry_OnSetup
defaultEntryData:AddIcon("EsoUI/Art/Progression/Gamepad/gp_skillStyleEmpty.dds")
defaultEntryData.collectibleId = 0
defaultEntryData.isCurrent = currentCollectibleId == 0
defaultEntryData:SetSelected(defaultEntryData.isCurrent)
defaultEntryData.narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP
local defaultListItem =
{
template = "ZO_GamepadItemEntryTemplate",
entryData = defaultEntryData,
}
table.insert(parametricListEntries, defaultListItem)
-- Insert Available Skill Styles for Progression
for index = 1, GetNumProgressionSkillAbilityFxOverrides(progressionId) do
local collectibleId = GetProgressionSkillAbilityFxOverrideCollectibleIdByIndex(progressionId, index)
local collectibleData = ZO_COLLECTIBLE_DATA_MANAGER:GetCollectibleDataById(collectibleId)
if collectibleData and not collectibleData:IsHiddenFromCollection() then
local entryData = ZO_GamepadEntryData:New(collectibleData:GetFormattedName())
entryData.setup = ZO_SharedGamepadEntry_OnSetup
entryData:AddIcon(collectibleData:GetIcon())
entryData.iconIndex = index
entryData.collectibleId = collectibleId
entryData.collectibleData = collectibleData
entryData.isCurrent = function()
return collectibleId == currentCollectibleId
end
entryData:InitializeCollectibleVisualData(collectibleData, GAMEPLAY_ACTOR_CATEGORY_PLAYER)
entryData:SetEnabled(isSkillLinePurchased and collectibleData:IsUnlocked())
entryData:SetSelected(entryData.isCurrent())
entryData.narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP
local listItem =
{
template = "ZO_GamepadItemEntryTemplate",
entryData = entryData,
}
table.insert(parametricListEntries, listItem)
end
end
ZO_GenericGamepadDialog_ShowTooltip(dialog)
dialog:setupFunc()
end,
finishedCallback = function()
self.lineFilterListRefreshGroup:MarkDirty("Visible")
self.lineFilterListRefreshGroup:TryClean()
end,
title =
{
text = function(dialog)
local data = dialog.data
local skillType = data.skillData.skillLineData.skillTypeData.skillType
local skillLineIndex = data.skillData.skillLineData.skillLineIndex
local skillIndex = data.skillData.skillIndex
return zo_strformat(SI_SKILL_STYLING_DIALOG_TITLE, GetProgressionSkillProgressionName(skillType, skillLineIndex, skillIndex))
end,
},
mainText =
{
text = function(dialog)
local data = dialog.data
if not data.skillData.isPurchased then
return GetString(SI_SKILL_STYLING_SKILL_NOT_PURCHASED)
end
return ""
end,
},
parametricList = {}, -- Generated Dynamically
parametricListOnSelectionChangedCallback = function(dialog, list)
local targetData = dialog.entryList:GetTargetData()
if targetData then
if targetData.collectibleId == 0 then
GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, GetString(SI_SKILL_STYLING_TOOLTIP_DEFAULT_TITLE), GetString(SI_SKILL_STYLING_TOOLTIP_DEFAULT_DESCRIPTION))
else
local NO_COOLDOWN = 0
local SHOW_VISUAL_LAYER_INFO = true
local SHOW_BLOCK_REASON = true
GAMEPAD_TOOLTIPS:LayoutCollectibleFromData(GAMEPAD_LEFT_DIALOG_TOOLTIP, targetData.collectibleData, SHOW_VISUAL_LAYER_INFO, NO_COOLDOWN, SHOW_BLOCK_REASON)
ZO_GenericGamepadDialog_ShowTooltip(dialog)
end
else
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
return targetData:IsEnabled()
end
return false
end,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData then
local isCurrent = targetData.isCurrent
if type(isCurrent) == "function" then
isCurrent = isCurrent()
end
if targetData.collectibleData then
if not isCurrent then
targetData.collectibleData:Use()
end
else
-- We selected default, unselect current collectible by using it again
for i = 1, dialog.entryList:GetNumEntries() do
local entryData = dialog.entryList:GetEntryData(i)
local isCurrent = entryData.isCurrent
if type(isCurrent) == "function" then
isCurrent = isCurrent()
end
if entryData.collectibleData and isCurrent then
entryData.collectibleData:Use()
end
end
end
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
self.selectedTooltipRefreshGroup:MarkDirty("Full")
end,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1743 --
ZO_Dialogs_RegisterCustomDialog("SKILL_RESPEC_CONFIRM_GOLD_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_SKILL_RESPEC_CONFIRM_DIALOG_TITLE,
},
mainText =
{
text = SI_SKILL_RESPEC_CONFIRM_DIALOG_BODY_INTRO,
},
setup = function(dialog)
local balance = GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)
local cost = GetSkillRespecCost(SKILLS_AND_ACTION_BAR_MANAGER:GetSkillPointAllocationMode())
local IS_GAMEPAD = true
dialogData.data1.value = ZO_Currency_Format(balance, CURT_MONEY, ZO_CURRENCY_FORMAT_AMOUNT_ICON, IS_GAMEPAD)
dialogData.data2.value = ZO_Currency_Format(cost, CURT_MONEY, balance > cost and ZO_CURRENCY_FORMAT_AMOUNT_ICON or ZO_CURRENCY_FORMAT_ERROR_AMOUNT_ICON, IS_GAMEPAD)
dialog.setupFunc(dialog, dialogData)
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function()
SKILLS_AND_ACTION_BAR_MANAGER:ApplyChanges()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1804 --
ZO_Dialogs_RegisterCustomDialog("SKILL_RESPEC_CONFIRM_CLEAR_ALL_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = function()
return GetString("SI_SKILLPOINTALLOCATIONMODE_CLEARKEYBIND", SKILLS_AND_ACTION_BAR_MANAGER:GetSkillPointAllocationMode())
end,
},
setup = function(dialog, skillLineData)
clearSkillLineEntry.header = GetString("SI_SKILLPOINTALLOCATIONMODE_CLEARCHOICEHEADERGAMEPAD", SKILLS_AND_ACTION_BAR_MANAGER:GetSkillPointAllocationMode())
local clearSkillLineEntryTemplateData = clearSkillLineEntry.templateData
clearSkillLineEntryTemplateData.text = skillLineData:GetFormattedName()
clearSkillLineEntryTemplateData.skillLineData = skillLineData
dialog.setupFunc(dialog, nil , skillLineData)
end,
parametricList =
{
-- Clear Skill Line
clearSkillLineEntry,
-- Clear All
{
template = "ZO_GamepadMenuEntryTemplate",
templateData =
{
text = GetString(SI_SKILL_RESPEC_CONFIRM_CLEAR_ALL_DIALOG_ALL_OPTION),
setup = ZO_SharedGamepadEntry_OnSetup,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local entry = dialog.entryList:GetTargetData()
if entry.skillLineData then
SKILL_POINT_ALLOCATION_MANAGER:ClearPointsOnSkillLine(entry.skillLineData)
else
SKILL_POINT_ALLOCATION_MANAGER:ClearPointsOnAllSkillLines()
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/gamepad/gamepadskills.lua:1930 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_SKILLS_ATTRIBUTE_PURCHASE",
{
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = function(dialog)
attributePointData.data1.value = self:GetAvailablePoints()
ZO_GenericGamepadDialog_ShowTooltip(dialog)
dialog:setupFunc(nil, attributePointData)
end,
title =
{
text = GetString(SI_STATS_ATTRIBUTES_LEVEL_UP),
},
blockDirectionalInput = true,
parametricList =
{
-- magicka
{
template = "ZO_GamepadStatAttributeRow",
templateData =
{
setup = ZO_GamepadStatAttributeRow_Setup,
attributeType = ATTRIBUTE_MAGICKA,
screen = self,
onValueChangedCallback = OnAttributeValueChanged,
narrationText = GetAttributeNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
text = GetString("SI_ATTRIBUTES", ATTRIBUTE_MAGICKA),
icon = "/esoui/art/characterwindow/Gamepad/gp_characterSheet_magickaIcon.dds",
},
-- health
{
template = "ZO_GamepadStatAttributeRow",
templateData =
{
setup = ZO_GamepadStatAttributeRow_Setup,
attributeType = ATTRIBUTE_HEALTH,
screen = self,
onValueChangedCallback = OnAttributeValueChanged,
narrationText = GetAttributeNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
text = GetString("SI_ATTRIBUTES", ATTRIBUTE_HEALTH),
icon = "/esoui/art/characterwindow/Gamepad/gp_characterSheet_healthIcon.dds",
},
-- stamina
{
template = "ZO_GamepadStatAttributeRow",
templateData =
{
setup = ZO_GamepadStatAttributeRow_Setup,
attributeType = ATTRIBUTE_STAMINA,
screen = self,
onValueChangedCallback = OnAttributeValueChanged,
narrationText = GetAttributeNarrationText,
narrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
},
text = GetString("SI_ATTRIBUTES", ATTRIBUTE_STAMINA),
icon = "/esoui/art/characterwindow/Gamepad/gp_characterSheet_staminaIcon.dds",
},
},
parametricListOnSelectionChangedCallback = function()
self:UpdatePendingStatBonuses()
end,
parametricListOnActivatedChangedCallback = function(list, isActive)
if not isActive then
local selectedControl = list:GetSelectedControl()
if selectedControl and selectedControl.pointLimitedSpinner then
selectedControl.pointLimitedSpinner:SetActive(false)
end
else
list:RefreshVisible()
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_LEVELUP_DIALOG_CONFIRM,
callback = function(dialog)
local pendingHealth = self.pendingAttributePoints[ATTRIBUTE_HEALTH]
local pendingMagicka = self.pendingAttributePoints[ATTRIBUTE_MAGICKA]
local pendingStamina = self.pendingAttributePoints[ATTRIBUTE_STAMINA]
if pendingHealth + pendingMagicka + pendingStamina > 0 then
PurchaseAttributes(pendingHealth, pendingMagicka, pendingStamina)
PlaySound(SOUNDS.GAMEPAD_STATS_SINGLE_PURCHASE)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_BACK_OPTION,
},
},
finishedCallback = function(dialog)
--Setup Skills Scene
ZO_GenericGamepadDialog_HideTooltip(dialog)
self.showAttributeDialog = false
self.selectedTooltipRefreshGroup:MarkDirty("Full")
self:ResetAttributeData()
end,
})
- ingame/skills/gamepad/gamepadskills.lua:2195 --
ZO_Dialogs_RegisterCustomDialog("SKILLS_OPTIONS_DIALOG_GAMEPAD",
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_GAMEPAD_OPTIONS_MENU,
},
parametricList =
{
{
template = "ZO_GamepadMenuEntryTemplate",
entryData = linkInChat,
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function()
ReleaseDialog()
end,
},
}
})
- ingame/skills/keyboard/zo_skills.lua:113 --
ZO_Dialogs_RegisterCustomDialog("MORPH_ABILITY_CONFIRM",
{
customControl = dialogControl,
setup = SetupMorphAbilityConfirmDialog,
title =
{
text = SI_SKILLS_MORPH_ABILITY,
},
buttons =
{
[1] =
{
control = dialogControl:GetNamedChild("Confirm"),
text = SI_SKILLS_MORPH_CONFIRM,
callback = function(dialog)
if dialog.chosenMorphProgressionData then
local skillPointAllocator = dialog.chosenMorphProgressionData:GetSkillData():GetPointAllocator()
skillPointAllocator:Morph(dialog.chosenMorphProgressionData:GetMorphSlot())
end
end,
},
[2] =
{
control = dialogControl:GetNamedChild("Cancel"),
text = SI_CANCEL,
}
}
})
- ingame/skills/keyboard/zo_skills.lua:168 --
ZO_Dialogs_RegisterCustomDialog("PURCHASE_ABILITY_CONFIRM",
{
customControl = confirmDialogControl,
setup = SetupPurchaseAbilityConfirmDialog,
title =
{
text = SI_SKILLS_CONFIRM_PURCHASE_ABILITY,
},
buttons =
{
[1] =
{
control = confirmDialogControl:GetNamedChild("Confirm"),
text = SI_SKILLS_UNLOCK_CONFIRM,
callback = function(dialog)
local skillProgressionData = dialog.data
local skillPointAllocator = skillProgressionData:GetSkillData():GetPointAllocator()
skillPointAllocator:Purchase()
end,
},
[2] =
{
control = confirmDialogControl:GetNamedChild("Cancel"),
text = SI_CANCEL,
}
}
})
- ingame/skills/keyboard/zo_skills.lua:239 --
ZO_Dialogs_RegisterCustomDialog("UPGRADE_ABILITY_CONFIRM",
{
customControl = upgradeDialogControl,
setup = SetupUpgradeAbilityDialog,
title =
{
text = SI_SKILLS_UPGRADE_ABILITY,
},
buttons =
{
[1] =
{
control = upgradeDialogControl:GetNamedChild("Confirm"),
text = SI_SKILLS_UPGRADE_CONFIRM,
callback = function(dialog)
local skillData = dialog.data
local skillPointAllocator = skillData:GetPointAllocator()
skillPointAllocator:IncreaseRank()
end,
},
[2] =
{
control = upgradeDialogControl:GetNamedChild("Cancel"),
text = SI_CANCEL,
}
}
})
- ingame/skills/keyboard/zo_skills.lua:280 --
ZO_Dialogs_RegisterCustomDialog("SKILL_RESPEC_CONFIRM_GOLD_KEYBOARD",
{
customControl = control,
setup = SetupRespecConfirmationGoldDialog,
title =
{
text = SI_SKILL_RESPEC_CONFIRM_DIALOG_TITLE,
},
mainText =
{
text = SI_SKILL_RESPEC_CONFIRM_DIALOG_BODY_INTRO,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function()
SKILLS_AND_ACTION_BAR_MANAGER:ApplyChanges()
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/skills/keyboard/zo_skills.lua:330 --
ZO_Dialogs_RegisterCustomDialog("SKILL_RESPEC_CONFIRM_CLEAR_ALL_KEYBOARD",
{
customControl = control,
setup = SetupSkillRespecConfirmClear,
title =
{
text = function()
return GetString("SI_SKILLPOINTALLOCATIONMODE_CLEARKEYBIND", SKILLS_AND_ACTION_BAR_MANAGER:GetSkillPointAllocationMode())
end,
},
mainText =
{
text = function()
return GetString("SI_SKILLPOINTALLOCATIONMODE_CLEARCHOICEHEADERKEYBOARD", SKILLS_AND_ACTION_BAR_MANAGER:GetSkillPointAllocationMode())
end
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function()
local selectedButton = radioButtonGroup:GetClickedButton()
if selectedButton.skillLineData then
SKILL_POINT_ALLOCATION_MANAGER:ClearPointsOnSkillLine(selectedButton.skillLineData)
else
SKILL_POINT_ALLOCATION_MANAGER:ClearPointsOnAllSkillLines()
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/skills/keyboard/zo_skills.lua:406 --
ZO_Dialogs_RegisterCustomDialog("SKILL_STYLE_SELECT_KEYBOARD",
{
customControl = control,
setup = SetupSelectSkillStyleDialog,
title =
{
text = function(dialog)
local data = dialog.data
local skillType = data.skillData.skillLineData.skillTypeData.skillType
local skillLineIndex = data.skillData.skillLineData.skillLineIndex
local skillIndex = data.skillData.skillIndex
return zo_strformat(SI_SKILL_STYLING_DIALOG_TITLE, GetProgressionSkillProgressionName(skillType, skillLineIndex, skillIndex))
end,
},
mainText =
{
text = "",
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
callback = function(dialog)
ClearTooltip(ItemTooltip)
end,
},
}
})
- ingame/soulgemitemcharger/soulgemitemcharger.lua:20 --
ZO_Dialogs_RegisterCustomDialog("CHARGE_ITEM",
{
customControl = function() return ZO_InventorySlot_GetItemListDialog():GetControl() end,
setup = function(dialog, data) self:SetupDialog(data.bag, data.index) end,
title =
{
text = SI_CHARGE_WEAPON_TITLE,
},
buttons =
{
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(1),
text = SI_CHARGE_WEAPON_CONFIRM,
clickSound = SOUNDS.INVENTORY_ITEM_APPLY_CHARGE,
callback = ChargeItem,
},
{
control = ZO_InventorySlot_GetItemListDialog():GetButton(2),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/stats/gamepad/zo_stats_gamepad.lua:761 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_STATS_COMMIT_POINTS_DIALOG_NAME,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_STAT_GAMEPAD_CHANGE_ATTRIBUTES,
},
mainText =
{
text = SI_STAT_GAMEPAD_COMMIT_POINTS_QUESTION,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_DIALOG_YES_BUTTON,
callback = function()
self:PurchaseAttributes()
self:SetAttributePointAllocationMode(ATTRIBUTE_POINT_ALLOCATION_MODE_PURCHASE_ONLY)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_DIALOG_NO_BUTTON,
},
}
})
- ingame/stats/gamepad/zo_stats_gamepad.lua:802 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_STATS_RESPEC_ATTRIBUTES_DIALOG_NAME,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_STAT_GAMEPAD_CHANGE_ATTRIBUTES,
},
mainText =
{
text = SI_STAT_GAMEPAD_COMMIT_POINTS_CONFIRM_CHANGES,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_DIALOG_YES_BUTTON,
callback = function()
self:RespecAttributes()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_GAMEPAD_DIALOG_NO_BUTTON,
},
}
})
- ingame/stats/gamepad/zo_stats_gamepad.lua:1839 --
ZO_Dialogs_RegisterCustomDialog("ATTRIBUTE_RESPEC_CONFIRM_GOLD_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_ATTRIBUTE_RESPEC_CONFIRM_DIALOG_TITLE,
},
mainText =
{
text = SI_ATTRIBUTE_RESPEC_CONFIRM_DIALOG_BODY_INTRO,
},
setup = function(dialog)
local balance = GetCurrencyAmount(CURT_MONEY, CURRENCY_LOCATION_CHARACTER)
local cost = GetAttributeRespecGoldCost()
local IS_GAMEPAD = true
dialogData.data1.value = ZO_Currency_Format(balance, CURT_MONEY, ZO_CURRENCY_FORMAT_AMOUNT_ICON, IS_GAMEPAD)
dialogData.data2.value = ZO_Currency_Format(cost, CURT_MONEY, balance > cost and ZO_CURRENCY_FORMAT_AMOUNT_ICON or ZO_CURRENCY_FORMAT_ERROR_AMOUNT_ICON, IS_GAMEPAD)
dialog.setupFunc(dialog, dialogData)
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function()
GAMEPAD_STATS:RespecAttributes()
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
})
- ingame/stats/keyboard/zo_stats_keyboard.lua:36 --
ZO_Dialogs_RegisterCustomDialog("ATTRIBUTE_RESPEC_CONFIRM_GOLD_KEYBOARD",
{
customControl = control,
setup = SetupRespecConfirmationGoldDialog,
title =
{
text = SI_ATTRIBUTE_RESPEC_CONFIRM_DIALOG_TITLE,
},
mainText =
{
text = SI_ATTRIBUTE_RESPEC_CONFIRM_DIALOG_BODY_INTRO,
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
control = control:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function()
STATS:RespecAttributes()
end,
},
{
keybind = "DIALOG_NEGATIVE",
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
}
})
- ingame/storewindow/keyboard/storewindow_keyboard.lua:63 --
ZO_Dialogs_RegisterCustomDialog("BUY_MULTIPLE",
{
customControl = ZO_BuyMultipleDialog,
title =
{
text = SI_PROMPT_TITLE_BUY_MULTIPLE,
},
buttons =
{
[1] =
{
control = GetControl(self.multipleDialog, "Purchase"),
text = SI_DIALOG_PURCHASE,
callback = function(dialog)
STORE_WINDOW:BuyMultiplePurchase()
end,
},
[2] =
{
control = GetControl(self.multipleDialog, "Cancel"),
text = SI_DIALOG_CANCEL,
}
}
})
- ingame/tradinghouse/keyboard/tradinghouse_keyboard.lua:1066 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_TRADING_HOUSE_PURCHASE",
{
customControl = dialogControl,
setup = function(self) SetupTradingHouseItemDialog(self, GetTradingHouseSearchResultItemInfo, self.purchaseIndex, SLOT_TYPE_TRADING_HOUSE_ITEM_RESULT, SI_TRADING_HOUSE_PURCHASE_ITEM_AMOUNT) end,
title =
{
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(dialogControl, "Accept"),
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_CONFIRM,
callback = function(dialog)
ConfirmPendingItemPurchase()
end,
},
[2] =
{
control = GetControl(dialogControl, "Cancel"),
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_CANCEL,
callback = function(dialog)
ClearPendingItemPurchase()
end,
}
}
})
- ingame/tradinghouse/keyboard/tradinghouse_keyboard.lua:1109 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_TRADING_HOUSE_GUILD_SPECIFIC_PURCHASE",
{
customControl = dialogControl,
setup = function(self) SetupTradingHouseItemDialog(self, GetGuildSpecificItemInfo, self.guildSpecificItemIndex, SLOT_TYPE_GUILD_SPECIFIC_ITEM, SI_TRADING_HOUSE_PURCHASE_ITEM_AMOUNT) end,
title =
{
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(dialogControl, "Accept"),
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_CONFIRM,
callback = function(dialog)
BuyGuildSpecificItem(dialog.guildSpecificItemIndex)
tradingHouseManager:HandleGuildSpecificPurchase(dialog.guildSpecificItemIndex)
end,
},
[2] =
{
control = GetControl(dialogControl, "Cancel"),
text = SI_TRADING_HOUSE_PURCHASE_ITEM_DIALOG_CANCEL,
callback = function(dialog)
-- Do nothing
end,
}
}
})
- ingame/tradinghouse/keyboard/tradinghouse_keyboard.lua:1165 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_TRADING_HOUSE_CANCEL_LISTING",
{
customControl = dialogControl,
setup = function(self) SetupTradingHouseItemDialog(self, GetTradingHouseListingItemInfo, self.listingIndex, SLOT_TYPE_TRADING_HOUSE_ITEM_LISTING) end,
title =
{
text = SI_TRADING_HOUSE_CANCEL_LISTING_DIALOG_TITLE,
},
buttons =
{
[1] =
{
control = GetControl(dialogControl, "Accept"),
text = SI_TRADING_HOUSE_CANCEL_LISTING_DIALOG_CONFIRM,
callback = function(dialog)
CancelTradingHouseListing(dialog.listingIndex)
dialog.listingIndex = nil
end,
},
[2] =
{
control = GetControl(dialogControl, "Cancel"),
text = SI_TRADING_HOUSE_CANCEL_LISTING_DIALOG_CANCEL,
callback = function(dialog)
dialog.listingIndex = nil
end,
}
}
})
- ingame/trialaccount/trialaccount.lua:33 --
ZO_Dialogs_RegisterCustomDialog("TRIAL_ACCOUNT_SPLASH_KEYBOARD", self.dialogInfo)
- ingame/trialaccount/trialaccount.lua:35 --
ZO_Dialogs_RegisterCustomDialog("TRIAL_ACCOUNT_SPLASH_GAMEPAD",
{
setup = function(dialog)
dialog:setupFunc()
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CENTERED,
},
canQueue = true,
title =
{
text = function()
return self.title
end,
},
mainText =
{
text = function()
return self.description
end,
},
buttons =
{
{
-- Even though this is an ethereal keybind, the name will still be shown as the centered dialogs interact keybind and read during screen narration
name = GetString(SI_TUTORIAL_CONTINUE),
ethereal = true,
narrateEthereal = true,
keybind = "DIALOG_PRIMARY",
clickSound = SOUNDS.DIALOG_ACCEPT,
callback = CloseDialog,
},
{
--Ethereal binds show no text, the name field is used to help identify the keybind when debugging. This text does not have to be localized.
name = "Free Trial Close Dialog 2",
ethereal = true,
keybind = "DIALOG_NEGATIVE",
clickSound = SOUNDS.DIALOG_ACCEPT,
callback = CloseDialog,
},
},
noChoiceCallback = CloseDialog,
finishedCallback = CloseDialog,
removedFromQueueCallback = CloseDialog,
}
)
- ingame/tutorial/uiinfoboxtutorial.lua:41 --
ZO_Dialogs_RegisterCustomDialog("UI_TUTORIAL", self.dialogInfo)
- ingame/tutorial/uiinfoboxtutorial.lua:43 --
ZO_Dialogs_RegisterCustomDialog("UI_TUTORIAL_GAMEPAD",
{
canQueue = true,
setup = function(dialog)
dialog:setupFunc()
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CENTERED,
},
title =
{
text = function()
return self.title
end,
},
mainText =
{
text = function()
return self.description
end,
},
buttons =
{
{
-- Even though this is an ethereal keybind, the name will still be shown as the centered dialogs interact keybind and read during screen narration
name = GetString(SI_TUTORIAL_CONTINUE),
ethereal = true,
narrateEthereal = true,
keybind = "DIALOG_PRIMARY",
clickSound = SOUNDS.DIALOG_ACCEPT,
callback = function(dialog)
dialog.data.owner:RemoveTutorial(dialog.data.tutorialIndex, TUTORIAL_SEEN)
end,
}
},
noChoiceCallback = function(dialog)
if dialog.data then
dialog.data.owner:RemoveTutorial(dialog.data.tutorialIndex, TUTORIAL_SEEN)
end
end,
removedFromQueueCallback = function(data)
if data then
data.owner:RemoveTutorial(data.tutorialIndex, TUTORIAL_NOT_SEEN)
end
end,
}
)
- internalingame/antiquitydigging/antiquitydigging.lua:7 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_STOP_ANTIQUITY_DIGGING",
{
mustChoose = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_ANTIQUITY_DIGGING_CONFIRM_EXIT_DIALOG_TITLE
},
mainText =
{
text = function()
if IsDiggingAntiquityUnearthed() then
return GetString(SI_ANTIQUITY_DIGGING_CONFIRM_EXIT_DIALOG_VICTORY_DESCRIPTION)
else
return GetString(SI_ANTIQUITY_DIGGING_CONFIRM_EXIT_DIALOG_ABORT_DESCRIPTION)
end
end
},
setup = function()
ANTIQUITY_DIGGING:RefreshInputState()
end,
finishedCallback = function()
ANTIQUITY_DIGGING:RefreshInputState()
end,
buttons =
{
{
text = SI_DIALOG_ACCEPT,
callback = function()
if IsDiggingAntiquityUnearthed() then
AntiquityDiggingExitResponse(REJECT)
FinishAntiquityDiggingEarly()
else
AntiquityDiggingExitResponse(ACCEPT)
end
end
},
{
text = SI_DIALOG_DECLINE,
callback = function()
AntiquityDiggingExitResponse(REJECT)
end
},
}
})
- internalingame/coderedemption/gamepad/coderedemption_gamepad.lua:219 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CODE_REDEMPTION_PENDING_DIALOG",
{
setup = PendingCodeRedemptionDialogSetup,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
dialogFragmentGroup = ZO_GAMEPAD_KEYBINDS_FRAGMENT_GROUP,
},
title =
{
text = GetString(SI_CODE_REDEMPTION_PENDING_TITLE),
},
mainText =
{
text = "",
},
loading =
{
text = GetString(SI_CODE_REDEMPTION_PENDING_LOADING_TEXT),
},
canQueue = true,
mustChoose = true,
})
- internalingame/coderedemption/gamepad/coderedemption_gamepad.lua:243 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_CODE_REDEMPTION_COMPLETE_DIALOG",
{
setup = function(dialog)
dialog:setupFunc(dialog.data)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
dialogFragmentGroup = ZO_GAMEPAD_KEYBINDS_FRAGMENT_GROUP,
},
title =
{
text = function(dialog)
local success = dialog.data.success
if success then
return GetString(SI_CODE_REDEMPTION_DIALOG_SUCCESS_TITLE)
else
return GetString(SI_CODE_REDEMPTION_DIALOG_FAILED_TITLE)
end
end,
},
mainText =
{
text = function(dialog)
local data = dialog.data
if data.success then
local rewardNames = REWARDS_MANAGER:GetListOfRewardNamesFromLastCodeRedemption()
if #rewardNames > 0 then
local listOfRewardNames = ZO_WHITE:Colorize(ZO_GenerateCommaSeparatedListWithoutAnd(rewardNames))
return zo_strformat(SI_CODE_REDEMPTION_DIALOG_SUCCESS_WITH_REWARD_NAMES_BODY, listOfRewardNames)
end
end
local redeemCodeResult = data.redeemCodeResult
return GetString("SI_REDEEMCODERESULT", redeemCodeResult)
end,
},
canQueue = true,
mustChoose = true,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
},
finishedCallback = function(dialog)
self:OnRedeemCodeComplete(dialog.data.success)
end
})
- internalingame/gifting/gamepad/confirmsendgift_gamepad.lua:228 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_SEND_GIFT_GAMEPAD", dialogInfo)
- internalingame/gifting/gamepad/confirmsendgift_gamepad.lua:304 --
ZO_Dialogs_RegisterCustomDialog("GIFT_SENDING_GAMEPAD",
{
setup = GiftSendingDialogSetup,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
},
title =
{
text = SI_GIFT_SENDING_TITLE,
},
mainText =
{
text = "",
},
loading =
{
text = function(dialog)
local data = dialog.data
return zo_strformat(SI_GIFT_SENDING_TEXT, data.itemName)
end,
},
canQueue = true,
mustChoose = true,
})
- internalingame/gifting/gamepad/confirmsendgift_gamepad.lua:330 --
ZO_Dialogs_RegisterCustomDialog("GIFT_SENT_SUCCESS_GAMEPAD",
{
setup = function(dialog)
dialog.setupFunc(dialog, dialog.data)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_TRANSACTION_COMPLETE_TITLE,
},
mainText =
{
text = function(dialog)
local data = dialog.data
return zo_strformat(SI_GIFT_SENT_TEXT, data.itemName, ZO_SELECTED_TEXT:Colorize(data.recipientDisplayName))
end
},
canQueue = true,
mustChoose = true,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_GIFT_SENDING_BACK_KEYBIND_LABEL,
callback = function(dialog)
FinishResendingGift(dialog.data.giftId)
end,
}
},
})
- internalingame/gifting/gamepad/confirmsendgift_gamepad.lua:364 --
ZO_Dialogs_RegisterCustomDialog("GIFT_SENDING_FAILED_GAMEPAD",
{
setup = function(dialog)
dialog:setupFunc(dialog.data)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_TRANSACTION_FAILED_TITLE,
},
mainText =
{
text = function(dialog)
return GetString("SI_GIFTBOXACTIONRESULT", dialog.data.sendResult)
end
},
canQueue = true,
mustChoose = true,
buttons =
{
{
text = function(dialog)
if ZO_ConfirmSendGift_Shared_ShouldRestartGiftFlow(dialog.data.sendResult) then
return GetString(SI_GIFT_SENDING_RESTART_KEYBIND_LABEL)
else
return GetString(SI_GIFT_SENDING_BACK_KEYBIND_LABEL)
end
end,
callback = function(dialog)
if ZO_ConfirmSendGift_Shared_ShouldRestartGiftFlow(dialog.data.sendResult) then
local resultData =
{
giftId = dialog.data.giftId,
giftMessage = dialog.data.giftMessage,
recipientDisplayName = dialog.data.recipientDisplayName,
}
ZO_Dialogs_ShowGamepadDialog("CONFIRM_SEND_GIFT_GAMEPAD", resultData)
else
FinishResendingGift(dialog.data.giftId)
end
end,
keybind = "DIALOG_NEGATIVE"
}
},
})
- internalingame/gifting/gamepad/confirmsendgift_gamepad.lua:413 --
ZO_Dialogs_RegisterCustomDialog("GIFT_SEND_PARTIAL_BUNDLE_CONFIRMATION_GAMEPAD",
{
setup = function(dialog)
dialog:setupFunc(dialog.data)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_MARKET_PURCHASE_ERROR_TITLE_FORMATTER
},
mainText =
{
text = SI_MARKET_GIFTING_RESEND_BUNDLE_PARTS_OWNED_TEXT
},
canQueue = true,
mustChoose = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_MARKET_PURCHASE_ERROR_CONTINUE,
callback = function(dialog)
local data = dialog.data
local marketProductId = GetGiftMarketProductId(data.giftId)
local sendingData =
{
giftId = data.giftId,
itemName = ZO_SELECTED_TEXT:Colorize(GetMarketProductDisplayName(marketProductId)),
stackCount = GetMarketProductStackCount(marketProductId),
recipientDisplayName = data.recipientDisplayName,
shouldSendPartiallyOwnedGift = true,
}
ZO_Dialogs_ShowGamepadDialog("GIFT_SENDING_GAMEPAD", sendingData)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
callback = function(dialog)
RespondToSendPartiallyOwnedGift(false)
FinishResendingGift(dialog.data.giftId)
end,
}
},
})
- internalingame/gifting/keyboard/confirmsendgift_keyboard.lua:39 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_SEND_GIFT_KEYBOARD",
{
title =
{
text = SI_CONFIRM_SEND_GIFT_TITLE,
},
customControl = self,
setup = function(dialog, data)
local marketProductId = GetGiftMarketProductId(data.giftId)
local name, description, icon = GetMarketProductInfo(marketProductId)
local giftIconTexture = dialog:GetNamedChild("GiftIcon")
giftIconTexture:SetTexture(icon)
local giftTextContainer = dialog:GetNamedChild("GiftText")
local color = GetItemQualityColor(GetMarketProductDisplayQuality(marketProductId))
local houseId = GetMarketProductHouseId(marketProductId)
if houseId > 0 then
local houseCollectibleId = GetCollectibleIdForHouse(houseId)
local houseDisplayName = GetCollectibleName(houseCollectibleId)
giftTextContainer:GetNamedChild("GiftName"):SetText(zo_strformat(SI_MARKET_PRODUCT_NAME_FORMATTER, color:Colorize(houseDisplayName)))
giftTextContainer:GetNamedChild("GiftDetail"):SetText(zo_strformat(SI_MARKET_PRODUCT_NAME_FORMATTER, color:Colorize(GetMarketProductDisplayName(marketProductId))))
else
local marketProductData = ZO_MarketProductData:New(marketProductId)
local stackCount = marketProductData:GetStackCount()
if stackCount > 1 then
giftTextContainer:GetNamedChild("GiftName"):SetText(zo_strformat(SI_TOOLTIP_ITEM_NAME_WITH_QUANTITY, color:Colorize(GetMarketProductDisplayName(marketProductId)), stackCount))
else
giftTextContainer:GetNamedChild("GiftName"):SetText(zo_strformat(SI_MARKET_PRODUCT_NAME_FORMATTER, color:Colorize(GetMarketProductDisplayName(marketProductId))))
end
giftTextContainer:GetNamedChild("GiftDetail"):SetText("")
end
UpdateSendRestrictions(dialog:GetNamedChild("NameEdit"))
if not data.isRestart then
dialog:GetNamedChild("NoteEdit"):SetText("")
end
end,
canQueue = true,
buttons =
{
-- Cancel Button
{
control = self:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_DIALOG_CANCEL),
callback = function(dialog)
FinishResendingGift(dialog.data.giftId)
end,
},
-- Send Button
{
control = self:GetNamedChild("Send"),
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GIFT_INVENTORY_SEND_KEYBIND),
callback = function(dialog)
local recipientDisplayName = dialog:GetNamedChild("NameEdit"):GetText()
local noteText = dialog:GetNamedChild("NoteEdit"):GetText()
local data = dialog.data
-- We lose this giftId's data after a successful send, so we need to store this marketProductId for later
local marketProductId = GetGiftMarketProductId(data.giftId)
local sendingData =
{
giftId = data.giftId,
marketProductId = marketProductId,
recipientDisplayName = recipientDisplayName,
}
ZO_Dialogs_ShowDialog("GIFT_SENDING_KEYBOARD", sendingData)
ResendGift(data.giftId, noteText, recipientDisplayName)
end,
},
},
noChoiceCallback = function(dialog)
FinishResendingGift(dialog.data.giftId)
end,
finishedCallback = function()
ClearTooltipImmediately(InformationTooltip)
end
})
- internalingame/gifting/keyboard/confirmsendgift_keyboard.lua:227 --
ZO_Dialogs_RegisterCustomDialog("GIFT_SENDING_KEYBOARD",
{
customControl = self,
setup = GiftSendingDialogSetup,
updateFn = OnGiftSendingUpdate,
title =
{
text = SI_GIFT_SENDING_TITLE,
},
mainText =
{
text = "",
align = TEXT_ALIGN_CENTER,
},
canQueue = true,
mustChoose = true,
modal = false,
buttons =
{
{
control = self:GetNamedChild("Confirm"),
text = SI_GIFT_SENDING_BACK_KEYBIND_LABEL,
keybind = "DIALOG_PRIMARY",
callback = function(dialog)
local data = dialog.data
if ZO_ConfirmSendGift_Shared_ShouldRestartGiftFlow(data.result) then
ZO_Dialogs_ShowDialog("CONFIRM_SEND_GIFT_KEYBOARD", {giftId = data.giftId})
return
end
end,
},
},
}
)
- internalingame/globals/marketdialogs.lua:861 --
ZO_Dialogs_RegisterCustomDialog(
"MARKET_PURCHASE_CONFIRMATION",
{
customControl = control,
setup = MarketPurchaseConfirmationDialogSetup,
title =
{
text = SI_MARKET_CONFIRM_PURCHASE_TITLE,
},
canQueue = true,
buttons =
{
{
control = control:GetNamedChild("Confirm"),
text = SI_MARKET_CONFIRM_PURCHASE_KEYBIND_TEXT,
callback = ConfirmMarketPurchaseDialog,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_DECLINE,
callback = OnPurchaseResolved,
},
},
noChoiceCallback = OnPurchaseResolved,
finishedCallback = function(dialog)
ClearTooltipImmediately(InformationTooltip)
end,
}
)
- internalingame/globals/marketdialogs.lua:1000 --
ZO_Dialogs_RegisterCustomDialog(
"MARKET_PURCHASE_HOUSE_TEMPLATE_SELECTION",
{
customControl = control,
setup = MarketPurchaseHouseTemplateSelectDialogSetup,
title =
{
text = SI_MARKET_SELECT_HOUSE_TEMPLATE_TITLE,
},
canQueue = true,
buttons =
{
{
control = control:GetNamedChild("Confirm"),
text = SI_MARKET_SELECT_HOUSE_TEMPLATE_REVIEW_PURCHASE,
callback = function(dialog, data)
local selectedData = dialog.comboBox:GetSelectedItemData().data
local currencyType, marketData = next(selectedData.marketPurchaseOptions)
if marketData then
local marketProductData = ZO_MarketProductData:New(marketData.marketProductId)
if dialog.data.isGift then
ZO_Market_Keyboard:GiftMarketProduct(marketProductData)
else
ZO_Market_Keyboard:PurchaseMarketProduct(marketProductData)
end
end
end,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_EXIT,
},
},
finishedCallback = function(dialog)
ClearTooltipImmediately(InformationTooltip)
end,
}
)
- internalingame/globals/marketdialogs.lua:1177 --
ZO_Dialogs_RegisterCustomDialog(
"MARKET_PURCHASING",
{
customControl = self,
setup = MarketPurchasingDialogSetup,
updateFn = OnMarketPurchasingUpdate,
title =
{
text = SI_MARKET_PURCHASING_TITLE,
},
mainText =
{
text = "",
align = TEXT_ALIGN_CENTER,
},
canQueue = true,
mustChoose = true,
buttons =
{
-- Use Product
{
control = self:GetNamedChild("UseProduct"),
keybind = "DIALOG_RESET",
callback = function(dialog)
-- Order matters:
dialog.data.logPurchasedMarketId = true
-- Ensure that we don't try to return to Housing Editor Browse mode again when the scene hides:
local isPreviewingMarketProductPlacement = dialog.data.isPreviewingMarketProductPlacement
dialog.data.isPreviewingMarketProductPlacement = nil
OnPurchaseResolved(dialog)
ZO_Market_Shared.GoToUseProductLocation(dialog.data.marketProductData)
if isPreviewingMarketProductPlacement and GetHousingEditorMode() ~= HOUSING_EDITOR_MODE_PLACEMENT then
-- Manually return to Housing Editor Browse mode unless we are left in Placement mode;
-- this occurs when the relevant furnishing limit had already been reached or when this
-- purchase did not originate from in-house placement preview.
ZO_ReturnToHousingEditorBrowseMode()
end
end,
},
{
control = self:GetNamedChild("Confirm"),
text = SI_MARKET_CONFIRM_PURCHASE_BACK_KEYBIND_LABEL,
keybind = "DIALOG_PRIMARY",
callback = function(dialog)
local data = dialog.data
if ZO_MarketDialogs_Shared_ShouldRestartGiftFlow(data.result) then
local restartData =
{
isGift = true,
marketProductData = data.marketProductData,
recipientDisplayName = data.recipientDisplayName,
note = data.note,
}
ZO_Dialogs_ShowDialog("MARKET_PURCHASE_CONFIRMATION", restartData)
return
end
data.logPurchasedMarketId = true
OnPurchaseResolved(dialog)
if data.wasGift == false then
local activeMarket = ZO_MARKET_MANAGER:GetActiveMarket()
-- Show tutorials from a purchased item first before showing the consumable tutorial
if data.tutorialTrigger then
TUTORIAL_MANAGER:ShowTutorial(data.tutorialTrigger)
end
if data.result == MARKET_PURCHASE_RESULT_SUCCESS and data.marketProductData:ContainsConsumables() then
TUTORIAL_MANAGER:ShowTutorial(TUTORIAL_TRIGGER_CROWN_CONSUMABLE_PURCHASED)
end
end
end,
},
},
}
)
- internalingame/mail/confirmmail.lua:1 --
ZO_Dialogs_RegisterCustomDialog(
"CONFIRM_MAIL",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_CONFIRM_MAIL_TITLE,
},
mainText =
{
text = SI_CONFIRM_MAIL_TEXT,
},
buttons =
{
[1] =
{
text = SI_DIALOG_YES,
callback = function(dialog)
ConfirmSendMail(ZO_FormatManualNameEntry(dialog.data.to), dialog.data.subject, dialog.data.body)
end,
},
[2] =
{
text = SI_DIALOG_NO,
callback = function(dialog)
CancelSendMail()
end,
}
}
}
)
- internalingame/mail/confirmmail.lua:51 --
ZO_Dialogs_RegisterCustomDialog("DELETE_MAIL_WITH_ATTACHMENTS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = function(dialog) return dialog.data.title end,
},
mainText =
{
text = function(dialog) return dialog.data.body end,
},
editBox =
{
matchingString = GetString(SI_DELETE_MAIL_CONFIRMATION_TEXT)
},
noChoiceCallback = function(dialog)
CancelDeleteMail(dialog.data.mailId)
end,
buttons =
{
[1] =
{
requiresTextInput = true,
text = SI_MAIL_DELETE,
callback = function(dialog)
local confirmDelete = ZO_Dialogs_GetEditBoxText(dialog)
local compareString = GetString(SI_DELETE_MAIL_CONFIRMATION_TEXT)
if confirmDelete and confirmDelete == compareString then
dialog.data.confirmationCallback(dialog.data.mailId)
end
end,
},
[2] =
{
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialog("DELETE_MAIL_WITH_ATTACHMENTS")
CancelDeleteMail(dialog.data.mailId)
end,
}
}
}
)
- internalingame/mail/confirmmail.lua:105 --
ZO_Dialogs_RegisterCustomDialog("DELETE_MAIL_WITH_ATTACHMENTS_GAMEPAD",
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
allowRightStickPassThrough = true,
},
noChoiceCallback = function(dialog)
CancelDeleteMail(dialog.data.mailId)
end,
title =
{
text = function(dialog) return dialog.data.title end,
},
mainText =
{
text = function(dialog) return dialog.data.body end,
},
buttons =
{
{
onShowCooldown = 2000,
keybind = "DIALOG_PRIMARY",
text = SI_MAIL_DELETE,
callback = function(dialog)
dialog.data.confirmationCallback(dialog.data.mailId)
ZO_Dialogs_ReleaseDialogOnButtonPress("DELETE_MAIL_WITH_ATTACHMENTS_GAMEPAD")
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialog("DELETE_MAIL_WITH_ATTACHMENTS_GAMEPAD")
CancelDeleteMail(dialog.data.mailId)
end,
},
}
}
)
- internalingame/market/gamepad/marketdialogs_gamepad.lua:577 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_CONFIRMATION], confirmationDialogInfo)
- internalingame/market/gamepad/marketdialogs_gamepad.lua:580 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_CONFIRMATION_ESO_PLUS],
{
setup = function(...) self:MarketPurchaseConfirmationFreeTrialDialogSetup(...) end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_MARKET_PURCHASE_FREE_TRIAL_TITLE,
},
mainText =
{
text = function(dialog)
local endTimeString = self.marketProductData:GetEndTimeString()
local currencyIcon = ZO_Currency_GetPlatformFormattedCurrencyIcon(CURT_CROWNS, CURRENCY_ICON_SIZE)
return zo_strformat(SI_MARKET_PURCHASE_FREE_TRIAL_TEXT, endTimeString, currencyIcon)
end,
},
canQueue = true,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_MARKET_CONFIRM_PURCHASE_BACK_KEYBIND_LABEL,
callback = function(dialog)
OnMarketEndPurchase()
local NOT_NO_CHOICE_CALLBACK = false
self:EndPurchase(NOT_NO_CHOICE_CALLBACK)
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_MARKET_CONFIRM_PURCHASE_KEYBIND_TEXT,
callback = function(dialog)
OnMarketEndPurchase(self.marketProductData:GetId())
self.doMoveToNextFlowPosition = true
end,
},
},
mustChoose = true,
finishedCallback = function(dialog)
self:MoveToNextFlowPosition()
end,
})
- internalingame/market/gamepad/marketdialogs_gamepad.lua:686 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_PURCHASING],
{
setup = MarketPurchasingDialogSetup,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.COOLDOWN,
},
title =
{
text = SI_MARKET_PURCHASING_TITLE,
},
mainText =
{
text = "",
},
loading =
{
text = function()
local color = GetItemQualityColor(GetMarketProductDisplayQuality(self.marketProductData.marketProductId))
local quantity = self.quantity or 1
local stackCount = self.marketProductData:GetStackCount()
local totalStackCount = stackCount * quantity
if totalStackCount > 1 then
return zo_strformat(SI_MARKET_PURCHASING_TEXT_WITH_QUANTITY, color:Colorize(self.itemName), totalStackCount)
else
local itemName = self.itemName
local houseId = GetMarketProductHouseId(self.marketProductData.marketProductId)
if houseId > 0 then
local houseCollectibleId = GetCollectibleIdForHouse(houseId)
local houseDisplayName = GetCollectibleName(houseCollectibleId)
itemName = zo_strformat(SI_MARKET_PRODUCT_HOUSE_NAME_GRAMMARLESS_FORMATTER, houseDisplayName, self.itemName)
end
return zo_strformat(SI_MARKET_PURCHASING_TEXT, color:Colorize(itemName))
end
end,
},
canQueue = true,
mustChoose = true,
})
- internalingame/market/gamepad/marketdialogs_gamepad.lua:726 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_SUCCESS],
{
setup = function(dialog)
if self.onPurchaseSuccessCallback then
self.onPurchaseSuccessCallback()
self.onPurchaseSuccessCallback = nil
end
if self.showRemainingBalance then
local currencyType = self.marketProductData:GetMarketProductPricingByPresentation()
dialog.data =
{
data1 = GetAvailableCurrencyHeaderData(currencyType),
}
end
dialog.setupFunc(dialog, dialog.data)
end,
updateFn = function(dialog)
KEYBIND_STRIP:UpdateCurrentKeybindButtonGroups(dialog.keybindStateIndex)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = function()
if self.useProductInfo then
if self.useProductInfo.transactionCompleteTitleText then
return self.useProductInfo.transactionCompleteTitleText
end
end
return GetString(SI_TRANSACTION_COMPLETE_TITLE)
end,
},
mainText =
{
text = function(dialog)
local marketProductData = self.marketProductData
local marketProductId = marketProductData:GetId()
local quantity = self.quantity or 1
local stackCount = marketProductData:GetStackCount()
local totalStackCount = stackCount * quantity
local itemName = self.itemName
local color = GetItemQualityColor(GetMarketProductDisplayQuality(marketProductId))
local houseId = GetMarketProductHouseId(marketProductId)
if houseId > 0 then
local houseCollectibleId = GetCollectibleIdForHouse(houseId)
local houseDisplayName = GetCollectibleName(houseCollectibleId)
itemName = zo_strformat(SI_MARKET_PRODUCT_HOUSE_NAME_GRAMMARLESS_FORMATTER, houseDisplayName, self.itemName)
end
if self.isGift then
if totalStackCount > 1 then
return zo_strformat(SI_MARKET_GIFTING_SUCCESS_TEXT_WITH_QUANTITY, color:Colorize(itemName), totalStackCount, ZO_SELECTED_TEXT:Colorize(self.recipientDisplayName))
else
return zo_strformat(SI_MARKET_GIFTING_SUCCESS_TEXT, color:Colorize(itemName), ZO_SELECTED_TEXT:Colorize(self.recipientDisplayName))
end
else
local mainText
if self.useProductInfo then
mainText = zo_strformat(self.useProductInfo.transactionCompleteText, color:Colorize(itemName), totalStackCount)
else
if totalStackCount > 1 then
mainText = zo_strformat(SI_MARKET_PURCHASE_SUCCESS_TEXT_WITH_QUANTITY, color:Colorize(itemName), totalStackCount)
else
if not self.isGift and self.marketProductData:GetNumAttachedCollectibles() > 0 then
mainText = zo_strformat(SI_MARKET_PURCHASE_SUCCESS_TEXT_WITH_COLLECTIBLE, color:Colorize(itemName))
else
mainText = zo_strformat(SI_MARKET_PURCHASE_SUCCESS_TEXT, color:Colorize(itemName))
end
end
end
-- append ESO Plus savings, if any
local esoPlusSavingsString = ZO_MarketDialogs_Shared_GetEsoPlusSavingsString(marketProductData, quantity)
if esoPlusSavingsString then
mainText = string.format("%s\n\n%s", mainText, esoPlusSavingsString)
end
return mainText
end
end
},
canQueue = true,
mustChoose = true,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = function()
if self.purchaseFromIngame then
return GetString(SI_MARKET_CONFIRM_PURCHASE_BACK_KEYBIND_LABEL)
else
return GetString(SI_MARKET_BACK_TO_STORE_KEYBIND_LABEL)
end
end,
callback = EndPurchase,
},
{
keybind = "DIALOG_TERTIARY",
text = function(dialog)
if self.useProductInfo then
return self.useProductInfo.buttonText
end
end,
visible = function(dialog)
if self.useProductInfo then
return not self.useProductInfo.visible or self.useProductInfo.visible()
end
return false
end,
enabled = function(dialog)
if self.useProductInfo then
return not self.useProductInfo.enabled or self.useProductInfo.enabled()
end
end,
callback = function()
-- Order matters:
-- Cache off the productData, because reset state will clear it:
local marketProductData = self.marketProductData
-- Since we are trying to logout/go to another scene we don't want to trigger any of the scene changes
-- or try to show tutorials, however we want to clean up after ourselves in case we don't actually logout
self:ResetState()
-- Ensure that we don't try to return to Housing Editor Browse mode again when the scene hides:
local isPreviewingMarketProductPlacement = self.isPreviewingMarketProductPlacement
self.isPreviewingMarketProductPlacement = nil
ZO_Market_Shared.GoToUseProductLocation(marketProductData)
if isPreviewingMarketProductPlacement and GetHousingEditorMode() ~= HOUSING_EDITOR_MODE_PLACEMENT then
-- Manually return to Housing Editor Browse mode unless we are left in Placement mode;
-- this occurs when the relevant furnishing limit had already been reached or when this
-- purchase did not originate from in-house placement preview.
ZO_ReturnToHousingEditorBrowseMode()
end
end,
},
},
})
- internalingame/market/gamepad/marketdialogs_gamepad.lua:868 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_FAILED],
{
setup = function(dialog)
local data1, data2, data3 = self:GetMarketProductPricingHeaderData()
local displayData =
{
data1 = data1,
data2 = data2,
data3 = data3,
purchaseResult = dialog.data.purchaseResult,
}
dialog.data = displayData
dialog.setupFunc(dialog, displayData)
end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = GetString(SI_TRANSACTION_FAILED_TITLE),
},
mainText =
{
text = function(dialog)
return GetString("SI_MARKETPURCHASABLERESULT", dialog.data.purchaseResult)
end
},
canQueue = true,
mustChoose = true,
buttons =
{
{
text = function(dialog)
if ZO_MarketDialogs_Shared_ShouldRestartGiftFlow(dialog.data.purchaseResult) then
return GetString(SI_MARKET_CONFIRM_PURCHASE_RESTART_KEYBIND_LABEL)
else
return GetString(SI_MARKET_CONFIRM_PURCHASE_BACK_KEYBIND_LABEL)
end
end,
callback = function(dialog)
if ZO_MarketDialogs_Shared_ShouldRestartGiftFlow(dialog.data.purchaseResult) then
self:SetFlowPosition(FLOW_CONFIRMATION)
else
self:EndPurchase()
end
end,
keybind = "DIALOG_NEGATIVE"
}
},
})
- internalingame/market/gamepad/marketdialogs_gamepad.lua:921 --
ZO_Dialogs_RegisterCustomDialog(DIALOG_FLOW[FLOW_CONFIRMATION_PARTIAL_BUNDLE],
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_MARKET_PURCHASE_ERROR_TITLE_FORMATTER
},
mainText =
{
text = SI_MARKET_GIFTING_BUNDLE_PARTS_OWNED_TEXT
},
canQueue = true,
mustChoose = true,
buttons =
{
{
text = SI_MARKET_PURCHASE_ERROR_CONTINUE,
callback = function(dialog)
self.doMoveToNextFlowPosition = true
self:MoveToNextFlowPosition({ shouldSendPartiallyOwnedGift = true })
end,
keybind = "DIALOG_PRIMARY",
},
{
text = SI_DIALOG_EXIT,
callback = function(dialog)
RespondToSendPartiallyOwnedGift(false)
self:EndPurchase()
end,
keybind = "DIALOG_NEGATIVE",
},
},
})
- internalingame/market/gamepad/marketdialogs_gamepad.lua:958 --
ZO_Dialogs_RegisterCustomDialog(SELECT_HOUSE_TEMPLATE_DIALOG,
{
setup = function(...) self:MarketSelectHouseTemplateDialogSetup(...) end,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_MARKET_SELECT_HOUSE_TEMPLATE_TITLE,
},
mainText =
{
text = function(dialog)
local houseId = GetMarketProductHouseId(self.marketProductData.marketProductId)
if houseId > 0 then
local houseCollectibleId = GetCollectibleIdForHouse(houseId)
local houseDisplayName = GetCollectibleName(houseCollectibleId)
return zo_strformat(SI_MARKET_PRODUCT_NAME_FORMATTER, ZO_SELECTED_TEXT:Colorize(houseDisplayName))
else
internalassert(false, string.format("MarketProduct (%s) is not a house and should not be passed into house template selection dialog.", tostring(self.marketProductData.marketProductId) or "nil"))
end
end
},
canQueue = true,
parametricList = {}, --we'll generate the entries on setup
blockDialogReleaseOnPress = true, -- We need to manually control when we release so we can use the select keybind to activate entries
mustChoose = true,
onHidingCallback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.dropdownEntry then
local targetControl = dialog.entryList:GetTargetControl()
local dropdown = targetControl.dropdown
dropdown:Deactivate()
end
end,
finishedCallback = function()
if g_dialogDiscountPercentControl then
g_dialogDiscountPercentControl:SetHidden(true)
end
end,
buttons =
{
-- Select Button
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_GAMEPAD_SELECT_OPTION),
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData.dropdownEntry then
local targetControl = dialog.entryList:GetTargetControl()
local dropdown = targetControl.dropdown
dropdown:Activate()
end
end,
},
--Back
{
keybind = "DIALOG_NEGATIVE",
text = SI_MARKET_CONFIRM_PURCHASE_BACK_KEYBIND_LABEL,
callback = function(dialog)
-- release the dialog first to avoid issue where the parametric list can refresh
-- but EndPurchase will wipe out important state, like self.marketProductData
ZO_Dialogs_ReleaseDialogOnButtonPress(SELECT_HOUSE_TEMPLATE_DIALOG)
-- if we have pushed the purchase scene, then we need to hide it
SCENE_MANAGER:Hide(ZO_GAMEPAD_MARKET_PURCHASE_SCENE_NAME)
self:ResetState()
end,
},
--Confirm
{
keybind = "DIALOG_SECONDARY",
text = SI_MARKET_SELECT_HOUSE_TEMPLATE_REVIEW_PURCHASE,
clickSound = SOUNDS.DIALOG_ACCEPT,
callback = function(dialog)
-- release the dialog first to avoid issue where the parametric list can refresh
-- but EndPurchase will wipe out important state, like self.marketProductData
ZO_Dialogs_ReleaseDialogOnButtonPress(SELECT_HOUSE_TEMPLATE_DIALOG)
if self.purchaseParams then
local selectedTemplateData = self:GetSelectedHouseTemplateMarketProductData()
local marketProductData = ZO_MarketProductData:New(selectedTemplateData.marketProductId)
if self.isGift then
self:BeginGiftPurchase(marketProductData, self.purchaseParams.isPurchaseFromIngame, self.purchaseParams.onPurchaseSuccessCallback, self.purchaseParams.onPurchaseEndCallback)
else
self:BeginPurchase(marketProductData, self.purchaseParams.isPurchaseFromIngame, self.purchaseParams.onPurchaseSuccessCallback, self.purchaseParams.onPurchaseEndCallback)
end
end
end,
},
},
})
- internalingame/scrying/scrying.lua:1666 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_EXIT_SCRYING",
{
mustChoose = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_SCRYING_CONFIRM_EXIT_DIALOG_TITLE
},
mainText =
{
text = SI_SCRYING_CONFIRM_EXIT_DIALOG_DESCRIPTION
},
setup = function()
SCRYING:RefreshInputState()
end,
finishedCallback = function()
SCRYING:RefreshInputState()
end,
buttons =
{
{
text = SI_DIALOG_ACCEPT,
callback = function()
RequestRespondToScryingExit(ACCEPT)
end
},
{
text = SI_DIALOG_DECLINE,
callback = function()
RequestRespondToScryingExit(REJECT)
end
},
}
})
- internalingame/tribute/tribute.lua:426 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_TRIBUTE_OPTIONS",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
dialogFragmentGroup = ZO_GAMEPAD_KEYBINDS_FRAGMENT_GROUP,
},
setup = function(dialog, data)
local parametricList = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricList)
table.insert(parametricList, GAMEPAD_TRIBUTE_AUTO_PLAY_ENTRY)
if IsConsoleUI() and (data.opponentPlayerType == TRIBUTE_PLAYER_TYPE_REMOTE_PLAYER or data.opponentPlayerType == TRIBUTE_PLAYER_TYPE_PLAYER) then
table.insert(parametricList, GAMEPAD_TRIBUTE_SHOW_GAMER_CARD_ENTRY)
end
table.insert(parametricList, GAMEPAD_TRIBUTE_CONCEDE_ENTRY)
ZO_GenericGamepadDialog_RefreshText(dialog, GetString(SI_TRIBUTE_SETTINGS_DIALOG_TITLE))
dialog.autoPlay = data.autoPlay
dialog:setupFunc()
end,
updateFn = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.updateFn then
targetData.updateFn(dialog)
end
end,
parametricList = {}, -- Added Dynamically
blockDialogReleaseOnPress = true,
finishedCallback = function(dialog)
TRIBUTE:OnSettingsChanged(dialog.autoPlay)
TRIBUTE:RefreshInputState()
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CLOSE,
callback = function()
ZO_Dialogs_ReleaseDialogOnButtonPress("GAMEPAD_TRIBUTE_OPTIONS")
end
},
},
})
- internalingame/tribute/tribute.lua:479 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_CONCEDE_TRIBUTE",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
dialogFragmentGroup = ZO_GAMEPAD_KEYBINDS_FRAGMENT_GROUP,
},
title =
{
text = SI_TRIBUTE_CONFIRM_CONCEDE_DIALOG_TITLE
},
mainText =
{
text = SI_TRIBUTE_CONFIRM_CONCEDE_DIALOG_DESCRIPTION
},
finishedCallback = function()
TRIBUTE:RefreshInputState()
end,
canQueue = true,
buttons =
{
{
text = SI_DIALOG_ACCEPT,
callback = function()
TributeConcede()
end
},
{
text = SI_DIALOG_DECLINE,
-- Nothing to do but close the dialog, since we've already rejected the exit request
},
}
})
- internalingame/tribute/keyboard/tributedialogs_keyboard.lua:32 --
ZO_Dialogs_RegisterCustomDialog("KEYBOARD_TRIBUTE_OPTIONS",
{
customControl = self,
title =
{
text = SI_TRIBUTE_SETTINGS_DIALOG_TITLE,
},
mainText =
{
text = "",
},
setup = function(dialog, data)
self.object:SetAutoPlay(data.autoPlay)
local warningLabel = self.object.containerControl:GetNamedChild("ConcedeWarning")
if WillConcedeCausePenalty() then
local forfeitPenaltyMs = GetTributeForfeitPenaltyDurationMs()
local formattedTimeText = ZO_FormatTimeMilliseconds(forfeitPenaltyMs, TIME_FORMAT_STYLE_COLONS, TIME_FORMAT_PRECISION_TWELVE_HOUR)
warningLabel:SetText(zo_strformat(SI_TRIBUTE_SETTINGS_DIALOG_CONCEDE_WARNING, formattedTimeText))
warningLabel:SetHidden(false)
else
warningLabel:SetText("")
warningLabel:SetHidden(true)
end
end,
finishedCallback = function(dialog)
--Wait until the dialog closes before saving the changes to the settings
dialog.object:SavePendingChanges()
TRIBUTE:RefreshInputState()
end,
buttons =
{
{
noReleaseOnClick = true,
control = self:GetNamedChild("Close"),
text = SI_DIALOG_CLOSE,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("KEYBOARD_TRIBUTE_OPTIONS")
end,
},
}
})
- internalingame/url/confirmurl.lua:1 --
ZO_Dialogs_RegisterCustomDialog(
"CONFIRM_UNSAFE_URL",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_CONFIRM_UNSAFE_URL_TITLE,
},
mainText =
{
text = SI_CONFIRM_UNSAFE_URL_TEXT,
},
buttons =
{
[1] =
{
text = SI_DIALOG_YES,
callback = function(dialog)
ConfirmOpenURL(dialog.data.URL)
end,
},
[2] =
{
text = SI_DIALOG_NO,
}
}
}
)
- pregame/accessibility/accessibilitymodedialog.lua:2 --
ZO_Dialogs_RegisterCustomDialog("ACCESSIBILITY_MODE_DIALOG",
{
customControl = dialogControl,
mustChoose = true,
title =
{
text = SI_ACCESSIBILITY_OPTIONS_ACCESSIBILITY_MODE,
},
setup = function() ACCESSIBILITY_MODE_PROMPT_FRAGMENT:Setup() end,
buttons =
{
{
control = dialogControl:GetNamedChild("ContentContainerContinue"),
text = function()
local disabledText = GetString(SI_ACCESSIBILITY_MODE_PROMPT_CONTINUE_DISABLED)
disabledText = ZO_SELECTED_TEXT:Colorize(disabledText)
return zo_strformat(SI_ACCESSIBILITY_MODE_PROMPT_CONTINUE, disabledText)
end,
keybind = "DIALOG_PRIMARY",
callback = function(dialog)
-- do nothing .... yet
end,
},
},
finishedCallback = function(dialog)
ZO_AccessibilityModePrompt_OnContinueClicked()
end,
})
- pregame/accountlogin/pegi.lua:98 --
ZO_Dialogs_RegisterCustomDialog("PEGI_COUNTRY_SELECT",
{
customControl = self,
mustChoose = true,
canQueue = true,
title =
{
text = SI_PEGI_COUNTRY_SELECT_TITLE,
},
buttons =
{
[1] =
{
control = self:GetNamedChild("Confirm"),
text = SI_DIALOG_CONFIRM,
callback = function(self)
PEGI_AGREEMENT:OnCountrySelectionConfirmed()
end,
},
}
})
- pregame/accountlogin/pegi.lua:122 --
ZO_Dialogs_RegisterCustomDialog("PEGI_NOTIFICATION",
{
customControl = self,
mustChoose = true,
canQueue = true,
title =
{
text = SI_PEGI_AGREEMENT_TITLE,
},
buttons =
{
[1] =
{
control = self:GetNamedChild("Accept"),
text = SI_DIALOG_ACCEPT,
callback = function(self)
AgreeToPEGI()
end,
},
[2] =
{
control = self:GetNamedChild("Decline"),
text = SI_DIALOG_DECLINE,
callback = function(self)
ZO_Dialogs_ShowDialog("PEGI_NOTIFICATION_DECLINE")
end,
},
}
})
- pregame/accountlogin/pegi.lua:157 --
ZO_Dialogs_RegisterCustomDialog("PEGI_NOTIFICATION_DECLINE",
{
customControl = self,
mustChoose = true,
canQueue = true,
title =
{
text = SI_PEGI_AGREEMENT_DECLINE_TITLE,
},
buttons =
{
[1] =
{
control = self:GetNamedChild("Back"),
text = SI_BACK_UP_ONE_MENU,
callback = function(self)
ZO_Dialogs_ShowDialog("PEGI_NOTIFICATION")
end,
},
}
})
- pregame/accountlogin/gamepad/createlinkloadingscreen_gamepad.lua:328 --
ZO_Dialogs_RegisterCustomDialog(dialogName,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
mustChoose = true,
setup = function(dialog)
oneTimePasswordText = ""
ZO_GenericGamepadDialog_ShowTooltip(dialog)
dialog:setupFunc()
end,
title =
{
text = SI_OTP_DIALOG_TITLE,
},
parametricList =
{
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
entryData = otpEntryData,
},
{
template = "ZO_GamepadTextFieldSubmitItem",
entryData = submitEntryData,
},
},
updateFn = function(dialog)
local dialogData = parametricDialog.data
local timeLeftMs = dialogData.otpExpirationMs - GetFrameTimeMilliseconds()
if timeLeftMs >= 0 then
local timeLeftString = ZO_FormatTimeMilliseconds(timeLeftMs, TIME_FORMAT_STYLE_DESCRIPTIVE_SHORT_SHOW_ZERO_SECS)
local instructionText
if dialogData.otpReason ~= LOGIN_STATUS_OTP_FAILED then
instructionText = zo_strformat(SI_PROVIDE_OTP_INITIAL_DIALOG_TEXT_GAMEPAD, timeLeftString)
else
instructionText = zo_strformat(SI_PROVIDE_OTP_SUBSEQUENT_DIALOG_TEXT, timeLeftString)
end
GAMEPAD_TOOLTIPS:LayoutTextBlockTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, instructionText)
else
ZO_Dialogs_ReleaseDialog(dialog)
PregameStateManager_ReenterLoginState()
end
end,
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.isEditControl and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.isSubmit then
if oneTimePasswordText ~= "" then
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
SendOneTimePassword(oneTimePasswordText)
end
end
end,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData.isEditControl then
return true
elseif targetData.isSubmit then
return oneTimePasswordText ~= ""
end
return false
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress(dialogName)
PregameStateManager_ReenterLoginState()
end,
},
},
})
- pregame/accountlogin/gamepad/gamestartup_gamepad.lua:819 --
ZO_Dialogs_RegisterCustomDialog("ADDITIONAL_CONTENT_SELECTION_DIALOG",
{
canQueue = true,
onlyQueueOnce = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_ADDITIONAL_CONTENT_SELECTION_HEADER,
},
mainText =
{
text = SI_ADDITIONAL_CONTENT_SELECTION_PROMPT,
},
setup = setupFunction,
parametricList = self:BuildVODialogEntryList(),
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
enabled = function(dialog)
local enabled = true
local targetData = dialog.entryList:GetTargetData()
if targetData then
if type(targetData.enabled) == "function" then
enabled = targetData.enabled(dialog)
else
enabled = targetData.enabled
end
end
return enabled
end,
},
{
keybind = "DIALOG_SECONDARY",
text = function(dialog)
if dialog.voLanguageDropdown then
if dialog.voLanguageDropdown:GetSelectedItem() == ENGLISH_VO_LANGUAGE_TEXT then
return GetString(SI_ADDITIONAL_CONTENT_CONTINUE)
else
return GetString(SI_ADDITIONAL_CONTENT_DOWNLOAD)
end
end
end,
callback = function(dialog)
if dialog.voLanguageDropdown then
if dialog.voLanguageDropdown:GetSelectedItem() == ENGLISH_VO_LANGUAGE_TEXT then
SetCVar("SelectedEnglishVOLanguage", "1")
if not dialog.data or not dialog.data.isFromMenu then
ZO_Dialogs_ShowPlatformDialog("TEXT_LANGUAGE_SELECTION_DIALOG")
end
else
SetCVar("SelectedEnglishVOLanguage", "0")
g_userOpenedStore = dialog and dialog.data and dialog.data.isFromMenu
if IsConsoleUI() then
-- Do check for PlayGo before opening the store
if not OpenStreamingInstallLanguageChunkPlatformDialog() then
-- Open store to offer the "purchase" of the additional content entitlement
ShowPlatformESOVOAdditionalContentUI()
end
else
-- Create UI Dialog to fake console flow that ask about PlayGo on PC
ZO_Dialogs_ShowPlatformDialog("PLAYGO_ACCEPT_CONFIRMATION")
end
end
SaveSettings()
end
ZO_Dialogs_ReleaseDialogOnButtonPress("ADDITIONAL_CONTENT_SELECTION_DIALOG")
self:ForceListRebuild()
end,
},
{
text = SI_DIALOG_CANCEL,
keybind = "DIALOG_NEGATIVE",
callback = function(dialog)
-- If the user opened the store and closed it again without getting the entitlement then
-- SelectedEnglishVOLanguage needs to be set back to it's original state
SetCVar("SelectedEnglishVOLanguage", "1")
SaveSettings()
self:ForceListRebuild()
ZO_Dialogs_ReleaseDialogOnButtonPress("ADDITIONAL_CONTENT_SELECTION_DIALOG")
end,
visible = function(dialog)
-- Cancel button is only available if user selected English VO rather than downloading the approriate entitlement
return dialog.data and dialog.data.isFromMenu
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- pregame/accountlogin/gamepad/gamestartup_gamepad.lua:921 --
ZO_Dialogs_RegisterCustomDialog("TEXT_LANGUAGE_SELECTION_DIALOG",
{
canQueue = true,
onlyQueueOnce = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
title =
{
text = SI_ADDITIONAL_CONTENT_TEXT_LANGUAGE_HEADER,
},
mainText =
{
text = SI_ADDITIONAL_CONTENT_TEXT_LANGUAGE_PROMPT,
},
setup = setupFunction,
parametricList = self:BuildTextLanguageDialogEntryList(),
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
enabled = function(dialog)
local enabled = true
local targetData = dialog.entryList:GetTargetData()
if targetData then
if type(targetData.enabled) == "function" then
enabled = targetData.enabled(dialog)
else
enabled = targetData.enabled
end
end
return enabled
end,
},
{
keybind = "DIALOG_SECONDARY",
text = GetString(SI_ADDITIONAL_CONTENT_CONTINUE),
callback = function(dialog)
if dialog.textLanguageDropdown then
if dialog.textLanguageDropdown:GetSelectedItem() == ENGLISH_VO_LANGUAGE_TEXT then
SetCVar("Language.2", ZoOfficialLanguageDescriptorForZoOfficialLanguage(OFFICIAL_LANGUAGE_ENGLISH))
else
SetCVar("Language.2", ZoOfficialLanguageDescriptorForZoOfficialLanguage(GetDefaultPlatformOfficialLanguage()))
self:ForceListRebuild()
end
end
ZO_Dialogs_ReleaseDialogOnButtonPress("TEXT_LANGUAGE_SELECTION_DIALOG")
end,
},
},
onHidingCallback = OnReleaseDialog,
noChoiceCallback = OnReleaseDialog,
})
- pregame/accountlogin/gamepad/linkaccountscreen_gamepad.lua:119 --
ZO_Dialogs_RegisterCustomDialog("GAMEPAD_LINK_ACCOUNT_ERROR_DIALOG_2", -- TODO Account Linking remove the _2
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_LINKACCOUNT_ERROR_HEADER,
},
mainText =
{
text = function(dialog)
return dialog.data.errorString
end,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
}
})
- pregame/accountlogin/gamepad/pegi_gamepad.lua:4 --
ZO_Dialogs_RegisterCustomDialog("PEGI_COUNTRY_SELECT_GAMEPAD",
{
mustChoose = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
title =
{
text = SI_PEGI_COUNTRY_SELECT_TITLE,
},
setup = function(dialog)
local parametricListEntries = dialog.info.parametricList
ZO_ClearNumericallyIndexedTable(parametricListEntries)
dialog.dropdowns = {}
local countrySelectDropdown =
{
template = "ZO_GamepadDropdownItem",
entryData = self:GetOrCreateCountrySelectDropdownEntryData(),
}
table.insert(parametricListEntries, countrySelectDropdown)
local submitButton =
{
template = "ZO_GamepadTextFieldSubmitItem",
entryData = self:AddSubmitEntry(),
}
table.insert(parametricListEntries, submitButton)
SCENE_MANAGER:AddFragment(KEYBIND_STRIP_GAMEPAD_BACKDROP_FRAGMENT)
SCENE_MANAGER:AddFragment(KEYBIND_STRIP_GAMEPAD_FRAGMENT)
dialog:setupFunc()
end,
parametricList = {}, -- Generated dynamically
blockDialogReleaseOnPress = true, -- We need to manually control when we release so we can use the select keybind to activate entries
parametricListOnSelectionChangedCallback = function(dialog, list, newSelectedData, oldSelectedData)
if not newSelectedData.isSubmit then
ZO_GenericGamepadDialog_HideTooltip(dialog)
end
end,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData and targetData.callback then
targetData.callback(dialog)
end
end,
},
{
keyind = "DIALOG_NEGATIVE",
text = SI_PEGI_COUNTRY_SELECT_BACK,
callback = function(dialog)
ZO_Disconnect()
end,
}
}
})
- pregame/accountlogin/gamepad/pegi_gamepad.lua:167 --
ZO_Dialogs_RegisterCustomDialog("PEGI_AGREEMENT_GAMEPAD",
{
customControl = control,
mustChoose = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
title =
{
text = SI_PEGI_AGREEMENT_TITLE,
},
mainText =
{
text = SI_PEGI_AGREEMENT_TEXT,
},
buttons =
{
{
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
AgreeToPEGI()
ZO_Dialogs_ReleaseDialogOnButtonPress("PEGI_AGREEMENT_GAMEPAD")
if PregameStateManager_GetCurrentState() == "CharacterSelect" then
Pregame_ShowScene("gamepadCharacterSelect")
elseif PregameStateManager_GetCurrentState() == "CharacterCreate" then
Pregame_ShowScene("gamepadCharacterCreate")
end
end,
},
{
text = SI_DIALOG_DECLINE,
callback = function(dialog)
ZO_Dialogs_ShowGamepadDialog("PEGI_AGREEMENT_DECLINED_GAMEPAD")
ZO_Dialogs_ReleaseDialogOnButtonPress("PEGI_AGREEMENT_GAMEPAD")
end,
},
},
})
- pregame/accountlogin/gamepad/pegi_gamepad.lua:211 --
ZO_Dialogs_RegisterCustomDialog("PEGI_AGREEMENT_DECLINED_GAMEPAD",
{
customControl = control,
mustChoose = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.CUSTOM,
},
title =
{
text = SI_PEGI_AGREEMENT_DECLINE_TITLE,
},
mainText =
{
text = SI_PEGI_AGREEMENT_DECLINE_TEXT_GAMEPAD,
},
baseNarrationTooltip = GAMEPAD_LEFT_DIALOG_TOOLTIP,
OnShownCallback = function(dialog)
local colorizedLinkText = ZO_URL_LINK_COLOR:Colorize(GetString("SI_APPROVEDURLTYPE", APPROVED_URL_ESO_HELP))
GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_DIALOG_TOOLTIP, GetString(SI_PEGI_AGREEMENT_CUSTOMER_SERVICE), colorizedLinkText)
ZO_GenericGamepadDialog_ShowTooltip(dialog)
end,
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_BACK_UP_ONE_MENU,
callback = function(dialog)
ZO_Dialogs_ShowGamepadDialog("PEGI_AGREEMENT_GAMEPAD")
ZO_GenericGamepadDialog_HideTooltip(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("PEGI_AGREEMENT_DECLINED_GAMEPAD")
end,
},
{
keybind = "DIALOG_SECONDARY",
text = SI_PEGI_AGREEMENT_OPEN_URL,
callback = function(dialog)
OpenURLByType(APPROVED_URL_ESO_HELP)
ZO_Dialogs_ShowGamepadDialog("PEGI_COUNTRY_SELECT_GAMEPAD")
ZO_GenericGamepadDialog_HideTooltip(dialog)
ZO_Dialogs_ReleaseDialogOnButtonPress("PEGI_AGREEMENT_DECLINED_GAMEPAD")
end,
},
},
})
- pregame/accountlogin/keyboard/createlinkaccountdialogs_keyboard.lua:38 --
ZO_Dialogs_RegisterCustomDialog("LINK_ACCOUNT_KEYBOARD",
{
customControl = control,
setup = LinkAccountsDialogSetup,
canQueue = true,
title =
{
text = SI_KEYBOARD_LINKACCOUNT_DIALOG_HEADER,
},
buttons =
{
{
control = control:GetNamedChild("Link"),
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
local data = dialog.data
LOGIN_MANAGER_KEYBOARD:AttemptAccountLink(data.esoAccount, data.password)
end,
},
{
control = control:GetNamedChild("Cancel"),
text = SI_DIALOG_CANCEL,
},
}
})
- pregame/accountlogin/keyboard/eula.lua:127 --
ZO_Dialogs_RegisterCustomDialog("SHOW_EULA", self.dialogInfo)
- pregame/accountlogin/keyboard/serverselect.lua:39 --
ZO_Dialogs_RegisterCustomDialog("SERVER_SELECT_DIALOG",
{
customControl = dialogControl,
mustChoose = true,
setup = SetupDialog,
canQueue = true,
title =
{
text = SI_SERVER_SELECT_TITLE,
},
mainText =
{
text = SI_SERVER_SELECT_CHARACTER_WARNING,
},
buttons =
{
[1] =
{
control = GetControl(dialogControl, "Button1"),
text = SI_DIALOG_ACCEPT,
callback = function(dialog)
local buttonData = ZO_Dialogs_GetSelectedRadioButtonData(dialog)
if GetCVar("LastPlatform") ~= buttonData.server then
SetCVar("LastPlatform", buttonData.server)
SetSelectedPlatform(buttonData.index)
RequestAnnouncements()
-- If we're using linked login, it's possible to be on the Create/Link fragment,
-- which means we have a session with a different login endpoint and the next Create/Link will fail.
-- Make sure we're at the login fragment so we have to login again to get a new session.
LOGIN_MANAGER_KEYBOARD:SwitchToLoginFragment()
end
if dialog.data.onSelectedCallback then
dialog.data.onSelectedCallback()
end
end,
},
},
updateFn = function(dialog)
local server = ZO_Dialogs_GetSelectedRadioButtonData(dialog)
local acceptState = server and BSTATE_NORMAL or BSTATE_DISABLED
ZO_Dialogs_UpdateButtonState(dialog, 1, acceptState)
end,
})
- pregame/accountlogin/keyboard/zo_login.lua:225 --
ZO_Dialogs_RegisterCustomDialog("Announcement_Dialog", announcementDialogInfo)
- pregame/charactercreate/gamepad/zo_charactercreate_gamepad.lua:384 --
ZO_Dialogs_RegisterCustomDialog(SKIP_TUTORIAL_GAMEPAD_DIALOG,
{
mustChoose = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
title =
{
text = SI_PROMPT_TITLE_SKIP_TUTORIAL,
},
mainText =
{
text = SI_PROMPT_BODY_SKIP_TUTORIAL,
},
buttons =
{
{
text = SI_PROMPT_PLAY_TUTORIAL_BUTTON,
keybind = "DIALOG_PRIMARY",
callback = function(dialog)
self:CreateCharacter(dialog.data.startLocation, CHARACTER_CREATE_DEFAULT_LOCATION)
end,
},
{
text = SI_PROMPT_SKIP_TUTORIAL_BUTTON,
keybind = "DIALOG_SECONDARY",
callback = function(dialog)
self:CreateCharacter(dialog.data.startLocation, CHARACTER_CREATE_SKIP_TUTORIAL)
end,
},
{
text = SI_PROMPT_BACK_TUTORIAL_BUTTON,
keybind = "DIALOG_NEGATIVE",
callback = function(dialog)
ZO_CharacterCreate_Gamepad_CancelSkipDialogue()
ZO_Dialogs_ShowGamepadDialog(CHARACTER_CREATE_GAMEPAD_DIALOG, { characterName = dialog.data.characterName })
end,
},
}
})
- pregame/charactercreate/gamepad/zo_charactercreate_gamepad.lua:1338 --
ZO_Dialogs_RegisterCustomDialog("CHARACTER_CREATE_TEMPLATE_SELECT", dialogDescription)
- pregame/charactercreate/gamepad/zo_charactercreate_gamepad.lua:1758 --
ZO_Dialogs_RegisterCustomDialog(params.dialogName,
{
mustChoose = true,
canQueue = true,
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
setup = SetupDialog,
OnShownCallback = function()
-- Open Keyboard immediately on entering finishing character dialog
if self.editBoxControl then
self.editBoxControl:TakeFocus()
end
end,
blockDialogReleaseOnPress = true, -- We'll handle Dialog Releases ourselves since we don't want DIALOG_PRIMARY to release the dialog on press.
title =
{
text = params.dialogTitle,
},
mainText =
{
text = params.dialogMainText,
},
parametricList =
{
-- name edit box
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
templateData = {
nameField = true,
textChangedCallback = function(control)
local newName = control:GetText()
UpdateSelectedName(newName)
if control:GetText() ~= parametricDialog.selectedName then
control:SetText(parametricDialog.selectedName)
end
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.editBoxControl.textChangedCallback = data.textChangedCallback
control.editBoxControl:SetDefaultText(GetString(SI_CREATE_CHARACTER_GAMEPAD_ENTER_NAME))
local validInput = parametricDialog.selectedName and parametricDialog.selectedName ~= ""
if validInput then
control.editBoxControl:SetText(parametricDialog.selectedName)
end
SetupEditControlForNameValidation(control.editBoxControl)
control.editBoxControl:SetMaxInputChars(CHARNAME_MAX_LENGTH)
control.highlight:SetHidden(not selected)
self.editBoxSelected = selected
self.editBoxControl = control.editBoxControl
end,
narrationText = function(entryData, entryControl)
local narrations = {}
ZO_AppendNarration(narrations, ZO_FormatEditBoxNarrationText(entryControl.editBoxControl))
ZO_AppendNarration(narrations, SCREEN_NARRATION_MANAGER:CreateNarratableObject(parametricDialog.violationText))
return narrations
end,
},
},
-- Done menu item
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData = doneEntry,
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = GetString(SI_CREATE_CHARACTER_GAMEPAD_FINISH_SELECT),
callback = function(dialog)
if self.editBoxSelected then
local targetControl = dialog.entryList:GetTargetControl()
if targetControl and targetControl.editBoxControl then
targetControl.editBoxControl:TakeFocus()
end
else
if not dialog.noViolations then
return
end
ReleaseDialog()
if params.onFinish then
params.onFinish(dialog)
end
end
end,
enabled = function()
return self.editBoxSelected or parametricDialog.noViolations
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = GetString(SI_CREATE_CHARACTER_GAMEPAD_FINISH_BACK),
callback = function(dialog)
ReleaseDialog()
if params.onBack then
params.onBack(dialog)
end
PlaySound(SOUNDS.GAMEPAD_MENU_BACK)
end,
},
},
})
- pregame/charactercreate/keyboard/zo_charactercreate_keyboard.lua:1045 --
ZO_Dialogs_RegisterCustomDialog("CHARACTER_CREATE_SKIP_TUTORIAL",
{
customControl = control,
canQueue = true,
title =
{
text = SI_PROMPT_TITLE_SKIP_TUTORIAL,
},
mainText =
{
text = SI_PROMPT_BODY_SKIP_TUTORIAL,
},
noChoiceCallback = function(dialog)
ZO_CHARACTERCREATE_MANAGER:SetShouldPromptForTutorialSkip(true)
end,
buttons =
{
{
control = control:GetNamedChild("Play"),
text = SI_PROMPT_PLAY_TUTORIAL_BUTTON,
keybind = "DIALOG_PRIMARY",
callback = function(dialog)
KEYBOARD_CHARACTER_CREATE_MANAGER:CreateCharacter(dialog.data.startLocation, CHARACTER_CREATE_DEFAULT_LOCATION)
end,
},
{
control = control:GetNamedChild("Skip"),
text = SI_PROMPT_SKIP_TUTORIAL_BUTTON,
keybind = "DIALOG_SECONDARY",
callback = function(dialog)
KEYBOARD_CHARACTER_CREATE_MANAGER:CreateCharacter(dialog.data.startLocation, CHARACTER_CREATE_SKIP_TUTORIAL)
end,
},
{
control = control:GetNamedChild("Back"),
text = SI_PROMPT_BACK_TUTORIAL_BUTTON,
keybind = "DIALOG_NEGATIVE",
callback = function(dialog)
ZO_CHARACTERCREATE_MANAGER:SetShouldPromptForTutorialSkip(true)
end,
},
}
})
- pregame/characterselect/gamepad/zo_characterselect_gamepad.lua:73 --
ZO_Dialogs_RegisterCustomDialog("CONFIRM_DELETE_SELECTED_CHARACTER_GAMEPAD",
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
},
canQueue = true,
mustChoose = true,
setup = function(dialog)
deleteCharacterText = ""
dialog:setupFunc()
end,
title =
{
text = SI_CONFIRM_DELETE_CHARACTER_DIALOG_GAMEPAD_TITLE,
},
mainText =
{
text = zo_strformat(SI_CONFIRM_DELETE_CHARACTER_DIALOG_GAMEPAD_TEXT, confirmationString)
},
parametricList =
{
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
entryData = deleteEntryData,
},
{
template = "ZO_GamepadTextFieldSubmitItem",
entryData = submitEntryData,
},
},
blockDialogReleaseOnPress = true,
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local targetData = dialog.entryList:GetTargetData()
local targetControl = dialog.entryList:GetTargetControl()
if targetData.isEditControl and targetControl then
targetControl.editBoxControl:TakeFocus()
elseif targetData.isSubmit then
if DoesDeleteEntryTextMatchConfirmationString() then
-- Delete character and exit dialog
ZO_CharacterSelect_Gamepad.deleting = true
ZO_Dialogs_ReleaseDialogOnButtonPress("CONFIRM_DELETE_SELECTED_CHARACTER_GAMEPAD")
local characterData = CHARACTER_SELECT_MANAGER:GetSelectedCharacterData()
CHARACTER_SELECT_MANAGER:AttemptCharacterDelete(characterData.id)
end
end
end,
enabled = function(dialog)
local targetData = dialog.entryList:GetTargetData()
if targetData.isEditControl then
return true
elseif targetData.isSubmit then
return DoesDeleteEntryTextMatchConfirmationString()
end
return false
end,
},
{
text = GetString(SI_CHARACTER_SELECT_GAMEPAD_DELETE_CANCEL),
keybind = "DIALOG_NEGATIVE",
callback = function()
local self = ZO_CharacterSelect_Gamepad
local selectedData = self.characterList:GetTargetData()
PlaySound(SOUNDS.GAMEPAD_MENU_BACK)
ZO_CharacterSelect_Gamepad_ReturnToCharacterList(ACTIVATE_VIEWPORT)
if selectedData and selectedData.needsRename then
ZO_CharacterSelect_Gamepad_RefreshKeybindStrip(self.charListKeybindStripDescriptorRename)
else
ZO_CharacterSelect_Gamepad_RefreshKeybindStrip(self.charListKeybindStripDescriptorDefault)
end
ZO_Dialogs_ReleaseDialog("CONFIRM_DELETE_SELECTED_CHARACTER_GAMEPAD")
end,
},
},
})
- pregame/characterselect/keyboard/zo_characterselect_keyboard.lua:243 --
ZO_Dialogs_RegisterCustomDialog("RENAME_CHARACTER_KEYBOARD",
{
customControl = self,
canQueue = true,
setup = SetupRenameDialog,
title =
{
text = function(dialog)
local titleText = SI_CHARACTER_SELECT_RENAME_CHARACTER_FROM_TOKEN_TITLE
if dialog.data.characterData.needsRename then
titleText = SI_CHARACTER_SELECT_RENAME_CHARACTER_TITLE
end
return GetString(titleText)
end,
},
buttons =
{
{
control = GetControl(self, "AttemptRename"),
text = SI_CHARACTER_SELECT_RENAME_SAVE_NEW_NAME,
callback = function(dialog)
local requestedName = ZO_RenameCharacterDialogNameEdit:GetText()
CHARACTER_SELECT_MANAGER:AttemptCharacterRename(dialog.data.characterData.id, requestedName, OnRenameResult)
end,
},
{
control = GetControl(self, "Cancel"),
text = SI_DIALOG_CANCEL,
},
},
updateFn = function(dialog)
local nameText = dialog.nameEdit:GetText()
local nameViolations = { IsValidCharacterName(nameText) }
local DEFAULT_ANCHOR_CONTROL = nil
if dialog.nameEdit:HasFocus() then
dialog.renameInstructions:Show(DEFAULT_ANCHOR_CONTROL, nameViolations)
end
if #nameViolations > 0 then
dialog.attemptRenameButton:SetEnabled(false)
else
dialog.attemptRenameButton:SetEnabled(true)
end
local correctedName = CorrectCharacterNameCase(nameText)
if correctedName ~= nameText then
-- only set the text if it's actually changed
dialog.nameEdit:SetText(correctedName)
end
end,
})
- pregame/gamepad/createaccount/createaccount_gamepad.lua:69 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_CREATE_ACCOUNT_ERROR_DIALOG,
{
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.BASIC,
},
mustChoose = true,
title =
{
text = SI_CREATEACCOUNT_ERROR_HEADER,
},
mainText =
{
text = function() return g_lastErrorString end,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
}
})
- pregame/gamepad/linkaccountscreen/linkaccountscreen_gamepad.lua:58 --
ZO_Dialogs_RegisterCustomDialog(GAMEPAD_LINK_ACCOUNT_ERROR_DIALOG,
{
gamepadInfo = {
dialogType = GAMEPAD_DIALOGS.BASIC,
},
mustChoose = true,
title =
{
text = SI_LINKACCOUNT_ERROR_HEADER,
},
mainText =
{
text = function() return g_lastErrorString end,
},
buttons =
{
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_EXIT,
},
}
})
- pregame/globals/overflowdialog.lua:7 --
ZO_Dialogs_RegisterCustomDialog("PROVIDE_OVERFLOW_RESPONSE",
{
customControl = dialogControl,
setup = SetupMainText,
mustChoose = true,
title =
{
text = SI_OVERFLOW_DIALOG_TITLE,
},
buttons =
{
{
control = GetControl(dialogControl, "Cancel"),
text = SI_OVERFLOW_DIALOG_CANCEL_BUTTON,
keybind = false,
callback = function(dialog)
CancelLogin()
PregameStateManager_SetState("AccountLogin")
end,
},
{
control = GetControl(dialogControl, "Overflow"),
text = SI_OVERFLOW_DIALOG_OVERFLOW_BUTTON,
keybind = false,
callback = function(dialog)
RespondToOverflowPrompt(true)
PregameStateManager_ShowLoginRequested()
end,
},
{
control = GetControl(dialogControl, "Queue"),
text = SI_OVERFLOW_DIALOG_QUEUE_BUTTON,
keybind = false,
callback = function(dialog)
RespondToOverflowPrompt(false)
PregameStateManager_ShowLoginRequested()
end,
},
}
})
- pregame/optionspanels/keyboard/optionspanel_account_keyboard.lua:2 --
ZO_Dialogs_RegisterCustomDialog("ZO_OPTIONS_KEYBOARD_EDIT_EMAIL_DIALOG",
{
title =
{
text = SI_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_TITLE,
},
mainText =
{
text = SI_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_ENTRY_TITLE,
},
canQueue = true,
customControl = control,
setup = function(dialog)
local newEmailEdit = dialog:GetNamedChild("NewEmailEntryEdit")
local confirmNewEmailEdit = dialog:GetNamedChild("ConfirmNewEmailEntryEdit")
newEmailEdit:SetText("")
confirmNewEmailEdit:SetText("")
end,
buttons =
{
-- Confirm Button
{
control = control:GetNamedChild("Confirm"),
keybind = "DIALOG_PRIMARY",
text = SI_DIALOG_CONFIRM,
enabled = function(dialog)
local newEmailEdit = dialog:GetNamedChild("NewEmailEntryEdit")
local confirmNewEmailEdit = dialog:GetNamedChild("ConfirmNewEmailEntryEdit")
return newEmailEdit:GetText() == confirmNewEmailEdit:GetText()
end,
callback = function(dialog)
local newEmailEdit = dialog:GetNamedChild("NewEmailEntryEdit")
SetSecureSetting(SETTING_TYPE_ACCOUNT, ACCOUNT_SETTING_ACCOUNT_EMAIL, newEmailEdit:GetText())
end,
},
-- Cancel Button
{
control = control:GetNamedChild("Cancel"),
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
},
},
finishedCallback = function()
KEYBOARD_OPTIONS:UpdatePanelVisibilityIfShowing(SETTING_PANEL_ACCOUNT)
end,
})
- pregameandingame/gammaadjust/gammaadjust.lua:5 --
ZO_Dialogs_RegisterCustomDialog("ADJUST_GAMMA_DIALOG",
{
customControl = dialogControl,
canQueue = true,
mustChoose = true,
title =
{
text = "",
},
buttons =
{
{
control = dialogControl:GetNamedChild("KeyContainerConfirmGamma"),
text = SI_GAMMA_CONFIRM,
noReleaseOnClick = true, -- Don't release because the scene needs to fade out, will release later
callback = function(dialog)
SetCVar("GAMMA_ADJUSTMENT", tostring(g_currentGamma))
SCENE_MANAGER:Hide("gammaAdjust")
ZO_SavePlayerConsoleProfile()
end,
},
{
control = dialogControl:GetNamedChild("KeyContainerDeclineGamma"),
text = SI_GAMMA_DECLINE,
noReleaseOnClick = true, -- Don't release because the scene needs to fade out, will release later
callback = function(dialog)
SCENE_MANAGER:Hide("gammaAdjust")
end,
visible = function() return not ZO_GammaAdjust_NeedsFirstSetup() end,
},
}
})
- pregameandingame/optionspanels/gamepad/optionspanel_account_gamepad.lua:15 --
ZO_Dialogs_RegisterCustomDialog("ZO_OPTIONS_GAMEPAD_EDIT_EMAIL_DIALOG",
{
blockDialogReleaseOnPress = true,
canQueue = true,
gamepadInfo =
{
dialogType = GAMEPAD_DIALOGS.PARAMETRIC,
allowRightStickPassThrough = true,
},
setup = function(dialog, data)
self.enteredText = ""
if ZO_IsPlaystationPlatform() then
local params = {
"DIALOG_TERTIARY",
}
local keybindIndex = 1
GAMEPAD_TOOLTIPS:LayoutKeybindTextBlockTooltip(GAMEPAD_LEFT_TOOLTIP, SI_GAMEPAD_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_TOOLTIP_PLAYSTATION, params, keybindIndex)
else
local params = {
"DIALOG_TERTIARY",
ZO_GetPlatformStoreName(),
}
local keybindIndex = 1
GAMEPAD_TOOLTIPS:LayoutKeybindTextBlockTooltip(GAMEPAD_LEFT_TOOLTIP, SI_GAMEPAD_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_TOOLTIP, params, keybindIndex)
end
dialog.info.finishedCallback = data.finishedCallback
dialog:setupFunc()
end,
title =
{
text = SI_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_TITLE,
},
mainText =
{
text = ""
},
parametricList =
{
-- Text Entry
{
template = "ZO_Gamepad_GenericDialog_Parametric_TextFieldItem",
headerTemplate = "ZO_GamepadMenuEntryFullWidthHeaderTemplate",
header = GetString(SI_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_ENTRY_TITLE),
templateData =
{
textChangedCallback = function(control)
local enteredText= control:GetText()
self.enteredText = enteredText
end,
setup = function(control, data, selected, reselectingDuringRebuild, enabled, active)
control.highlight:SetHidden(not selected)
control.editBoxControl.textChangedCallback = data.textChangedCallback
data.control = control
control.editBoxControl:SetDefaultText(GetString(SI_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_ENTRY_DEFAULT))
control.editBoxControl:SetMaxInputChars(MAX_EMAIL_LENGTH)
if self.enteredText then
control.editBoxControl:SetText(self.enteredText)
end
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
targetControl.editBoxControl:TakeFocus()
end,
narrationText = ZO_GetDefaultParametricListEditBoxNarrationText,
narrationTooltip = GAMEPAD_LEFT_TOOLTIP,
},
},
{
template = "ZO_GamepadTextFieldSubmitItem",
templateData =
{
text = GetString(SI_GAMEPAD_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_ACTION),
setup = ZO_SharedGamepadEntry_OnSetup,
callback = function(dialog)
SetSecureSetting(SETTING_TYPE_ACCOUNT, ACCOUNT_SETTING_ACCOUNT_EMAIL, self.enteredText)
ReleaseDialog()
end,
},
},
},
buttons =
{
{
keybind = "DIALOG_PRIMARY",
text = SI_GAMEPAD_SELECT_OPTION,
callback = function(dialog)
local data = dialog.entryList:GetTargetData()
data.callback(dialog)
end,
},
{
keybind = "DIALOG_NEGATIVE",
text = SI_DIALOG_CANCEL,
callback = function(dialog)
ReleaseDialog()
end,
},
{
keybind = "DIALOG_TERTIARY",
text = SI_GAMEPAD_INTERFACE_OPTIONS_ACCOUNT_EMAIL_DIALOG_AUTOFILL,
visible = function(dialog)
local data = dialog.entryList:GetTargetData()
return data.control and data.control.editBoxControl or false
end,
callback = function(dialog)
local targetControl = dialog.entryList:GetTargetControl()
self.enteredText = GetUserEmailAddress()
targetControl.editBoxControl:SetText(self.enteredText)
end,
},
},
})
- pregameandingame/zo_addonmanager/zo_addoneula.lua:40 --
ZO_Dialogs_RegisterCustomDialog("SHOW_ADDON_EULA", g_dialogInfo)
- pregameandinternalingame/gamepad/esoplusmembershipinfodialog_gamepad.lua:18 --
ZO_Dialogs_RegisterCustomDialog("ESO_PLUS_MEMBERSHIP_INFO", self.dialogInfo)