User confirm

From Kolmafia
Revision as of 11:12, 23 October 2020 by imported>Fredg1
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Function Syntax

boolean user_confirm(string message )

boolean user_confirm(string message ,int timeOutMillis ,boolean defaultValue )

  • message is the text to display in the confirmation pop-up
  • timeOutMillis the length of time to display the dialog, in milliseconds
  • defaultValue the value to return if the user does not choose an input before timeOutMillis ms

Presents the user with a pop-up dialog box with the text in message (can use escaped characters, such as "\n" for a newline); returns true if the user selects "Yes" and false if the user selects "No."

If you wish for the dialog to "time out" and return a default value if the user does not select an option, use the three-parameter version.

Please use these sparingly, as it can defeat the purpose of scripting if the user must constantly provide information during execution.

Code Sample

A check to see if the user truly wants to execute a script.

if (!user_confirm("Are you sure you want to proceed with executing this script?") )
{
   abort("Script execution canceled by user.");
}

Conditional pop-ups

By taking in consideration that ASH has lazy booleans, it is possible to make confirmation messages that will only appear if the user doesn't satisfy a condition without having to isolate the user_confirm() call.
In this example, the user is asked to input the amount of adventures to spend. If they have at least that much, the script simply executes, without a pop-up appearing. Otherwise, a pop-up appears, and the script only executes if the user answers yes.

void main( int adventures_to_spend )
{
   if (my_adventures() < adventures_to_spend && !user_confirm("You don't have that many adventures. Use as many as possible instead?"))
   {
      abort("Script execution canceled by user.");
   }

   // Rest of the script
}

See Operators#Boolean_Operators for how/why this works.