File

src/app/models/scenario-furet.ts

Constructor

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

Methods

populateScenario
populateScenario(randomize: boolean)

Creates feedbacks for calcul mental on top of general feedbacks

Returns: void
updateVariables
updateVariables()
Returns: void
playSoundWithAward
playSoundWithAward(award: AwardsType, success: boolean)
Returns: void
goodResponseWithAwardAfterRetry
goodResponseWithAwardAfterRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)

Bonne réponse après une première erreur + ajout de l'award au starboard + starboard trigger en flat

Returns: void
goodResponseWithAward
goodResponseWithAward(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)

Affichage récompense (flat / holoMode) + message relatif

Returns: void
badResponseRetry
badResponseRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number)

Mauvaise réponse : réessaye !

Returns: void
badResponseMoonWithResult
badResponseMoonWithResult(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)

Mauvaise réponse deuxième tentative. Affichage du bon résultat

Returns: void
badResponseMoonWithResultNextQ
badResponseMoonWithResultNextQ(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)

Mauvaise réponse deuxième tentative. Affichage du bon résultat. Question suivante.

Returns: void
playIntroShort
playIntroShort()

Introduction - Long version
Short version of play intro mentioning answer speed

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
addSimple
addSimple()

Consigne addition simple

Returns: void
substractSimple
substractSimple()

Consigne soustraction simple 2

Returns: void
continueAddSolo
continueAddSolo()

Question suivante (addition)

Returns: void
continueSubstractSolo
continueSubstractSolo()

Question suivante (soustraction)

Returns: void
countAddSimple
countAddSimple()

Consigne addition simple 2

Returns: void
countSubstractSimple
countSubstractSimple()

Consigne soustraction simple

Returns: void

Properties

Public page
page: JeudufuretPage
import { PlayTTSService } from "src/app/services/play-tts.service";
import { ChangeDetectorRef } from "@angular/core";
import { JeudufuretPage } from "../page/jeudufuret/jeudufuret.page";
import { AccountService } from "../services/account.service";
import { CabriDataService } from "../services/cabri-data.service";
import { GlobalService } from "../services/global.service";
import { ScenarioPhrase } from "./scenario-phrase";
import { ScenarioCabri } from "./scenario-cabri";
import { AnswerAverage, AnswerNeedsHelp, AnswerSpeed, AnswerStatus } from "./activity-answer";
import { AppUtils } from "../app-utils";
import { AwardsType } from "./enums/awards";

export class ScenarioFuret extends ScenarioCabri {
	public page: JeudufuretPage;

	constructor(
		cabri: CabriDataService,
		accountService: AccountService,
		globalService: GlobalService,
		page: any,
		cd: ChangeDetectorRef,
		ttsService: PlayTTSService
	) {
		super(cabri, accountService, globalService, page, cd, ttsService);
	}

