src/app/models/scenario-heure.ts
constructor(cabri: CabriDataService, accountService: AccountService, globalService: GlobalService, page: any, cd: ChangeDetectorRef, ttsService: any)
|
| 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
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
|
| Public page |
page: |
| ttsService |
ttsService: |
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);
}
}