File

src/app/models/scenario-heure.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
dynamicFeedback
dynamicFeedback(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string, help: AnswerNeedsHelp)

dynamic Feedback depending of answer context

Returns: void
playSoundWithAward
playSoundWithAward(award: any)
Returns: void
endOfActivity
endOfActivity()
Returns: void
showAward
showAward(award: string)

Affichage récompense

Returns: void
tellMe
tellMe()

Consigne simple.

Returns: void
soloPlayerContinue
soloPlayerContinue()

Un seul joueur. Question suivante.

Returns: void
soloPlayerContinueSonic
soloPlayerContinueSonic()

Un seul joueur. Question suivante. Rapide

Returns: void
whatTimeIsIt
whatTimeIsIt()

Consigne variée.

Returns: void
playIntroShort
playIntroShort()

Introduction - LEGACY
Short version of play intro

Returns: void
restartActivity
restartActivity()

Lancement de l’activité / 1er joueur

Returns: void
nextPlayerInit
nextPlayerInit()

Lancement de l’activité / 1er joueur

Returns: void
help
help()

Aide. affichage séquentiel des aiguilles heure et minute

Returns: void
resultWithMoon
resultWithMoon(challengeMode: boolean)

Donne la bonne réponse + lune.

Returns: void

Properties

Public page
page: HeurePage
ttsService
ttsService: any
import { AppUtils } from "src/app/app-utils";
import { PlayTTSService } from "src/app/services/play-tts.service";
import { ChangeDetectorRef } from "@angular/core";
import { HeurePage } from "../page/heure/heure.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 { AnswerStatus, AnswerSpeed, AnswerAverage, AnswerNeedsHelp, AnswerExtreme } from "./activity-answer";

export class ScenarioHeure extends ScenarioCabri {
	public page: HeurePage;

