File

src/app/models/scenario-droite-graduee.ts

Description

Scénarios pour l’activité Calcul mental

Constructor

constructor(cabri: CabriDataService, accountService: AccountService, globalService: GlobalService, page: any, cd: ChangeDetectorRef, ttsService: any)

Methods

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

Properties

help2NumberSeparation
help2NumberSeparation: string
Public page
page: DroiteGradueePage
resultPhrase
resultPhrase: string
resultPhraseRemediation
resultPhraseRemediation: string
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);
	}
}

results matching ""

    No results matching ""