	/**
	 * Creates feedbacks for calcul mental on top of general feedbacks
	 */
	populateScenario(randomize?: boolean) {
		super.populateScenario(randomize);
		// SUCCESS 1ST TRY
		// SLOW
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.SLOW },
			2,
			[
				$localize`Oui ! Tu as bien calculé ton saut !`,
				$localize`Un petit pas pour toi, un grand pas pour ton apprentissage !`,
				$localize`Youpi, tu as trouvé la solution !`
			],
			2
		);
		// NORMAL
		this.addFeedbacks({ success: true }, 2, [
			$localize`Bravo #playerName ! Tu as gagné une #award !`,
			$localize`Et encore une #award ! Youpi !`,
			$localize`Quelle giga-réponse ! Bravo`,
			$localize`Hop ! Une #award ! Super !`,
			$localize`Oui #playerName, bien joué !`,
			$localize`Youpi ! Une #award !`,
			$localize`Une #award de plus au tableau ! Super !`,
			$localize`Oui ! Bravo #playerName !`,
			$localize`Et hop ! Une #award en plus !`,
			$localize`Méga-boulonique cette réponse !`,
			$localize`Youpi ! Une #award de gagnée !`,
			$localize`Et une #award en plus pour ta collection !`,
			$localize`Oui ! Une nouvelle constellation en vue !`,
			$localize`Tiens ! Voila une #award pour compléter ta collection !`
		]);
		// FAST
		this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST }, 2, [
			$localize`Wahou ! Tu réfléchis plus vite que la lumière !`,
			$localize`Aussi rapide qu’une étoile filante !`,
			$localize`Lumino-fantastique !`,
			$localize`Supra-luminique !`,
			$localize`Vitesse lumière !`,
			$localize`Quel saut #playerName !`,
			$localize`Wahou ! Toutes les planètes s’alignent sur ton passage !`,
			$localize`Tu réfléchis plus vite que la lumière !`,
			$localize`Quelle maîtrise du comptage cosmique !`,
			$localize`Magnifique saut !`,
			$localize`Quelle cosmo-réponse ! Tu es supra-luminique !`,
			$localize`Tu maîtrises les nombres à la perfection #playerName !`,
			$localize`Par Toutatis ! Quelle maîtrise !`
		]);
		// PROGRESSION ABOVE AVERAGE
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.ABOVE },
			2,
			[$localize`Je suis impressionnée ! Tu enchaînes les planètes à la perfection !`],
			2
		);
		// PROGRESSION BELOW AVERAGE
		// this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.BELOW }, 2, [
		// 	$localize`TODO?`
		// ], 2);
		// PROGRESSION NO ERRORS TILL THEN
		// this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLGOOD }, 3, [
		// 	$localize`TODO?`
		// ], 2);
		// PROGRESSION ONLY ERRORS TILL THEN
		// this.addFeedbacks({ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLBAD }, 3, [
		// 	$localize`TODO?`
		// ], 2);
		// PROGRESSION NO ERRORS TILL THEN - FAST ANSWER
		// this.addFeedbacks({ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST, progressionExtreme: AnswerExtreme.ALLGOOD }, 4, [
		// 	$localize`TODO?`
		// ], 2);

		// SUCCESS 2ND TRY
		this.addFeedbacks(
			{ status: AnswerStatus.VALID2ND },
			2,
			[$localize`Bravo #playerName ! Tu as remis le cap sur la bonne planète !`],
			2
		);
		// this.addFeedbacks({ status: AnswerStatus.VALID2ND, progressionExtreme: AnswerExtreme.ALLBAD }, 3, [
		// 	$localize`TODO?`
		// ], 2);
		// this.addFeedbacks({ status: AnswerStatus.VALID2ND, progressionExtreme: AnswerExtreme.ALLGOOD }, 3, [
		// 	$localize`TODO?`
		// ], 2);

		// ERRORS
		// FIRST ERROR - retry without help
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.NO },
			2,
			[
				$localize`Oups ! La soucoupe bug ! Essaye encore !`,
				$localize`Oups, ce n’est pas la bonne réponse... Essaye encore !`,
				$localize`Tu t’es trompé mais ce n’est pas grave, c’est comme ça qu’on apprend ! Essaye encore !`,
				$localize`Ouloulou ! Ce n’est pas ça... Essaye encore !`,
				$localize`Oups ! Ce n’est pas ça. Essayons à nouveau !`,
				$localize`Oups... J’aimerais pouvoir te dire que tu as trouvé, mais ce n’est pas ça !`,
				$localize`Oups ! Ce n’est pas ça ! Essaye encore une fois !`,
				$localize`Tu y es presque, je te laisse une chance de te corriger !`,
				$localize`Sauve qui peut ! Le vaisseau part à la dérive, reprenons vite la barre !`,
				$localize`Appel à la base ! Il y a des turbulences sur le chemin ! Reprenons le cap !`,
				$localize`Oh non... Nous voilà pris dans une tempête inter-sidérale ! Il faut se rattraper !`
			],
			2
		);
		// SECOND ERROR - failed
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR2ND },
			2,
			[
				$localize`Tu y étais presque ! Pas facile ce saut !`,
				$localize`Ce n'est pas ça... Il faut dire qu’elle est difficile celle-là !`,
				$localize`Non... Pas facile !`,
				$localize`Tonnerre de Brest ! Ce n’est pas ça... Je vais te montrer !`,
				$localize`Attention, tu as visé la mauvaise planète !`
			],
			2
		);

		// TODO => special class for not answer phrases using same mechanism :
		// this.addFeedbacks({ status: FuretSpecial.VARIABLECHANGE }, 2, [
		// 	$localize`Oh ! Attention les nombres ont changé !`,
		// 	$localize`Oh ! Les nombres ont encore changé !`
		// ], 2);

		// console.error("feedbacks unshuffled = ", this.feedbacks);
		if (randomize) {
			AppUtils.shuffleArray(this.feedbacks);
			// console.error("feedbacks shuffled = ", this.feedbacks);
		}
	}

	async updateVariables() {
		const speechSequence = [
			new ScenarioPhrase([
				$localize`Oh ! Attention les nombres ont changé !`,
				$localize`Oh ! Les nombres ont changé !`,
				$localize`Ah ! Les nombres ont changé !`
			]).setRandomMode()
		];
		await this.runMathiaSpeech(speechSequence);
	}

	async playSoundWithAward(award: AwardsType, success?: boolean) {
		let speechSequence;
		if (award) {
			this.page.showHideAward(2000, award);
			this.page.updatePlayerAndTeamStarboards(award);
		}
		if (this.page.endOfActivity()) {
			this.page.hideBubbleText = false;
			speechSequence = [
				new ScenarioPhrase([
					$localize`Wahou ! Quelle expédition !`,
					$localize`Quel voyage nous avons fait ensemble !`,
					$localize`Oui ! Quelle expédition !`,
					$localize`Bravo ! Quel voyage !`,
					$localize`Quel voyage super-numérique ! Bien joué !`,
					$localize`Quel cosmo-voyage !`
				])
					.setRandomMode()
					.showAward(award)
			];
			await this.runMathiaSpeech(speechSequence);
		} else {
			this.page.hideBubbleText = true;
			let awardSoundPromise;
			if (!award || (award === "moon" && !success)) {
				awardSoundPromise = this.page.audioService.playAwardMoonSound();
			} else {
				awardSoundPromise = this.page.audioService.playStarSound();
			}
			if (award) {
				speechSequence = [new ScenarioPhrase(" ", async() => {
					await awardSoundPromise;
				}).showAward(award)];
			} else {
				this.page.hideBubbleText = false;
				speechSequence = [new ScenarioPhrase("Essaye encore !", async() => {
				})];
			}
			await this.runMathiaSpeech(speechSequence);
			this.page.hideBubbleText = false;
		}
	}

	/**
	 * Bonne réponse après une première erreur + ajout de l'award au starboard + starboard trigger en flat
	 */
	async goodResponseWithAwardAfterRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string) {
		// if (this.cabriService.holoMode === "0") {
		// ?
		this.page.showHideAward(2000, award);
		// }
		const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
		this.page.updatePlayerAndTeamStarboards(award);
		let speechSequence = [new ScenarioPhrase([phrase]).showAward(award)];
		if (this.page.endOfActivity()) {
			speechSequence = [
				new ScenarioPhrase([
					$localize`Oui ! Quel rattrapage pour finir l’expédition !`,
					$localize`Bravo ! Magnifique rattrapage pour finir l’expédition !`
				])
					.setRandomMode()
					.showAward(award)
			];
		}
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Affichage récompense (flat / holoMode) + message relatif
	 */
	async goodResponseWithAward(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string) {
		let speechSequence: any;
		this.page.showHideAward(2000, award);
		const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
		this.page.updatePlayerAndTeamStarboards(award);
		speechSequence = [new ScenarioPhrase([phrase]).setRandomMode().showAward(award)];
		if (this.page.endOfActivity()) {
			speechSequence = [
				new ScenarioPhrase([
					$localize`Wahou ! Quelle expédition !`,
					$localize`Quel voyage nous avons fait ensemble !`,
					$localize`Oui ! Quelle expédition !`,
					$localize`Bravo ! Quel voyage !`,
					$localize`Quel voyage super-numérique ! Bien joué !`,
					$localize`Quel cosmo-voyage !`
				])
					.setRandomMode()
					.showAward(award)
			];
		}
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Mauvaise réponse : réessaye !
	 */
	async badResponseRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number) {
		const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, null, 20, 4, 5, 3);
		const speechSequence = [new ScenarioPhrase([phrase]).setRandomMode()];
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Mauvaise réponse deuxième tentative. Affichage du bon résultat
	 */
	async badResponseMoonWithResult(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string) {
		const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);

		const opSign = Number(this.cabriService.currentActivity.currentVariables["v-cursor-op"]) === 1 ? "+" : "-";
		// TTS need text not symbols
		let opSignTTS = opSign.replace("−", $localize`:operationSign:moins`);
		opSignTTS = opSignTTS.replace("-", $localize`:operationSign:moins`);
		opSignTTS = opSignTTS.replace("+", $localize`:operationSign:plus`);

		const endResult = this.page.goodResult.toString();
		// TTS "une" -> "un":
		let nb1TTS = this.cabriService.nb1.toString();
		if (nb1TTS === "1") {
			nb1TTS = nb1TTS.replace("1", $localize`:number:un`);
		}
		let nb2TTS = this.cabriService.nb2.toString();
		if (nb2TTS === "1") {
			nb2TTS = nb2TTS.replace("1", $localize`:number:un`);
		}
		let endResultTTS = endResult;
		if (endResultTTS === "1") {
			endResultTTS = endResultTTS.replace("1", $localize`:number:un`);
		}

		console.log("this.cabriService.nb1", this.cabriService.nb1);
		console.log("opSign", opSign);
		console.log("this.cabriService.nb2", this.cabriService.nb2);
		console.log("endResult", endResult);
		const moonResult: Array<any> = [
			new ScenarioPhrase([phrase], async () => {
				this.page.setInputResponse(this.page.goodResult.toString());
				this.page.showInputResponse();
			}).setRandomMode(),
			new ScenarioPhrase(
				[
					$localize`Regarde, la bonne réponse était : ${this.cabriService.nb1} ${opSign} ${this.cabriService.nb2} égale ${endResult} !`
				],
				async () => {
					await this.timeOut(3000);
					this.page.showHideAward(2100, "moon");
					await this.timeOut(500);
					this.page.switchFuretAward(false);
					this.page.updatePlayerAndTeamStarboards("moon");
				},
				[$localize`Regarde, la bonne réponse était: ${nb1TTS} ${opSignTTS} ${nb2TTS} égale ${endResultTTS}!`]
			),
			new ScenarioPhrase(
				[$localize`Tu as quand même gagné une lune !`, $localize`Nous avons quand même gagné une lune !`],
				async () => {
					// await this.timeOut(1000);
				}
			).setRandomMode()
		];
		await this.runMathiaSpeech(moonResult);
	}

	/**
	 * Mauvaise réponse deuxième tentative. Affichage du bon résultat. Question suivante.
	 */
	async badResponseMoonWithResultNextQ(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string) {
		const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
		const opSign = Number(this.cabriService.currentActivity.currentVariables["v-cursor-op"]) === 1 ? "+" : "−";
		// TTS need text not symbols
		let opSignTTS = opSign.replace("−", $localize`:operationSign:moins`);
		opSignTTS = opSignTTS.replace("-", $localize`:operationSign:moins`);
		opSignTTS = opSignTTS.replace("+", $localize`:operationSign:plus`);

		const endResult = this.page.goodResult.toString();
		// TTS "une" -> "un":
		let nb1TTS = this.cabriService.nb1.toString();
		if (nb1TTS === "1") {
			nb1TTS = nb1TTS.replace("1", $localize`:number:un`);
		}
		let nb2TTS = this.cabriService.nb2.toString();
		if (nb2TTS === "1") {
			nb2TTS = nb2TTS.replace("1", $localize`:number:un`);
		}
		let endResultTTS = endResult;
		if (endResultTTS === "1") {
			endResultTTS = endResultTTS.replace("1", $localize`:number:un`);
		}

		const moonResult = new Array();
		if (this.page.sonicAward) {
			moonResult.push(new ScenarioPhrase([" "], async () => {
					await this.timeOut(500);
					this.page.setInputResponse(this.page.goodResult.toString());
					this.page.showInputResponse();
				}).hideBubble());
		} else {
			moonResult.push(new ScenarioPhrase([phrase], async () => {
				this.page.setInputResponse(this.page.goodResult.toString());
				this.page.showInputResponse();
			}).setRandomMode());
		}
		moonResult.push(new ScenarioPhrase(
				[
					$localize`Regarde, la bonne réponse était : ${this.cabriService.nb1} ${opSign} ${this.cabriService.nb2} égale ${endResult} !`
				],
				async () => {
					await this.timeOut(2000);
					this.page.showHideAward(3000, "moon");
					setTimeout(() => {
						this.page.switchFuretAward(false);
						this.page.updatePlayerAndTeamStarboards("moon");
					}, 1000);
				},
				[$localize`Regarde, la bonne réponse était: ${nb1TTS}, ${opSignTTS}, ${nb2TTS}, égale ${endResultTTS}!`]
			));
		moonResult.push(
			new ScenarioPhrase(
				[$localize`Tu as quand même gagné une lune !`, $localize`Nous avons quand même gagné une lune !`]).setRandomMode()
		);
		moonResult.push(
			new ScenarioPhrase([
				$localize`Passons à la prochaine planète !`,
				$localize`Voyons si nous avons plus de chance avec la prochaine planète !`,
				$localize`Essayons une autre planète !`,
				$localize`Allez, cap sur la prochaine planète !`,
				$localize`La prochaine planète va te donner la chance de te rattraper !`,
				$localize`Reprenons la bonne trajectoire vers la planète suivante`,
				$localize`Retournons à la barre, ce n’est pas fini !`,
				$localize`C’est parti pour un nouveau bond !`,
				$localize`Rectifions le cap avec la prochaine trajectoire !`,
				$localize`Allons chercher une étoile sur la prochaine planète !`
			], () => {
				this.page.passCurrentQuestion();
			}).setRandomMode()
		)
		this.page.readContinueAddPhrase = true;
		await this.runMathiaSpeech(moonResult);
	}

	/**
	 * Introduction - Long version
	 */
	// async playIntro() {
	// 	let firstMessage;
	// 	let players: any = this.accountService.team.map(student => student.name);
	// 	players = players.join(" ! ");

	// 	// Verbs:
	// 	let commencerContinuer;
	// 	let reDécoller;
	// 	let rePartons;
	// 	let reVoir;
	// 	let reDecollons;

	// 	commencerContinuer = $localize`commencer`;
	// 	reDécoller = $localize`décoller`;
	// 	rePartons = $localize`partons`;
	// 	reVoir = $localize`voir`;
	// 	reDecollons = $localize`décollons`;

	// 	// First message:
	// 	// FIRSTIME:
	// 	if (this.accountService.team.length > 1) {
	// 		// team:
	// 		firstMessage = [
	// 			$localize`${players}:allPlayersNames: ! Bienvenue à bord !`,
	// 			$localize`Salutations voyageurs ! C’est super boulonique de vous ${reVoir} ici !`
	// 		];
	// 	} else if (this.accountService.team.length === 1) {
	// 		firstMessage = [
	// 			$localize`Bienvenue à bord ${this.page.currentUser.name}:playerName: !`,
	// 			$localize`Salutations voyageur ! C’est super boulonique de te ${reVoir} ici !`
	// 		];
	// 	}

	// 	// SEQUENCE:
	// 	if (this.accountService.team.length > 1) {
	// 		// MULTI:
	// 		let messageConsigne;
	// 		if (this.page.operationMode === "1") {
	// 			messageConsigne = $localize`Pour piloter, il faut ajouter ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
	// 		} else if (this.page.operationMode === "2") {
	// 			messageConsigne = $localize`Pour piloter, il faut enlever ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
	// 		}
	// 		const introTeam: Array<any> = [
	// 			new ScenarioPhrase(firstMessage).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Prêts pour ${reDécoller} vers le jeu du furet intergalactique ?`,
	// 				$localize`Attachez votre ceinture, nous ${rePartons} jouer au jeu du furet intergalactique !`,
	// 				$localize`Tout le monde est prêt ? Parfait, ${reDecollons} vers le jeu du furet intergalactique !`,
	// 				$localize`Vous êtes prêts ? Alors plein gaz sur le jeu du furet intergalactique !`
	// 			]).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Dans ce jeu, vous allez devoir piloter la fusée tous les ${this.accountService.team.length}:numberOfPlayers: pour explorer les planètes une par une !`
	// 			]),
	// 			new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
	// 			new ScenarioPhrase([$localize`Et surtout apprendre à compter !`], async () => {
	// 				await this.timeOut(1000);
	// 			}),
	// 			new ScenarioPhrase([messageConsigne])
	// 		];
	// 		await this.runMathiaSpeech(introTeam);
	// 		// end intro team
	// 	} else {
	// 		// intro SOLO:
	// 		let messageConsigne;
	// 		if (this.page.operationMode === "1") {
	// 			messageConsigne = $localize`Pour piloter, il faut ajouter ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
	// 		} else if (this.page.operationMode === "2") {
	// 			messageConsigne = $localize`Pour piloter, il faut enlever ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
	// 		}
	// 		const introSolo: Array<any> = [
	// 			new ScenarioPhrase(firstMessage).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Attention au départ ! Nous ${reDecollons} vers le jeu du furet intergalactique !`,
	// 				$localize`Attache ta ceinture, nous ${rePartons} jouer au jeu du furet intergalactique !`,
	// 				$localize`Notre fusée est prête à ${reDécoller} vers le jeu du furet intergalactique ! On y va ?`
	// 			]).setRandomMode(),
	// 			new ScenarioPhrase([$localize`Dans ce jeu, tu vas piloter la fusée pour explorer les planètes une par une !`]),
	// 			new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
	// 			new ScenarioPhrase([$localize`Et surtout apprendre à compter !`], async () => {
	// 				await this.timeOut(1000);
	// 			}),
	// 			new ScenarioPhrase([messageConsigne]),
	// 			new ScenarioPhrase([$localize`Attention !`]),
	// 			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(introSolo);
	// 	}
	// }

	/**
	 * Short version of play intro mentioning answer speed
	 */
	async playIntroShort() {
		let introSequence: Array<any> ;
		let messageConsigne;
		const players: any = this.accountService.team.map(student => student.name).join(" ! ");
		if (this.page.operationMode === "1") {
			messageConsigne = $localize`Dans ce jeu, il faut ajouter ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
		} else if (this.page.operationMode === "2") {
			messageConsigne = $localize`Dans ce jeu, il faut enlever ${this.page.pas} au nombre de la planète où se trouve la fusée.`;
		}
		if (this.page.currentTeam.length > 1) {
			// MULTI:
			introSequence = [
				new ScenarioPhrase([
					$localize`${players}:allPlayersNames: ! Bienvenue dans le Jeu du Furet !`
				]).setRandomMode(),
				new ScenarioPhrase(messageConsigne),
				new ScenarioPhrase($localize`Plus vous répondrez vite, plus vous aurez de chances de gagner des étoiles-filantes !`)
			];
			// scenario multi continues in this.nextPlayerInit()
		} else {
			// SOLO:
			introSequence = [
				new ScenarioPhrase([
					$localize`${this.page.currentUser.name}:playerName: ! Bienvenue dans le Jeu du Furet !`
				]).setRandomMode(),
				new ScenarioPhrase(messageConsigne),
				new ScenarioPhrase($localize`Si tu répond vite , plus tu auras de chances de gagner des étoiles-filantes !`),
				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(introSequence);
	}

	/**
	 * 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 jeu du furet intergalactique !`])
		];
		await this.runMathiaSpeech(playRestart);
	}

	/**
	 * Lancement de l’activité / 1er joueur
	 */
	async nextPlayerInit() {
		const nextPlayerInit: Array<any> = [
			new ScenarioPhrase([
				$localize`C’est toi qui commences ${this.page.currentUser.name} !`,
				$localize`A toi de commencer ${this.page.currentUser.name} !`,
				$localize`${this.page.currentUser.name}:playerName:, à toi l’honneur de répondre en premier !`,
				$localize`${this.page.currentUser.name}:playerName: ! C’est à toi de commencer !`
			]).setRandomMode(),
			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(nextPlayerInit);
	}
	/**
	 * Joueur suivant.
	 */
	async nextPlayerSwitch() {
		let majAjouteEnleve: string;
		let majRajouteEnleve: string;
		let ajouteEnleve: string;
		let majPlusMoins: string;
		let plusMoins: string;
		const pas = this.page.pas.toString();
		let pasTTS: string;
		if (pas === "1") {
			pasTTS = "un";
		} else {
			pasTTS = pas;
		}
		if (this.page.operationMode === "1") {
			majRajouteEnleve = $localize`Rajoute `;
			majAjouteEnleve = $localize`Ajoute `;
			ajouteEnleve = $localize`ajoute `;
			majPlusMoins = $localize`Plus `;
			plusMoins = $localize` plus `;
		} else if (this.page.operationMode === "2") {
			majRajouteEnleve = $localize`Enlève `;
			majAjouteEnleve = $localize`Enlève `;
			ajouteEnleve = $localize`enlève `;
			majPlusMoins = $localize`Moins `;
			plusMoins = $localize` moins `;
		}
		const nextPlayerContent: Array<any> = [
			new ScenarioPhrase(
				[
					$localize`${majRajouteEnleve + pas} ${this.page.currentUser.name}:playerName: !`,
					$localize`${majAjouteEnleve + pas} ${this.page.currentUser.name}:playerName: !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majAjouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majAjouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} ?`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} ?`,
					$localize`On continue ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pas} !`,
					$localize`Continuons ! ${this.page.currentUser.name}:playerName: ! ${majAjouteEnleve + pas} !`,
					$localize`Continue ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`On continue ! ${this.page.currentUser.name}:playerName: ?`,
					$localize`Continuons ! ${this.page.currentUser.name}:playerName: ?`,
					$localize`Continue ${this.page.currentUser.name}:playerName: !`,
					$localize`A ${this.page.currentUser.name}:playerName: de piloter !`,
					$localize`Vas-y ${this.page.currentUser.name}:playerName:, à toi !`,
					$localize`Vas-y ${this.page.currentUser.name}:playerName:, ${plusMoins + pas} !`,
					$localize`A toi ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`A ton tour ${this.page.currentUser.name}:playerName: !`,
					$localize`A toi ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! A toi !`,
					$localize`${this.page.currentUser.name}:playerName: ? A toi de jouer !`,
					$localize`A ${this.page.currentUser.name}:playerName: de piloter !`,
					$localize`${this.page.currentUser.name}:playerName: aux commandes ! ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majPlusMoins + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ? `,
					$localize`A ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pas} !`,
					$localize`A ${this.page.currentUser.name}:playerName: maintenant ! ${majPlusMoins + pas} !`,
					$localize`${this.page.currentUser.name}:playerName:, à toi ! ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName:, à toi ! ${majAjouteEnleve + pas} !`,
					$localize`Quel voyage ! A toi ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pas} !`,
					$localize`${this.page.currentUser.name}:playerName: ?`,
					$localize`A ${this.page.currentUser.name}:playerName: !`
				],
				null,
				[
					$localize`${majRajouteEnleve + pasTTS} ${this.page.currentUser.name}:playerName: !`,
					$localize`${majAjouteEnleve + pasTTS} ${this.page.currentUser.name}:playerName: !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majAjouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majAjouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} ?`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} ?`,
					$localize`On continue ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pasTTS} !`,
					$localize`Continuons ! ${this.page.currentUser.name}:playerName: ! ${majAjouteEnleve + pasTTS} !`,
					$localize`Continue ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`On continue ! ${this.page.currentUser.name}:playerName: ?`,
					$localize`Continuons ! ${this.page.currentUser.name}:playerName: ?`,
					$localize`Continue ${this.page.currentUser.name}:playerName: !`,
					$localize`A ${this.page.currentUser.name}:playerName: de piloter !`,
					$localize`Vas-y ${this.page.currentUser.name}:playerName:, à toi !`,
					$localize`Vas-y ${this.page.currentUser.name}:playerName:, ${plusMoins + pasTTS} !`,
					$localize`A toi ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`A ton tour ${this.page.currentUser.name}:playerName: !`,
					$localize`A toi ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! A toi !`,
					$localize`${this.page.currentUser.name}:playerName: ? A toi de jouer !`,
					$localize`A ${this.page.currentUser.name}:playerName: de piloter !`,
					$localize`${this.page.currentUser.name}:playerName: aux commandes ! ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ? ${majPlusMoins + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ? `,
					$localize`A ${this.page.currentUser.name}:playerName: ! ${majPlusMoins + pasTTS} !`,
					$localize`A ${this.page.currentUser.name}:playerName: maintenant ! ${majPlusMoins + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName:, à toi ! ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName:, à toi ! ${majAjouteEnleve + pasTTS} !`,
					$localize`Quel voyage ! A toi ${this.page.currentUser.name}:playerName: ! ${majRajouteEnleve + pasTTS} !`,
					$localize`${this.page.currentUser.name}:playerName: ?`,
					$localize`A ${this.page.currentUser.name}:playerName: !`
				]
			).setRandomMode()
		];
		await this.runMathiaSpeech(nextPlayerContent);
	}

	/**
	 * Consigne addition simple
	 */
	async addSimple() {
		const speechSequence = [
			new ScenarioPhrase([
				$localize`Rajoute ${this.page.pas}:number: !`,
				$localize`On continue !`,
				$localize`Continuons !`,
				$localize`Continue !`,
				$localize`Plus ${this.page.pas}:number: ?`,
				$localize`Plus ${this.page.pas}:number: !`,
				$localize`Et ${this.page.pas}:number: !`,
				$localize`Et ${this.page.pas}:number: ?`
			])
		];
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Consigne soustraction simple 2
	 */
	async substractSimple() {
		const speechSequence = [
			new ScenarioPhrase([
				$localize`Enlève ${this.page.pas}:number: !`,
				$localize`Moins ${this.page.pas}:number: ?`,
				$localize`Moins ${this.page.pas}:number: !`,
				$localize`On continue !`,
				$localize`Continuons !`,
				$localize`Continue !`,
				$localize`Vas-y continue !`
			]).setRandomMode()
		];
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Question suivante (addition)
	 */
	async continueAddSolo() {
		const speechSequence = [
			new ScenarioPhrase([
				$localize`Rajoute ${this.page.pas}:number: !`,
				$localize`On continue !`,
				$localize`Continuons !`,
				$localize`Continue !`,
				$localize`Plus ${this.page.pas}:number: ?`,
				$localize`Plus ${this.page.pas}:number: !`,
				$localize`Et ${this.page.pas}:number: !`,
				$localize`Et ${this.page.pas}:number: ?`
			]).setRandomMode()
		];
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Question suivante (soustraction)
	 */
	async continueSubstractSolo() {
		const speechSequence = [
			new ScenarioPhrase([
				$localize`Enlève ${this.page.pas}:number: !`,
				$localize`Moins ${this.page.pas}:number: ?`,
				$localize`Moins ${this.page.pas}:number: !`,
				$localize`On continue !`,
				$localize`Continuons !`,
				$localize`Continue !`,
				$localize`Vas-y continue !`
			]).setRandomMode()
		];

		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Consigne addition simple 2
	 */
	async countAddSimple() {
		const speechSequence = [new ScenarioPhrase([$localize`Compte en rajoutant ${this.page.pas}:number: !`])];
		await this.runMathiaSpeech(speechSequence);
	}

	/**
	 * Consigne soustraction simple
	 */
	async countSubstractSimple() {
		const speechSequence = [new ScenarioPhrase([$localize`Compte en enlevant ${this.page.pas}:number: !`]).setRandomMode()];
		await this.runMathiaSpeech(speechSequence);
	}
}

results matching ""

    No results matching ""