	constructor(
		cabri: CabriDataService,
		accountService: AccountService,
		globalService: GlobalService,
		page: any,
		cd: ChangeDetectorRef,
		public 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`Le temps est ton allié ! Tu as gagné une #award ! Bravo !`,
				$localize`Bravo #playerName ! Pour lire l’heure, mieux vaut prendre son temps !`,
				$localize`Oui ! Tu as trouvé le temps de répondre juste ! Et de gagner une #award !`,
				$localize`Bien joué #playerName ! Tu as su prendre le temps ! Et une #award !`,
				$localize`Un petit pas pour toi, un grand pas pour ton apprentissage ! Et une #award en plus !`
			],
			2
		);
		// NORMAL
		this.addFeedbacks(
			{ success: true },
			1,
			[
				$localize`Quelle réponse super-temporelle ! Tu as gagné une #award ! Bien joué !`,
				$localize`Oui bravo #playerName ! Tiens, une #award !`,
				$localize`Quelle chrono-réponse ! Et une #award de plus !`,
				$localize`A la bonne heure ! Bravo #playerName !`,
				$localize`Trop fort ! Tu affoles les aiguilles de l’horloge !`,
				$localize`Wahou ! Quelle maîtrise du temps ! Et une #award en plus ! `,
				$localize`Je suis impressionnée ! Tu maîtrises la lecture temporelle à la perfection !`,
				$localize`Bravo #playerName ! Tu as gagné une #award !`,
				$localize`Et 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 !`
			],
			2
		);
		// FAST
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST },
			2,
			[
				$localize`Wahou ! Aussi rapide qu'une étoile filante ! D’ailleurs... En voilà une !`,
				$localize`Incroyable ! Tu réfléchis plus vite que la trotteuse !`,
				$localize`Lumino-fantastique ! Et hop ! Une #award !`,
				$localize`Vitesse lumière ! Et une #award de gagnée !`,
				$localize`Quelle maîtrise du temps ! Et quelle vitesse ! Hop ! Une #award en plus !`,
				$localize`Supra-luminique ! Une #award pour toi !`,
				$localize`Tu maîtrises l’heure à la perfection #playerName !`,
				$localize`Et une #award de gagnée à un rythme effréné !`,
				$localize`Quelle cosmo-réponse ! Tu es supra-luminique !`,
				$localize`Par Toutatis ! Quelle maîtrise du temps !`
			],
			2
		);
		// PROGRESSION ABOVE AVERAGE
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.ABOVE },
			3,
			[
				$localize`Je suis impressionnée ! Continue comme ça et l’heure de la victoire va sonner !`,
				$localize`Super ! Ce voyage temporel est une promenade pour toi !`
			],
			2
		);
		// PROGRESSION BELOW AVERAGE
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.BELOW },
			3,
			[$localize`Bien joué #playerName ! Tu vois, tu peux y arriver !`],
			2
		);
		// PROGRESSION NO ERRORS TILL THEN
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLGOOD },
			3,
			[
				$localize`Sans faute jusqu’ici ! Joli !`,
				$localize`Wahou ! Rien ne t’arrête #playerName !`,
				$localize`Quelle série ! Et une #award en plus !`,
				$localize`Incroyable ! Jusqu’où iras-tu comme ça ?`,
				$localize`Epoustouflant #playerName !`
			],
			2
		);
		// PROGRESSION ONLY ERRORS TILL THEN
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLBAD },
			3,
			[$localize`Oui #playerName ! Bravo ! Tu as compris ! Et gagné une #award !`],
			2
		);
		this.addFeedbacks(
			{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST, progressionExtreme: AnswerExtreme.ALLGOOD },
			4,
			[
				$localize`Tu es lancé comme une fusée vers le sans faute !`,
				$localize`Joli ! Tu fais tourner les aiguilles à pleine vitesse !`,
				$localize`Quel enchaînement ! Quelle vitesse ! Et hop ! Une #award !`,
				$localize`Oui ! Attention ! Tu vas casser l’horloge à cette vitesse !`,
				$localize`Wahou ! Tu m’impressionnes #playerName ! Bravo !`,
				$localize`Incroyable ! Si tu continues tu vas t’envoler ! Comme cette #award !`,
				$localize`Oui bravo ! Plus rien ne t’arrête ! Et une #award en plus !`,
				$localize`Youhou ! C’est trop facile pour toi ! Tiens, une #award !`
			],
			2
		);
		// SUCCESS 2ND TRY
		this.addFeedbacks(
			{ status: AnswerStatus.VALID2ND },
			2,
			[
				$localize`Oui #playerName ! Bien rattrapé ! Tu as gagné une #award !`,
				$localize`Youpi ! Tu as trouvé ! Et gagné une #award ! Je suis fière de toi !`,
				$localize`Bravo ! Avec persévérance on arrive à tout ! Même toucher les étoiles !`,
				$localize`C’est bien ! Tu as su retrouver ton chemin dans ce labyrinthe temporel !`,
				$localize`Bravo ! Tu as remis le cap dans la bonne direction ! Et gagné une #award !`,
				$localize`Youpi ! Tu as retrouvé la sortie des couloirs du temps ! Une #award pour toi !`,
				$localize`Quelle réponse super-temporelle ! Bien joué #playerName !`,
				$localize`A la bonne heure ! Tu as gagné une #award !`,
				$localize`Oui ! Bravo ! Bravo ! Bravooo !`,
				$localize`Bien joué #playerName ! Quelle réponse inter-sidérale !`,
				$localize`Un petit pas pour toi, un grand pas pour ton apprentissage ! Bravo !`,
				$localize`Vers l’infini et au-delà ! Quelle trajectoire maîtrisée !`,
				$localize`Wahou ! C’est bien ça ! Tu m’impressionnes !`,
				$localize`Super-luminique ! Voila une étoile pour te récompenser de tes efforts !`,
				$localize`Super ! Tu as bien redressé la barre moussaillon !`
			],
			2
		);
		// ERRORS
		// FIRST ERROR - retry with help
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES, speed: AnswerSpeed.SLOW },
			4,
			[
				$localize`Dommage, c’est presque ça ! Regardons de plus près...`,
				$localize`Tu y es presque ! Retournons voir cette horloge !`
			],
			2
		);
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES },
			3,
			[
				$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 ça ! Pas de panique ! Je vais t’aider ! Regarde...`,
				$localize`Dommage, tu y étais presque... Regardons de plus près cette horloge !`,
				$localize`Oups, ce n’est pas la bonne réponse... Laisse moi te donner un petit coup de main !`,
				$localize`Ouloulou ! Ce n’est pas ça... Regarde ! Je vais te montrer !`,
				$localize`Oups ! La soucoupe bug ! Je vais t’aider, regarde...`,
				$localize`Mince ! On dirait que l’horloge a perdu un rouage ! Voyons cette horloge de plus près !`,
				$localize`Oups, erreur de synchronisation ! Suis moi ! Je vais t’aider, regarde !`,
				$localize`Ce n’est pas ça... Je vais te guider vers la sortie de ce labyrinthe temporel !`,
				$localize`Oups, non... Par ici les bonnes réponses ! Regarde !`,
				$localize`Erreur ! Erreur ! Appel à la base ! Envoyez nous de l’aide !`
			],
			2
		);
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES, speed: AnswerSpeed.FAST },
			4,
			[
				$localize`Pas si vite, ce n’est pas ça ! Regardons cette horloge de plus près...`,
				$localize`Ce n’est pas ça. Tu devrais aller plus doucement... Regarde !`,
				$localize`Oula ! Non... Ralentissons un peu ! Regarde !`
			],
			2
		);
		// SECOND ERROR - failed
		this.addFeedbacks(
			{ status: AnswerStatus.ERROR2ND },
			2,
			[
				$localize`Dommage, tu y étais presque...`,
				$localize`Ce n'est pas ça... Il faut dire qu’elle est difficile celle-là !`,
				$localize`Tu t’es trompé mais ce n’est pas grave, c’est comme ça qu’on apprend !`,
				$localize`Oups... J’aimerais pouvoir te dire que tu as trouvé, mais ce n’est pas ça !`,
				$localize`Mince ! On dirait que l’horloge a perdu un rouage !`,
				$localize`Oups ! La soucoupe bug !`,
				$localize`Toujours pas ça ! Pas facile...`,
				$localize`Oups ! Ce n’est pas ça !`,
				$localize`Mince... Ce n’est pas ton heure on dirait !`,
				$localize`Oups, ce n’est pas la bonne réponse...`
			],
			2
		);
		// console.error("feedbacks unshuffled = ", this.feedbacks);
		if (randomize) {
			AppUtils.shuffleArray(this.feedbacks);
			// console.error("feedbacks shuffled = ", this.feedbacks);
		}
	}

	/**
	 * dynamic Feedback depending of answer context
	 */
	async dynamicFeedback(answerStatus: AnswerStatus, responseTimeInSeconds: number, award?: string, help?: AnswerNeedsHelp) {
		let phrase;
		let speechSequence;
		if (answerStatus === AnswerStatus.VALID1ST || answerStatus === AnswerStatus.VALID2ND) {
			phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
			speechSequence = [new ScenarioPhrase([phrase]).setRandomMode().showAward(award)];
		} else {
			phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3, help);
			speechSequence = [new ScenarioPhrase([phrase]).setRandomMode()];
		}
		await this.runMathiaSpeech(speechSequence);
	}

	async playSoundWithAward(award) {
		let speechSequence;
		this.page.hideBubbleText = true;
		let awardSoundPromise;
		if (!award || award === "moon") {
			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(" ", async() => {
				// await awardSoundPromise;
			}).hideBubble()];
		}
		await this.runMathiaSpeech(speechSequence);
		this.page.hideBubbleText = false;
	}

	async endOfActivity() {
		const phrase: Array<any> = [
			new ScenarioPhrase([
				$localize`Quelle expédition !`,
				$localize`Quel voyage !`,
			]
			).setRandomMode()];
		await this.runMathiaSpeech(phrase);
	}

	/**
	 * Affichage récompense
	 */
	async showAward(award: string) {
		this.page.showHideAward(3000, award);
		setTimeout(() => {
			this.page.updatePlayerAndTeamStarboards(award);
			this.page.questionAskedDuringSession.push({ award, question: this.page.goodResult });
		}, 500);
	}

	/**
	 * Consigne simple.
	 */
	async tellMe() {
		const nextPlayerContent: Array<any> = [new ScenarioPhrase([$localize`Dis moi l'heure affichée sur l’horloge !`]).setRandomMode()];
		await this.runMathiaSpeech(nextPlayerContent);
	}

	/**
	 * Un seul joueur. Question suivante.
	 */
	async soloPlayerContinue() {
		const nextPlayerContent: Array<any> = [
			new ScenarioPhrase([
				$localize`On continue ! Quelle heure est-il ?`,
				$localize`Et maintenant... Quelle heure est-il ?`,
				$localize`Quelle heure affiche l’horloge maintenant ?`,
				$localize`Quelle heure est-il maintenant ?`,
				$localize`Continuons ! ${this.page.currentUser.name}, quelle heure est-il sur l’horloge ?`,
				$localize`Et maintenant, quelle heure lis-tu sur l’horloge ?`
			]).setRandomMode()
		];
		await this.runMathiaSpeech(nextPlayerContent);
	}

	/**
	 * Un seul joueur. Question suivante. Rapide
	 */
	 async soloPlayerContinueSonic() {
		const nextPlayerContent: Array<any> = [
			new ScenarioPhrase([
				$localize`Et maintenant ?`,
			]).setRandomMode()
		];
		await this.runMathiaSpeech(nextPlayerContent);
	}

	/**
	 * Consigne variée.
	 */
	async whatTimeIsIt() {
		const nextPlayerContent: Array<any> = [
			new ScenarioPhrase([
				$localize`Quelle heure est-il ?`,
				$localize`Quelle heure affiche l’horloge ?`,
				$localize`Quelle heure est-il sur l’horloge ?`,
				$localize`Quelle heure est-il ?`,
				$localize`Quelle heure lis-tu sur l’horloge ?`,
				$localize`Quelle est l’heure affichée sur l’horloge ?`,
				$localize`Quelle heure est-il ?`,
				$localize`Peux-tu me donner l’heure s’il te plaît ?`,
				$localize`Peux-tu me dire quelle heure il est ?`
			]).setRandomMode()
		];
		await this.runMathiaSpeech(nextPlayerContent);
	}

	/**
	 * Introduction - LEGACY
	 */
	// 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`;

	// 	// FIRSTIME:
	// 	if (this.accountService.team.length > 1) {
	// 		// team:
	// 		firstMessage = [
	// 			$localize`${players} ! 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} !`,
	// 			$localize`Salutations voyageur ! C’est super boulonique de te ${reVoir} ici !`
	// 		];
	// 	}

	// 	// SEQUENCE:
	// 	if (this.accountService.team.length > 1) {
	// 		// MULTI:
	// 		const messageConsigne = $localize`Pouvez-vous m’aider à déchiffrer cette horloge ?`;

	// 		const introTeam: Array<any> = [
	// 			new ScenarioPhrase(firstMessage).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Attention au décollage vers la galaxie de l’heure ! Prêts ? Feu... Partez !`,
	// 				$localize`J’espère que vous êtes prêts car nous ${rePartons} à la conquête de l’heure !`,
	// 				$localize`Prêts pour ${reDécoller} vers le jeu de l’horloge spatiale ?`,
	// 				$localize`Attachez votre ceinture, nous ${rePartons} jouer au jeu de l’horloge spatiale !`,
	// 				$localize`Notre fusée est prête à ${reDécoller} vers la galaxie de l’heure ! On y va ?`,
	// 				$localize`Tout le monde est prêt ? Parfait, ${reDecollons} vers le jeu de l’horloge spatiale !`,
	// 				$localize`Vous êtes prêts ? Alors plein gaz sur le jeu de l’horloge spatiale !`,
	// 				$localize`Accrochez-vous, je vous emmène direction le jeu de l’horloge spatiale !`
	// 			]).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Dans ce jeu, vous allez devoir me donner l’heure tous les ${this.accountService.team.length}.`
	// 			]),
	// 			new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
	// 			new ScenarioPhrase([$localize`Et surtout apprendre à lire l’heure !`], async () => {
	// 				await this.timeOut(1000);
	// 			}),
	// 			new ScenarioPhrase([messageConsigne])
	// 		];
	// 		await this.runMathiaSpeech(introTeam);
	// 	} else {
	// 		// SOLO:
	// 		const messageConsigne = $localize`Peux-tu m’aider à déchiffrer cette horloge ?`;
	// 		const introSolo: Array<any> = [
	// 			new ScenarioPhrase(firstMessage).setRandomMode(),
	// 			new ScenarioPhrase([
	// 				$localize`Attention au départ ! Nous ${reDecollons} vers le jeu de l’horloge spatiale !`,
	// 				$localize`Attache ta ceinture, nous ${rePartons} jouer au jeu de l’horloge spatiale !`,
	// 				$localize`Notre fusée est prête à ${reDécoller} vers le jeu de l’horloge spatiale ! On y va ?`,
	// 				$localize`Accroche-toi, je t’emmène direction le jeu de l’horloge spatiale !`,
	// 				$localize`Attention au décollage vers la galaxie de l’heure ! Prêts ? Feu... Partez !`,
	// 				$localize`Prêts pour ${reDécoller} vers le jeu de l’horloge spatiale ?`,
	// 				$localize`Notre fusée est prête à ${reDécoller} vers la galaxie de l’heure ! On y va ?`
	// 			]).setRandomMode(),
	// 			new ScenarioPhrase([$localize`Dans ce jeu, tu vas devoir me donner l’heure affichée à l’écran !`]),
	// 			new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
	// 			new ScenarioPhrase([$localize`Et surtout apprendre à lire l’heure !`], async () => {
	// 				await this.timeOut(1000);
	// 			}),
	// 			new ScenarioPhrase([messageConsigne]),
	// 			new ScenarioPhrase([$localize`A toi de jouer !`]),
	// 			new ScenarioPhrase($localize`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 !`
	// 				],
	// 				null,
	// 				[
	// 					$localize`C’est parti i i!`,
	// 					$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
	 */
	async playIntroShort() {
		let introShort;
		let messageConsigne;
		if (this.accountService.team.length > 1) {
			// MULTI:
			const players: any = this.accountService.team.map(student => student.name).join(" ! ");
			messageConsigne = [

			];
			const introTeam: Array<any> = [
				new ScenarioPhrase($localize`${players}:allPlayersNames: ! Bienvenue dans le jeu de l’horloge spatiale !`, () => {
					this.page.displayClock(true);
				}).setRandomMode(),
				new ScenarioPhrase([
					$localize`Dans ce jeu, vous allez devoir me donner l’heure sur cette horloge !`,
					$localize`Dans ce jeu, vous allez devoir m'aider à lire l’heure sur cette horloge !`
				]).setRandomMode()
			];
			// scenario multi continues in this.nextPlayerInit()
			await this.runMathiaSpeech(introTeam);
		} else if (this.accountService.team.length === 1) {
			// SOLO
			introShort = [
				new ScenarioPhrase($localize`${this.page.currentUser.name}:playerName: ! Bienvenue dans le jeu de l’horloge spatiale !`, () => {
					this.page.displayClock(true);
				}).setRandomMode(),
				new ScenarioPhrase($localize`Dans ce jeu, tu vas devoir m'aider à déchiffrer l’heure sur cette horloge !`),
				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);
		}
	}

	/**
	 * Lancement de l’activité / 1er joueur
	 */
	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 de l’horloge spatiale !`])
		];
		await this.runMathiaSpeech(playRestart);
		this.page.displayClock(true);
	}

	/**
	 * Lancement de l’activité / 1er joueur
	 */
	async nextPlayerInit() {
		const nextPlayerInit: Array<any> = [
			new ScenarioPhrase([
				$localize`C’est toi qui commences ${this.page.currentUser.name} ! Attention !`,
				$localize`${this.page.currentUser.name}, c’est toi qui commences ! Prépare-toi !`,
				$localize`A toi de commencer ${this.page.currentUser.name} ! Attention !`,
				$localize`${this.page.currentUser.name}, à toi l’honneur de répondre en premier ! Attention !`,
				$localize`${this.page.currentUser.name}, tu es là ? C’est à toi de commencer ! Attention !`
			]).setRandomMode(),
			new ScenarioPhrase($localize`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);
	}

	/**
	 * Aide. affichage séquentiel des aiguilles heure et minute
	 */
	async help() {
		let advice = [];
		const h = this.page.hidingLevel;
		// détermine le type d’indice en fonction de l’horloge affichée.
		switch (this.page.clockType) {
			case 0:
				this.page.showMinutesHand = false;
				this.page.hidingLevel = 3;
				advice = [
					new ScenarioPhrase(
						[$localize`Les heures correspondent aux nombres rouges indiqués par la petite aiguille`],
						async () => {
							await this.timeOut(3000);
							this.page.showHoursHand = false;
							this.page.showMinutesHand = true;
							this.page.hidingLevel = 0;
						}
					),
					new ScenarioPhrase(
						[$localize`Les minutes correspondent aux nombres bleus indiqués par la grande aiguille`],
						async () => {
							await this.timeOut(3000);
							this.page.showHoursHand = true;
							this.page.hidingLevel = h;
						}
					)
				];
				break;
			case 1:
				this.page.clockDigitalComponent.forEach(elm => {
					elm.hintColorRed(1);
				});
				advice = [
					new ScenarioPhrase([$localize`Voici les heures en rouge`], async () => {
						await this.timeOut(3000);
						this.page.clockDigitalComponent.forEach(elm => {
							elm.hintColorBlack(1);
							elm.hintColorBlue();
						});
					}),
					new ScenarioPhrase([$localize`Et voici les minutes en bleu`], async () => {
						await this.timeOut(3000);
						this.page.clockDigitalComponent.forEach(elm => {
							elm.hintColorBlack(2);
							elm.hintColorBlack(3);
						});
					})
				];
				break;
			case 2:
				this.page.showMinutesHand = false;
				this.page.hidingLevel = 3;
				this.page.clockDigitalComponent.forEach(elm => {
					elm.hintColorRed(1);
				});
				advice = [
					new ScenarioPhrase(
						[$localize`Regarde, la petite aiguille rouge pointe le nombre des heures en rouge aussi`],
						async () => {
							await this.timeOut(3000);
							this.page.showHoursHand = false;
							this.page.showMinutesHand = true;
							this.page.hidingLevel = 1;
							this.page.clockDigitalComponent.forEach(elm => {
								elm.hintColorBlack(1);
								elm.hintColorBlue();
							});
						}
					),
					new ScenarioPhrase([$localize`La grande aiguille bleue pointe le nombre des minutes en bleu aussi`], async () => {
						await this.timeOut(3000);
						this.page.showHoursHand = true;
						this.page.hidingLevel = h;
						this.page.clockDigitalComponent.forEach(elm => {
							elm.hintColorBlack(3);
						});
					})
				];
				break;
			default:
		}
		this.cd.detectChanges();
		await this.runMathiaSpeech(advice);
	}

	/**
	 * Donne la bonne réponse + lune.
	 */
	async resultWithMoon(challengeMode: boolean) {
		this.page.displayHourContainer = true;
		await this.page.displayClock(true);
		const moon = [
			$localize`Tu as quand même gagné une lune !`,
			$localize`Nous avons quand même gagné une lune !`,
			$localize`Tu as gagné une lune !`,
			$localize`Tu as quand même gagné une lune, regarde !`,
			$localize`Ce n’est pas grave, tu as quand même gagné une lune !`,
			$localize`Pas d’étoile cette fois-ci, mais tu as quand même gagné une lune !`,
			$localize`Tiens ! Voila quand même une lune pour ta collection !`,
			$localize`Il faudra se contenter d’une lune pour cette fois, mais c’est déjà ça !`,
			$localize`Je ne peux te donner qu’une lune, mais elle est belle ! Regarde !`
		];
		if (!challengeMode) {
			moon.concat([
				$localize`Voila une lune pour t’encourager !`,
				$localize`Tiens ! Voila quand même une lune pour t’encourager !`,
				$localize`Tiens ! Voila une lune d’encouragement !`
			]);
		}
		const moonResult: Array<any> = [
			new ScenarioPhrase(
				[
					$localize`La bonne réponse était ${this.page.goodResult} ou ${this.page.otherGoodResult}.`,
					$localize`L’horloge affichait ${this.page.goodResult} ou ${this.page.otherGoodResult}.`
				],
				async () => {
					await this.timeOut(3000);
					await this.page.displayClock(false);
					this.page.displayHourContainer = false;

					this.page.showHideAward(3000, "moon");
					if (challengeMode) {
						await AppUtils.timeOut(500);
						this.page.updatePlayerAndTeamStarboards("moon");
						this.page.questionAskedDuringSession.push({ award: "moon", question: this.page.goodResult });
					} else {
						setTimeout(() => {
							this.page.updatePlayerAndTeamStarboards("moon");
							this.page.questionAskedDuringSession.push({ award: "moon", question: this.page.goodResult });
						}, 500);
					}
				}
			),

			new ScenarioPhrase(moon, async () => {
				await this.timeOut(1000);
			})
				.setRandomMode()
				.showAward("moon")
		];
		await this.runMathiaSpeech(moonResult);
	}
}

results matching ""

    No results matching ""