src/app/models/scenario-droite-graduee.ts
Scénarios pour l’activité Calcul mental
constructor(cabri: CabriDataService, accountService: AccountService, globalService: GlobalService, page: any, cd: ChangeDetectorRef, ttsService: any)
|
| playIntro |
playIntro()
|
|
Shorter version of playIntro
Returns:
void
|
| restartActivity |
restartActivity()
|
|
Recommencer l’activité
Returns:
void
|
| nextPlayerInit |
nextPlayerInit()
|
|
Lancement de l’activité / 1er joueur
Returns:
void
|
| nextPlayerSwitch |
nextPlayerSwitch()
|
|
Joueur suivant.
Returns:
void
|
| populateScenario |
populateScenario(randomize: boolean)
|
|
Creates feedbacks for calcul mental on top of general feedbacks
Returns:
void
|
| firstTryFailed |
firstTryFailed()
|
|
Joueur suivant.
Returns:
void
|
| dynamicFeedback |
dynamicFeedback(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string, help: AnswerNeedsHelp)
|
|
dynamic Feedback depending of answer context - Basket + Road
Returns:
void
|
| playSoundWithAward |
playSoundWithAward(award: string)
|
|
Returns:
void
|
| badResponseMoonWithResultBasketDynamic |
badResponseMoonWithResultBasketDynamic(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)
|
|
Mauvaise réponse avec affichage solution
Returns:
void
|
| badResponseMoonWithResultNextQRoadDynamic |
badResponseMoonWithResultNextQRoadDynamic(resultOnTheRoad: ResultOnTheRoad, answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)
|
|
Mauvaise réponse avec affichage solution et question suivante
Returns:
void
|
| ttsFraction |
ttsFraction(fraction: Fraction)
|
|
Returns:
void
|
| readCurrentOperationNormal |
readCurrentOperationNormal()
|
|
Returns:
void
|
| readCurrentOperationProbleme |
readCurrentOperationProbleme()
|
|
Returns:
void
|
| readConsigne |
readConsigne(consigne: string, consigne2: string, isFeedback: boolean)
|
|
Returns:
void
|
| help2NumberSeparation |
help2NumberSeparation: |
| Public page |
page: |
| resultPhrase |
resultPhrase: |
| resultPhraseRemediation |
resultPhraseRemediation: |
import { PlayTTSService } from "src/app/services/play-tts.service";
import { ChangeDetectorRef } from "@angular/core";
import { AppUtils, Fraction } from "../app-utils";
import { JeuJustePointPage, justePointActivity } from "../page/jeu-juste-point/jeu-juste-point.page";
import { AccountService } from "../services/account.service";
import { CabriDataService } from "../services/cabri-data.service";
import { GlobalService } from "../services/global.service";
import { ResultOnTheRoad } from "./cabri-integration-jeujustepoint";
import { ScenarioPhrase } from "./scenario-phrase";
import { ScenarioCabri } from "./scenario-cabri";
import { AnswerStatus, AnswerSpeed, AnswerAverage, AnswerExtreme, AnswerNeedsHelp } from "./activity-answer";
import { DroiteGradueePage } from "../pages/droite-graduee/droite-graduee.page";
/**
* Scénarios pour l’activité Calcul mental
*/
export class ScenarioDroiteGraduee extends ScenarioCabri {
public page: DroiteGradueePage;
help2NumberSeparation: string;
resultPhrase: string;
resultPhraseRemediation: string;
constructor(
cabri: CabriDataService,
accountService: AccountService,
globalService: GlobalService,
page: any,
cd: ChangeDetectorRef,
ttsService: PlayTTSService
) {
super(cabri, accountService, globalService, page, cd, ttsService);
}
/**
* Shorter version of playIntro
*/
async playIntro() {
const introShort = new Array();
if (this.accountService.team.length > 1) {
// MULTI:
const players: any = this.accountService.team.map(student => student.name).join(" ! ");
// 1
introShort.push(
new ScenarioPhrase($localize`${players}:allPlayersNames: ! Bienvenue dans le jeu de la droite graduée !`)
)
// 2
introShort.push(
new ScenarioPhrase([
$localize`Dans ce jeu, vous allez jouer à chercher des nombres !`
]).setRandomMode()
)
} else {
// SOLO
// 1
introShort.push(
new ScenarioPhrase($localize`${this.page.currentUser.name}:playerName: ! Bienvenue dans le jeu de la droite graduée !`)
)
// 2
introShort.push(
new ScenarioPhrase([
$localize`Dans ce jeu, tu vas jouer à chercher des nombres !`
]).setRandomMode()
)
// 3
introShort.push(
new ScenarioPhrase($localize`On y va ?`),
new ScenarioPhrase("3... 2... 1..."),
new ScenarioPhrase(
[
$localize`C’est parti !`,
// $localize`Décollage !`,
// $localize`Allumage des réacteurs !`,
$localize`Vers l’infini et au-delà !`,
$localize`Que la force soit avec toi !`
]
).setRandomMode()
)
}
await this.runMathiaSpeech(introShort);
}
/**
* Recommencer l’activité
*/
async restartActivity() {
const playRestart: Array<any> = [
new ScenarioPhrase([$localize`Une nouvelle expédition est parée au lancement ? Youpi !`]),
new ScenarioPhrase([$localize`C’est reparti pour un nouveau voyage dans l’espace des nombres !`])
];
await this.runMathiaSpeech(playRestart);
}
/**
* Lancement de l’activité / 1er joueur
*/
async nextPlayerInit() {
const nextPlayerInit: Array<any> = [
new ScenarioPhrase([
$localize`Comme vous êtes ${this.page.currentTeam.length} dans l’équipe, vous allez jouer chacun votre tour !`,
$localize`Vous êtes ${this.page.currentTeam.length} dans l’équipe donc vous allez jouer chacun votre tour !`
]).setRandomMode(),
new ScenarioPhrase([
$localize`C’est toi qui commences ${this.page.currentUser.name} !`,
$localize`À toi de commencer ${this.page.currentUser.name} !`,
$localize`${this.page.currentUser.name}, à toi l’honneur de jouer en premier !`
]).setRandomMode(),
new ScenarioPhrase(["3... 2... 1..."]),
new ScenarioPhrase(
[
// $localize`Allons-y !`,
$localize`C’est parti !`,
// $localize`Décollage !`,
$localize`Allumage des moteurs !`,
$localize`Que la force soit avec toi !`,
$localize`Vers l’infini et au-delà !`
]
)
];
await this.runMathiaSpeech(nextPlayerInit);
}
/**
* Joueur suivant.
*/
async nextPlayerSwitch() {
const nextPlayerContent: Array<any> = [
new ScenarioPhrase([
$localize`Maintenant c’est à ${this.page.currentUser.name} de jouer ! Vas-y ! ${this.page.currentUser.name} !`,
$localize`Maintenant à toi ${this.page.currentUser.name} ! Vas-y !`,
$localize`À ton tour ${this.page.currentUser.name} !`,
$localize`À toi ${this.page.currentUser.name} !`,
$localize`Maintenant à ton tour ${this.page.currentUser.name} !`,
$localize`${this.page.currentUser.name} ? Tu es toujours là ? Ok, à toi de jouer !`,
$localize`Et maintenant c’est à... ${this.page.currentUser.name} !`,
$localize`À ${this.page.currentUser.name} maintenant !`,
$localize`${this.page.currentUser.name}, à toi !`,
$localize`Quel voyage ! À toi ${this.page.currentUser.name} !`
])
.speechOnly()
.setRandomMode()
];
// console.log("nextPlayerContent", nextPlayerContent);
await this.runMathiaSpeech(nextPlayerContent);
}
/**
* Creates feedbacks for calcul mental on top of general feedbacks
*/
populateScenario(randomize?: boolean) {
randomize = true;
super.populateScenario(randomize);
// SUCCESS 1ST TRY
// SLOW
this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.SLOW }, 2, [
$localize`Mieux vaut bien viser avant de répondre #playerName, bien joué !`,
$localize`Pas facile celui-là ! Bien visé !`,
$localize`Un petit pas pour toi, une grande victoire pour ton apprentissage ! Bravo !`,
$localize`Bravo #playerName ! Bien visé !`
], 2);
// NORMAL
this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.NORMAL }, 1, [
$localize`Oui, bien visé #playerName !`,
$localize`Vers l’infini et au-delà ! Bien joué !`,
$localize`Droit dedans ! Youpi !`,
$localize`Oui ! Bravo !`,
$localize`Tu m’impressionnes #playerName ! Bravo !`,
], 2);
// FAST
this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST }, 2, [
$localize`Wahou ! Tu l’as mis sans hésiter #playerName ! Bravo !`,
$localize`Incroyable ! Quelle vitesse ! Quelle précision !`,
$localize`Supra-luminique ! T'as trouvé' à la vitesse de l’éclair !`,
$localize`Par Toutatis ! Quelle maîtrise !`,
$localize`Encore un point marqué à la vitesse de la lumière !`
], 2);
// PROGRESSION ABOVE AVERAGE
this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.ABOVE }, 3, [
$localize`Dans le mille ! Continue comme ça et tu vas remporter le match #playerName !`,
// $localize`Je suis impressionnée ! Ce match est une promenade pour toi !`,
// $localize`Super ! La victoire est proche, continue comme ça !`
], 2);
// PROGRESSION BELOW AVERAGE
this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.BELOW }, 3, [
$localize`Bien joué #playerName ! Continue ! Tu peux remonter le score !`
], 2);
// PROGRESSION NO ERRORS TILL THEN
this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLGOOD }, 3, [
$localize`Sans faute jusqu'ici ! Tu m’épates #playerName !`,
$localize`Quelle série ! Tu ne rates jamais ?`,
$localize`Incroyable ! Jusqu’où iras tu comme ça ?`,
$localize`Epoustouflant #playerName !`,
$localize`Quelle cosmo-réponse ! Tu es supra-luminique !`,
$localize`Wahou ! Tes processeurs fonctionnent à plein régime !`,
], 2);
// PROGRESSION ONLY ERRORS TILL THEN
this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLBAD }, 3, [
$localize`Oui #playerName ! C’est ça ! Continue !`
], 2);
this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST, progressionExtreme: AnswerExtreme.ALLGOOD }, 4, [
$localize`Quelle match ! La foule est en délire !`,
$localize`Tu es lancé comme une fusée vers le sans faute !`,
$localize`Wahou ! Tu m’impressionnes #playerName ! Quelle vitesse !`
], 2);
// SUCCESS 2ND TRY
this.addFeedbacks({ status: AnswerStatus.VALID2ND }, 2, [
$localize`Magnifique contre-attaque de #playerName ! Wahou !`,
$localize`Beau rattrapage ! Continue !`,
$localize`Oui, bien rattrapé #playerName !`,
$localize`Oui ! Tu as trouvé ! Je suis fière de toi !`,
$localize`Super ! Tu as su corriger le tir !`,
$localize`Bravo ! Avec persévérance on arrive à tout ! Même toucher les étoiles !`,
$localize`Oui ! Bravo ! Bravo ! Bravooo !`,
$localize`Un petit pas pour toi, un grand pas pour ton apprentissage ! Bravo !`
], 2);
// ERRORS
// FIRST ERROR - retry with help
this.addFeedbacks({ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES, speed: AnswerSpeed.SLOW }, 4, [
$localize`Tu y es presque ! Voyons cette droite de plus près !`,
$localize`Tu n’es pas loin ! Regardons de plus près...`,
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES }, 3, [
$localize`Dommage, tu y étais presque... Regardons de plus près cette droite !`,
$localize`Oups, laisse-moi te donner un coup de main !`,
$localize`Tu t’es trompé mais ce n’est pas grave, c’est comme ça qu’on apprend ! Je vais t’aider !`,
$localize`Oups ! Ce n’est pas celle-ci ! Je vais t’aider !`,
$localize`Oups ! Ce n’est pas ça. Laisse moi t’aider !`,
$localize`Ce n’est pas celle-ci. Regardons de plus près !`,
$localize`Appel à l’entraîneur ! Nous avons besoin d’aide par ici !`,
$localize`Oups... A côté ! Tu veux un peu d’aide ?`
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES, speed: AnswerSpeed.FAST }, 4, [
$localize`Oups ! A côté, ralentissons un peu !`,
$localize`Pas si vite, ce n’est pas celui-là ! Regardons cette droite de plus près...`,
$localize`A côté... N’hésite pas à prendre plus de temps pour calculer ton tir ! Voyons cette droite...`,
$localize`Ce n’est pas celle-là. Tu devrais peut-être aller plus doucement ?`,
], 2);
// SECOND ERROR - failed
this.addFeedbacks({ status: AnswerStatus.ERROR2ND }, 3, [
$localize`Tu y étais presque ! Courage, tu vas y arriver !`,
$localize`Oups à côté... Il faut dire que ce n’était pas facile !`,
$localize`Ce n’était pas celle-là non plus. Courage !`,
$localize`Tu t’es trompé mais ce n’est pas grave ! C’est comme ça qu’on apprend !`,
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR2ND, progressionAverage: AnswerAverage.BELOW }, 4, [
$localize`Oups... Ce n’était pas celui-là ! Courage, je suis sûre que tu vas y arriver !`,
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR2ND, progressionAverage: AnswerAverage.ABOVE }, 4, [
$localize`Non... Mais, tu mènes toujours le score, ne lâche rien !`,
$localize`Non... Mais tu restes sur la voie de la victoire ! Continue !`
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR2ND, progressionExtreme: AnswerExtreme.ALLBAD }, 5, [
$localize`Non... Mais ne t'inquiète pas, c’est en faisant des erreurs qu’on apprend !`,
$localize`Oups... Courage, je sais que tu vas y arriver !`,
$localize`Je sais que c’est dur, mais continue d'essayer ! C’est normal de faire des erreurs !`,
$localize`Ce n’est pas grave #playerName, continue ! Je sais que tu vas y arriver !`,
$localize`Non plus... Courage, tu vas finir par y arriver #playerName !`,
], 2);
this.addFeedbacks({ status: AnswerStatus.ERROR2ND, progressionExtreme: AnswerExtreme.ALLGOOD }, 5, [
$localize`Aïe ! Retournement de situation ! C’était pourtant si bien parti !`,
], 2);
// console.error("feedbacks unshuffled = ", this.feedbacks);
if (randomize) {
AppUtils.shuffleArray(this.feedbacks);
console.error("feedbacks shuffled = ", this.feedbacks);
}
}
/**
* Joueur suivant.
*/
async firstTryFailed() {
const nextPlayerContent: Array<any> = [
new ScenarioPhrase([
$localize `Ce n'est pas ça, il te reste une tentative !`
]).setRandomMode()
];
// console.log("nextPlayerContent", nextPlayerContent);
await this.runMathiaSpeech(nextPlayerContent);
}
/**
* dynamic Feedback depending of answer context - Basket + Road
*/
async dynamicFeedback(answerStatus: AnswerStatus, responseTimeInSeconds: number, award?: string, help?: AnswerNeedsHelp) {
let phrase;
const speechSequence = new Array();
const timeForSlowAnswer = 20;
console.error("responseTimeInSeconds = ", responseTimeInSeconds);
if (answerStatus !== AnswerStatus.ERROR1ST) {
this.page.showHideAward();
}
if (this.page.endOfActivity()) {
this.page.displayActivityElements(false);
speechSequence.push(
new ScenarioPhrase([
$localize`Wahou ! Quelle expédition !`,
$localize`Oui ! Quelle expédition !`,
$localize`Bravo ! Quel voyage !`,
$localize`Bien joué ! Quel cosmo-voyage !`
])
.setRandomMode()
.showAward(award)
);
} else {
const timeForFastAnswer = this.page.droiteGradueeExercices.exoType === justePointActivity.basket ? 4 : 8;
if (answerStatus === AnswerStatus.VALID1ST || answerStatus === AnswerStatus.VALID2ND) {
phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, timeForSlowAnswer, timeForFastAnswer, 5, 3);
if (this.page.currentUser.awardsCurrent.total < 6 && this.resultPhrase) {
phrase = this.resultPhrase + " " + phrase;
}
console.error(phrase);
speechSequence.push(
new ScenarioPhrase([phrase]).setRandomMode().showAward(award)
);
} else {
phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, timeForSlowAnswer, timeForFastAnswer, 5, 3, help);
speechSequence.push(
new ScenarioPhrase([phrase]).setRandomMode()
);
}
}
await this.runMathiaSpeech(speechSequence);
}
async playSoundWithAward(award?: string) {
let speechSequence;
this.page.hideBubbleText = true;
let awardSoundPromise;
if (award) {
if (award === "moon") {
awardSoundPromise = this.page.audioService.playAwardMoonSound();
} else {
awardSoundPromise = this.page.audioService.playStarSound();
}
const s = new ScenarioPhrase(" ", async() => {
await this.timeOut(500);
})
speechSequence = [s];
await this.runMathiaSpeech(speechSequence);
} else {
this.page.audioService.playAwardMoonSound();
await this.timeOut(500);
}
this.page.hideBubbleText = false;
}
/**
* Mauvaise réponse avec affichage solution
*/
async badResponseMoonWithResultBasketDynamic(answerStatus: AnswerStatus, responseTimeInSeconds: number, award?: string) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
const moonResult: Array<any> = [
new ScenarioPhrase([
phrase
],
async () => {
await this.timeOut(500);
}).setRandomMode(),
new ScenarioPhrase([
$localize`Tu as quand même gagné une clé !`,
$localize`Nous avons quand même gagné une clé !`
],
async () => {
await this.timeOut(1000);
}
)
.setRandomMode()
.showAward("moon")
];
await this.runMathiaSpeech(moonResult);
}
/**
* Mauvaise réponse avec affichage solution et question suivante
*/
async badResponseMoonWithResultNextQRoadDynamic(
resultOnTheRoad: ResultOnTheRoad,
answerStatus: AnswerStatus,
responseTimeInSeconds: number,
award?: string
) {
let promiseAnimation;
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
// TODO push to add :
const moonResult: Array<any> = [
new ScenarioPhrase(
[
phrase
],
async () => {
await promiseAnimation;
this.cabriService.hideMathia = true;
}
).setRandomMode(),
new ScenarioPhrase([
this.resultPhraseRemediation ?
$localize`Le bon placement était celui là, car ${this.resultPhraseRemediation}`
:
$localize`Le bon placement était celui là !`
], async () => {
await this.timeOut(4000);
}),
new ScenarioPhrase(
[$localize`Tu as quand même gagné une lune !`, $localize`Nous avons quand même gagné une lune !`],
async () => {
this.page.showHideAward();
await this.timeOut(2000);
}
).setRandomMode().showAward("moon"),
new ScenarioPhrase(
[
$localize`Passons à la prochaine question !`,
$localize`Voyons si nous avons plus de chance avec la prochaine question !`,
$localize`Essayons une autre question !`,
$localize`Reprenons la bonne trajectoire avec la question suivante`,
$localize`Voyons si nous pouvons trouver le résultat de la prochaine question !`
],
async () => {
await this.timeOut(1000);
}
).setRandomMode()
];
promiseAnimation = this.page.runAnimError(false);
await this.runMathiaSpeech(moonResult);
}
ttsFraction(fraction: Fraction) {
var unites = new Array(
$localize`zéro`,
$localize`un`,
$localize`deux`,
$localize`trois`,
$localize`quatre`,
$localize`cinq`,
$localize`six`,
$localize`sept`,
$localize`huit`,
$localize`neuf`,
$localize`dix`,
$localize`onze`,
$localize`douze`,
$localize`treize`,
$localize`quatorze`,
$localize`quinze`,
$localize`seize`
);
var soixante = $localize`soixante`;
var quatrevingt = $localize`quatre-vingt`;
var dizaines = new Array(
"",
unites[10],
$localize`vingt`,
$localize`trente`,
$localize`quarante`,
$localize`cinquante`,
soixante,
soixante,
quatrevingt,
quatrevingt
);
var mul = new Array(
$localize`cent`,
$localize`mille`,
$localize`million`,
$localize`milliard`,
$localize`billion`,
$localize`JeNeSaisPas`
);
var pp = new Array(100, 1000, 1000000, 1000000000, 1000000000000, 1000000000000000);
var tiret = "-";
var et = " et ";
var espace = " ";
var pluriel = "s";
function getCardinal(n, debut) {
n = Math.abs(Number(n));
if ("" + n == "NaN") return "";
var j = 6;
while (j--) {
var z = Number(Math.floor(n / pp[j]));
if (z > 0) {
var r = n % pp[j];
if (j < 2 && z == 1) {
if (r > 0) return mul[j] + espace + getCardinal(r, debut);
return mul[j];
}
var s = getCardinal(z, false) + espace + mul[j];
if (r > 0) return s + espace + getCardinal(r, debut);
if (debut && j == 0) return s + pluriel;
return s;
}
}
if (n < 17) return unites[n];
var ndix = Number(Math.floor(n / 10));
var d = dizaines[ndix];
n = n % 10;
if (ndix == 7 || ndix == 9) {
if (ndix == 7 && n == 1) return d + et + unites[11];
if (n < 7) return d + tiret + unites[n + 10];
return d + tiret + getCardinal(n + 10, debut);
}
if (n == 0) {
if (debut && ndix == 8) return d + pluriel;
return d;
}
if (n == 1 && ndix != 8) return d + et + unites[n];
return d + tiret + unites[n];
}
function getOrdinal(x) {
switch (x) {
case 2:
return $localize`demi`;
break;
case 3:
return $localize`tiers`;
break;
case 4:
return $localize`quart`;
break;
default:
x = Math.abs(Number(x));
if ("" + x == "NaN" || x == 0) return "";
var t = getCardinal(x, false);
var s = t.substring(t.length - 1, t.length);
if (s == "f") t = t.substr(0, t.length - 1) + "v";
else if (s == "e") t = t.substr(0, t.length - 1);
else if (s == "q") t = t + "u";
return t + $localize`ième`;
}
}
return fraction.numerateur + " " + getOrdinal(fraction.denominateur);
}
/**
* @ignore
* message before the user starts a new question for "calcul mental"
*/
async readCurrentOperationNormal() {
const content: Array<any> = [new ScenarioPhrase([this.page.readCurrentOperation(this.page.setOperationMode)]).hideBubble()];
await this.runMathiaSpeech(content);
}
/**
* @ignore
* message before the user starts a new question for "résolution de problème"
*/
async readCurrentOperationProbleme() {
const phrases = this.page.cabriService.currentExercice.probleme.consigne.split(".");
const content: Array<any> = [];
if (!this.page.failure) {
phrases.forEach(element => {
content.push(new ScenarioPhrase([element]).hideBubble());
});
} else {
content.push(new ScenarioPhrase([phrases[phrases.length - 1]]).hideBubble());
}
await this.runMathiaSpeech(content);
}
async readConsigne(consigne: string, consigne2?: string, isFeedback = false) {
const s1 = new ScenarioPhrase([consigne]).keepBubbleOn().disableSkipButton();
if(isFeedback){
s1.isFeedback = true;
}
const speechSequence: Array<any> = [s1];
if (consigne2) {
const s2 = new ScenarioPhrase([consigne2]).keepBubbleOn().disableSkipButton();
if(isFeedback){
s2.isFeedback = true;
}
speechSequence.push(s2);
}
await this.runMathiaSpeech(speechSequence);
}
}