# Advanced: Manual Step Calls

Here, we work with the step-calling logic manually using public wrapper methods in the TutorialSceneReferences (TSR).

1. In the script from which you will call the step, **create a reference to TSR**. For example:\
   `[SerializeField] private TutorialSceneReferences sceneReferences;`
2. Use public method calls depending on the desired result:

<table><thead><tr><th width="216">Method in TSR</th><th width="260">Description</th><th>Call Example</th></tr></thead><tbody><tr><td>IsStepDisplaying(int stepIndex)</td><td>Check whether a step is currently being played.</td><td>if (IsStepDisplaying(0)) {}</td></tr><tr><td>IsStepDone(int stepIndex)</td><td>Check whether a step has been completed.</td><td>if (IsStepDone(0)) {}</td></tr><tr><td>IsStepManualStart(int stepIndex)</td><td>Check whether a step requires manual triggering.</td><td>if (IsStepManualStart(0)) {}</td></tr><tr><td>TurnOffTutorial()</td><td>Turns off tutorial. Useful for switching between different tutorials on the same scene.</td><td><code>sceneReferences.TurnOnffTutorial();</code></td></tr><tr><td>TurnOnTutorial()</td><td>Launches tutorial on the scene. Useful if Autostart is set to false.</td><td><code>sceneReferences.TurnOnTutorial();</code></td></tr><tr><td>TranslateAllTutorial(InputStringsScriptableObject.Language language)</td><td>Translates all tutorial hints into one of the supported languages.</td><td><code>sceneReferences.InputStringsScriptableObject.Language.Italian);</code></td></tr><tr><td>TranslateAllTutorialByString(string language)</td><td>Translates all tutorial hints into any language present in CSV file (finds header with this string).</td><td><code>sceneReferences.TranslateAllTutorialByString("Polish");</code></td></tr><tr><td>ChangeStepVisualText(int stepIndex, string textValue, TextToChange textField)</td><td>It is used to pass custom text to the selected hint of the selected step in runtime.</td><td><code>sceneReferences.ChangeStepVisualText(2, "Your text", TextToChange.PointerText)</code></td></tr><tr><td>StartTutorialStep(int stepIndex)</td><td>Starts a specific tutorial step by its index and disables others.</td><td><code>sceneReferences.StartTutorialStep(2);</code></td></tr><tr><td>AsyncStartTutorialStep(int stepIndex)</td><td>Starts a specific tutorial step by its index and doesnt disable others.</td><td><code>sceneReferences.AsyncStartTutorialStep(2);</code></td></tr><tr><td>StartTutorialStepWithTargets(int stepIndex, List targetObjects, bool stopOtherSteps)</td><td>Starts a tutorial step with custom target GameObjects.</td><td><code>sceneReferences.ForceCompleteStep(2, myGameObjectList, false);</code></td></tr><tr><td>ForceCompleteStep(int stepIndex)</td><td>Finishes the step by setting its status to "Done" regardless of the completion conditions.</td><td><code>sceneReferences.ForceCompleteStep(2);</code></td></tr><tr><td>ForceCompleteTutorial()</td><td>Completes all tutorial steps on the scene without exception, marking as Done.</td><td><code>sceneReferences.ForceCompleteTutorial();</code></td></tr><tr><td>SkipTutorial()</td><td>Skips tutorial steps, either by using ForceCompleteTutorial or through custom logic (to complete only selected steps).</td><td><code>sceneReferences.SkipTutorial();</code></td></tr><tr><td>SkipActiveTutorialModule()</td><td>Skips the tutorial selectively, according to the specified list of steps.</td><td><code>sceneReferences.SkipActiveTutorialModule();</code></td></tr><tr><td>ResetTutorialStep(int stepIndex)</td><td>Disables the step along with its visuals by setting its status to "NotDoneYet".</td><td><code>ResetTutorialStep(0);</code></td></tr><tr><td>HideTutorial()</td><td>Resets all currently displaying tutorial steps.</td><td><code>sceneReferences.HideTutorial();</code></td></tr><tr><td>ContinueTutorial()</td><td>After a reset, attempts to automatically resume steps that were previously paused.</td><td><code>sceneReferences.ContinueTutorial();</code></td></tr></tbody></table>

3. It is recommended to set the steps you call from the script to **Start Step** → **Manually Call** to ensure unified control over execution.
4. Button inside of any tooltip prefab can also call public methods.

<table><thead><tr><th width="200">UIGraphicAnimation Method</th><th width="275">Description</th><th>Call Example</th></tr></thead><tbody><tr><td>InitializeByConfirm()</td><td>It is triggered upon button click and sets BlockedByButton to false in the step. Then, the step continues until the player meets the main condition.</td><td><img src="https://2950676651-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXXV9mXl47pizEJp2sQyb%2Fuploads%2FLc8zv6uCSgtdNjej58cf%2FIMG_20250123_004654.png?alt=media&#x26;token=353ba73f-cdcc-4c96-bfdd-9748efb5245f" alt="" data-size="original"></td></tr><tr><td>FinishStep()</td><td>Can also be triggered by a button to immediately complete the step upon click.</td><td><img src="https://2950676651-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXXV9mXl47pizEJp2sQyb%2Fuploads%2FLWHQ79zxHU3WYkD03QFa%2FIMG_20250123_004452.png?alt=media&#x26;token=3116d280-8838-49b1-9acc-3c48c741bd37" alt="" data-size="original"></td></tr><tr><td>FinishStepAndSkipTutorial()</td><td>Can also be triggered by a button to complete the step upon click and skip the whole tutorial.</td><td></td></tr></tbody></table>
