Use Prompt

From Wiki Let's Role

In Let's Role, prompts are used to display a window showing text or a form to collect information. This is very useful to ask for confirmation, or to request bonuses or penalties related to a roll.

To create and use a prompt, you need to use a script and build a view.

This page shows three tutorials, from the simplest to the most advanced:

  • a tutorial to create a prompt that simply displays text (for tutorials or tooltips),
  • a tutorial to chain multiple prompts to build a multi-page tutorial,
  • a tutorial to use prompts as forms to input modifiers or additional dice in a roll.

Tutorial 1: Create a simple prompt

Create a button

The first step is to create a button that triggers the script.

Note: you can trigger a prompt with any other event in your script.

Build a prompt view

The prompt that appears is actually a view you need to build.

The ID of this view must be defined properly, since it will be used in the script.

Script

Here is a script that manages the prompt display. This function does three things:

  • detects the click on the button,
  • shows the prompt,
  • handles the closing of the prompt.

Most of these actions are handled by the sheet.prompt(...) function.

The third argument is optional, but allows you to close the prompt when the Continue button is clicked.

const promptTutorial = function(sheet){
    let tutorial_view = "view_prompt_tutorial";
    let tutorial_title = "prompt tutorial";
    let tutorial_button = sheet.get("display_tutorial_1");
   
    tutorial_button.on("click", function(){
        sheet.prompt(tutorial_title, tutorial_view, function(){});
    })
}

Tutorial 2: Chained prompts

A chained tutorial shows several pages in sequence. When you click Continue, the next page is displayed.

Create a button

As in the first tutorial, create a button to trigger the prompt.

Create the views

Each page of the tutorial must be created as a separate view.

Script

The display of the next page is requested in the closing function of the previous prompt.

const promptTutorial2 = function(sheet){
    let tutorial_view_1 = "view_prompt_tutorial";
    let tutorial_view_2 = "view_prompt_tutorial_2";
    let tutorial_title = "prompt tutorial";
    let tutorial_button = sheet.get("display_tutorial_2");
 
    tutorial_button.on("click", function(){
        sheet.prompt(tutorial_title + " (1/2)", tutorial_view_1, function(){
            sheet.prompt(tutorial_title + " (2/2)", tutorial_view_2, function(){})
        });
    })
}

Tutorial 3: Prompt as a form

A prompt can also be used as a form to collect information, fill fields, or add variables to a roll.

Create a button

Prepare a button that will open the prompt, just like a roll button.

Create the prompts

Build your prompts with appropriate input fields (TextInput, NumberInput, etc.).

For example, a prompt that asks for the roll name and a modifier.

Prepare a script

The script must include a closing function to handle and process the entered data.

You can also define an initialization function to configure the display (e.g. pre-fill some fields).

const initPromptExample = function (sheet) {
    log("START init prompt");
 
    // Prompt initialization
    const promptInitialization = function (prompte_view) {
        log("START prompt initialization");
        prompte_view.get("prompt_name").value(sheet.get("prompt_name").value());
        prompte_view.get("prompt_roll").value(sheet.get("prompt_roll").value());
        log("END prompt initialization");
    }

    // Process prompt results
    const promptAccepte = function (prompte_results) {
        log("START prompt results");
        let roll = prompte_results.prompt_roll;
        log("mod : [" + prompte_results.prompt_modificator + "]");
        if (prompte_results.prompt_modificator != undefined && prompte_results.prompt_modificator != 0) {
            roll += "+" + prompte_results.prompt_modificator + "[Modifier]";
        }
        log("-- roll : " + roll);
        Dice.roll(sheet, roll, prompte_results.prompt_name);
        log("END prompt results");
    }

    // ID of the view displayed as prompt
    let prompt_view = "view_prompt";
    let prompt_name = "";
    let roll_button = sheet.get("prompt_roll_button");

    // Show the prompt when the button is clicked
    roll_button.on("click", function () {
        sheet.prompt(prompt_name, prompt_view, promptAccepte, promptInitialization);
    });
    log("END init prompt");
}