User Confirmation Dialog

This package provides a widget that allows you to present the user with a message and a number of options. You can act upon the resposne of the user when they respond.

The widget supports both cursor and analog navigation.

This package supports any number of options, including scrolling support with both controller and mouse.

Usage:

Simple confirm:

function MyScript:LocalConfirmBeforeGoing()
  self:GetEntity().userConfirmationScript:LocalConfirm("Are you sure you want to continue?", function(response)
    if response then 
      self:DoSomethingWhenTheyConfirm()
    end
  )
end

Advanced usage:

function MyScript:LocalAskUser()
  local options = {
    { name = "Apple", value = "apple" },
    { name = "Orange", value = "orange" },
    { name = "Banana", value = "banana" }
  }
  self:GetEntity().userConfirmationScript:Prompt("Which fruit do you want?", options, function(response)
    if response == "apple" then
      self:ReceiveOrange()
    elseif response == "orange" then
      self:ReceiveOrange()
    elseif response == "banana" then
      self:ReceiveBanana()
    end
  )
end

Look and feel:

Caveats:

If you’re displaying this in response to a user interacting with another widget, the other widget will still receive user input.

As a work around, you should set a flag on the widget to disable input, and add appropriate code to act on this flag, when the confirmation dialog is open.

For example:

function MyScript:DoSomething()
  self.widget.js.data.disabled = true
  self:GetEntity().userConfirmationScript:LocalConfirm("Are you sure?", function(response) 
    self.widget.js.data.disabled = false
  end)
end

then in your widget, just don’t run interactive functions if the flag is set.