Difference between revisions of "User confirm"

From Kolmafia
Jump to navigation Jump to search
imported>StDoodle
imported>Fredg1
 
(11 intermediate revisions by 6 users not shown)
Line 1: Line 1:
'''[[boolean]] user_confirm( [[string]] message )'''
+
{{
<br />Opens a confirm dialog with the passed message; returns true if user selects Yes, false if No is pressed.
+
#vardefine:name|user_confirm}}{{
 +
#vardefine:return_type|boolean}}{{
  
<p>Example:
+
FunctionPage|
<pre># fairly simple function to check if your bounty is one that gives good meat
+
name={{#var:name}}|
# if so, it makes sure that you want to farm meat and not stats.
+
 
void equip_best_outfit(location bounty_area, string stat_outfit, string farming_outfit)
+
function1={{Function|
 +
name={{#var:name}}|
 +
aggregate={{#var:aggregate}}|
 +
return_type={{#var:return_type}}|
 +
return_also={{#var:return_also}}|
 +
parameter1={{Param|string|message}}|
 +
}}|
 +
 
 +
function2={{Function|
 +
name={{#var:name}}|
 +
aggregate={{#var:aggregate}}|
 +
return_type={{#var:return_type}}|
 +
return_also={{#var:return_also}}|
 +
parameter1={{Param|string|message}}|
 +
parameter2={{Param|int|timeOutMillis}}|
 +
parameter3={{Param|boolean|defaultValue}}|
 +
p1desc={{pspan|message}} is the text to display in the confirmation pop-up|
 +
p2desc={{pspan|timeOutMillis}} the length of time to display the dialog, in milliseconds|
 +
p3desc={{pspan|defaultValue}} the value to return if the user does not choose an input before <b>timeOutMillis</b> ms|
 +
}}|
 +
 
 +
function_description=Presents the user with a pop-up dialog box with the text in {{pspan|message}} (can use escaped characters, such as "<nowiki>\n</nowiki>" for a newline); returns true if the user selects "Yes" and false if the user selects "No."</p>
 +
<p>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.</p>
 +
<p>Please use these sparingly, as it can defeat the purpose of scripting if the user must constantly provide information during execution.|
 +
 
 +
code1={{CodeSample|
 +
title=Code Sample|
 +
description=A check to see if the user truly wants to execute a script.|
 +
code=
 +
<syntaxhighlight>
 +
if (!user_confirm("Are you sure you want to proceed with executing this script?") )
 +
{
 +
  abort("Script execution canceled by user.");
 +
}
 +
</syntaxhighlight>}}|
 +
 
 +
code2={{CodeSample|
 +
title=Conditional pop-ups|
 +
description=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.<br>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.|
 +
code=
 +
<syntaxhighlight>
 +
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.");
 +
  }
  
  if (bounty_area == $location[Giant's Castle] || bounty_area == $location[Fantasy Airship])
+
  // Rest of the script
  {
+
}
 
+
</syntaxhighlight>|
    if (user_confirm("Your selected bounty area is a good source of meat. Would you like to use your farming outfit instead of your bounty outfit?")) return outfit(farming_outfit);
+
moreinfo=See [[Operators#Boolean_Operators]] for how/why this works.}}|
 
 
  }
 
  
  return outfit(stat_outfit);
+
}}
  
}</pre></p>
+
[[Category:Miscellaneous Functions]]

Latest revision as of 11:12, 23 October 2020

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.