src/app/models/scenario-kim.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
|
| playSoundWithAward |
playSoundWithAward(award: any)
|
|
Returns:
void
|
| goodResponseShooting |
goodResponseShooting(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string)
|
|
Bonne réponse avec récompense (étoile filante)
Returns:
void
|
| goodResponseNormal |
goodResponseNormal(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: any)
|
|
Bonne réponse avec récompense (étoile normale)
Returns:
void
|
| badResponseWillRetry |
badResponseWillRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number)
|
|
Mauvaise réponse avant 2ème essai (est suivi de help())
Returns:
void
|
| badResponseMoon |
badResponseMoon(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: any, feedback: AnswerNeedsHelp)
|
|
Mauvaise réponse avec récompense (lune)
Returns:
void
|
| badResponseMoonWithResult |
badResponseMoonWithResult(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: any)
|
|
Mauvaise réponse avec résultat - peut être suivi de eliminationChallengeMode() (voir scenario.ts / global) ou de la fin de l’activité
Returns:
void
|
| playIntroWithTutorial |
playIntroWithTutorial()
|
|
Introduction avec le tutoriel du jeu de Kim en non-holo
Returns:
void
|
| playIntroShort |
playIntroShort()
|
|
Introduction sans le tutoriel du jeu de Kim
Returns:
void
|
| playIntroWithTutorialHolo |
playIntroWithTutorialHolo()
|
|
Introduction avec le tutoriel du jeu de Kim en holo TODO shorter ?
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
|
| help |
help()
|
|
Aide (est précédée de badResponseWillRetry())
Returns:
void
|
| lookFirst |
lookFirst()
|
|
Première phrase lors de la toute première question:
Returns:
void
|
| look |
look()
|
|
Première phrase lors d’une nouvelle question:
Returns:
void
|
| memorize1st |
memorize1st()
|
|
Deuxième phrase lors d’une nouvelle question: (disabled for quickness)
Returns:
void
|
| memorize |
memorize()
|
|
Deuxième phrase lors d’une nouvelle question:
Returns:
void
|
| waitPlayerReady |
waitPlayerReady(promiseButton: any, text: string)
|
|
Troisème phrase lors d’une nouvelle question:
Returns:
void
|
| cosmicCloudComingFirstTime |
cosmicCloudComingFirstTime()
|
|
Quatrième phrase lors de la toute première question:
Returns:
void
|
| cosmicCloudComing |
cosmicCloudComing()
|
|
Quatrième phrase lors d’une nouvelle question:
Returns:
void
|
| disappeardFirst |
disappeardFirst()
|
|
Cinquième phrase lors de la toute première question:
Returns:
void
|
| disappeardAgain |
disappeardAgain()
|
|
Cinquième phrase lors d’une nouvelle question:
Returns:
void
|
| whichObjectFirst |
whichObjectFirst()
|
|
Dernière phrase lors de la première question:
Returns:
void
|
| whichObject |
whichObject()
|
|
Dernière phrase lors d’une nouvelle question:
Returns:
void
|
| continueSolo |
continueSolo()
|
|
Message entre 2 questions quand 1 seul joueur (SOLO)
Returns:
void
|
| endOfActivity |
endOfActivity()
|
|
Returns:
void
|
| Public page |
page: |
| ttsService |
ttsService: |
import { PlayTTSService } from "src/app/services/play-tts.service";
import { ChangeDetectorRef } from "@angular/core";
import { JeudekimPage } from "../page/jeudekim/jeudekim.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 { AppUtils } from "../app-utils";
import { AnswerStatus, AnswerSpeed, AnswerAverage, AnswerExtreme, AnswerNeedsHelp } from "./activity-answer";
export class ScenarioKim extends ScenarioCabri {
public page: JeudekimPage;
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`Pas facile à trouver celui-là ! Bien joué !`,
$localize`Bravo #playerName ! Tu l’as retrouvé !`,
$localize`Bien joué #playerName ! Tu l’as retrouvé !`,
$localize`Un petit pas pour toi, un grand pas pour ton apprentissage ! Super !`
],
2
);
// NORMAL
this.addFeedbacks(
{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.NORMAL },
1,
[
$localize`Quelle réponse super-géométrique ! Bien joué !`,
$localize`Méga-boulonique cette réponse !`,
$localize`Youpi ! Une nouvelle constellation en vue !`,
$localize`Quelle giga-réponse ! Bravo`,
$localize`Bravo ! Tu as trouvé la solution !`,
$localize`Vers l’infini et au-delà ! Bien joué !`,
$localize`Oui ! Bravo !`,
$localize`Un petit pas pour toi, un grand pas pour ton apprentissage ! Bravo !`,
$localize`Quelle cosmo-réponse ! Bien joué !`,
$localize`Tu m’impressionnes #playerName ! Bravo !`
],
2
);
// FAST
this.addFeedbacks(
{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST },
2,
[
$localize`Wahou ! Tu l’as retrouvé sans hésiter ! Bravo !`,
$localize`Incroyable ! On ne peut rien te cacher à toi ! Bien joué !`,
$localize`Quelle maîtrise des solides ! Et quelle vitesse ! Bravo !`,
$localize`Supra-luminique ! Tu réponds à la vitesse de l’éclair !`,
$localize`Par Toutatis ! Quelle maîtrise de la géométrie !`,
$localize`Encore un solide que tu as retrouvé à la vitesse de la lumière !`,
$localize`Tu connais les solides à la perfection #playerName ! Bravo !`,
$localize`Lumino-fantastique !`
],
2
);
// PROGRESSION ABOVE AVERAGE
this.addFeedbacks(
{ status: AnswerStatus.VALID1ST, progressionAverage: AnswerAverage.ABOVE },
3,
[
$localize`Je suis impressionnée ! Ce voyage géométrique 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 comme ça, tu peux y arriver !`],
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 as le compas dans l’oeil toi !`,
$localize`Wahou ! Aucun solide ne t’échappe #playerName !`,
$localize`Incroyable ! Jusqu’où iras-tu comme ça ?`,
$localize`Epoustouflant #playerName !`,
$localize`Eh bien ! Les solides n’ont pas de secrets pour toi !`,
$localize`Quelle cosmo-réponse ! Tu es supra-luminique !`,
$localize`Wahou ! Tes processeurs fonctionnent à plein régime !`,
$localize`Par Toutatis ! Tu es le maître des astro-solides !`,
$localize`Je suis impressionnée ! Tu maîtrises les cosmo-solides à la perfection !`,
$localize`Youhou ! C’est trop facile pour toi !`
],
2
);
// PROGRESSION ONLY ERRORS TILL THEN
this.addFeedbacks(
{ status: AnswerStatus.VALID1ST, progressionExtreme: AnswerExtreme.ALLBAD },
3,
[$localize`Oui #playerName ! Bravo ! Tu l’as trouvé !`],
2
);
this.addFeedbacks(
{ status: AnswerStatus.VALID1ST, speed: AnswerSpeed.FAST, progressionExtreme: AnswerExtreme.ALLGOOD },
4,
[
$localize`Youhou ! C’est trop facile pour toi !`,
$localize`Oui bravo ! Rien ne t’arrête !`,
$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`Oui #playerName ! Magnifique rattrapage !`,
$localize`Wahou ! C’est bien ça ! Beau rattrapage !`,
$localize`Oui, bien rattrapé #playerName !`,
$localize`Oui ! Tu l’as trouvé ! Je suis fière de toi !`,
$localize`Oui ! Bravo ! C’était bien celui-là !`,
$localize`Super ! Tu as su retrouver ce solide bien caché !`,
$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 n’es pas loin ! Regardons de plus près...`, $localize`Tu y es presque ! Retournons voir ces solides !`],
2
);
this.addFeedbacks(
{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES },
3,
[
$localize`Dommage, tu y étais presque... Regardons de plus près ces solides !`,
$localize`Oups, laisse-moi te donner un coup de main pour rattraper cette petite erreur !`,
$localize`Tu t’es trompé mais ce n’est pas grave, c’est comme ça qu’on apprend ! Je vais t’aider !`,
$localize`Attention ! Tu t’es perdu dans le nuage cosmique ! Je vais te guider !`,
$localize`Oups ! Ce n’est pas ça ! Voici un peu d’aide !`,
$localize`Tu y es presque, nous allons réessayer avec un peu d’aide !`,
$localize`Oups, ce n’est pas celui-ci. Regardons de plus près !`,
$localize`Oups ! La soucoupe bug ! Je vais te donner un petit coup de main !`,
$localize`Oups ! Ce n’est pas ça. Laisse moi t’aider !`,
$localize`Appel à la base ! Nous avons besoin d’aide par ici !`,
$localize`Oups... J’aimerais pouvoir te dire que tu as trouvé, mais ce n’est pas ça !`
],
2
);
this.addFeedbacks(
{ status: AnswerStatus.ERROR1ST, needsHelp: AnswerNeedsHelp.YES, speed: AnswerSpeed.FAST },
4,
[
$localize`Oups, ce n'était pas celui-là. N’hésite pas à prendre plus de temps pour les mémoriser !`,
$localize`Oups ! Non... Ce n’est pas grave, ralentissons un peu !`,
$localize`Ce n’est pas celui-là. Tu devrais peut-être aller plus doucement ?`,
$localize`Pas si vite, ce n’est pas celui-là ! Regardons ces solides de plus près...`
],
2
);
// SECOND ERROR - failed
this.addFeedbacks(
{ status: AnswerStatus.ERROR2ND },
2,
[
$localize`Non, Ce n’est pas ça ! Dur à trouver ce solide, pas vrai ?`,
$localize`Oups ! Tu t’es trompé mais ce n’est pas grave ! C’est comme ça qu’on apprend !`,
$localize`Ce n'est pas ça... Il faut dire qu’il était difficile à trouver celui-là !`,
$localize`Non... Appel à la base, nous avons perdu un solide !`,
$localize`Oups... J’aimerais pouvoir te dire que tu as trouvé, mais ce n’était pas celui-là. Courage !`,
$localize`Tu y étais presque !`,
$localize`Oups, ce n’est pas le bon solide...`
],
2
);
this.addFeedbacks(
{ status: AnswerStatus.ERROR2ND, progressionAverage: AnswerAverage.BELOW },
2,
[$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 },
2,
[$localize`Oups... Non. Tu y arrivais bien pourtant !`],
2
);
this.addFeedbacks(
{ status: AnswerStatus.ERROR2ND, progressionExtreme: AnswerExtreme.ALLBAD },
2,
[$localize`Oups... Non ! Courage, je suis sûre que tu vas y arriver !`],
2
);
this.addFeedbacks(
{ status: AnswerStatus.ERROR2ND, progressionExtreme: AnswerExtreme.ALLGOOD },
2,
[$localize`Oups... On dirait que le vent cosmique tourne !`],
2
);
// console.error("feedbacks unshuffled = ", this.feedbacks);
if (randomize) {
AppUtils.shuffleArray(this.feedbacks);
// console.error("feedbacks shuffled = ", this.feedbacks);
}
}
async playSoundWithAward(award) {
this.page.hideBubbleText = true;
let awardSoundPromise;
if (award === "moon") {
awardSoundPromise = this.page.audioService.playAwardMoonSound();
} else {
awardSoundPromise = this.page.audioService.playStarSound();
}
await this.timeOut(500);
this.page.showHideAward(3000, award);
setTimeout(() => {
this.page.updatePlayerAndTeamStarboards(award);
}, 500);
await awardSoundPromise;
this.page.hideBubbleText = false;
}
/**
* Bonne réponse avec récompense (étoile filante)
*/
async goodResponseShooting(answerStatus: AnswerStatus, responseTimeInSeconds: number, award: string) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
const speechSequence = [
new ScenarioPhrase([phrase], async () => {
await this.timeOut(500);
this.page.showHideAward(3000, award);
setTimeout(() => {
this.page.updatePlayerAndTeamStarboards(award);
}, 500);
})
.setRandomMode()
.hideBubble(),
new ScenarioPhrase(
this.cabriService.teamShootingStarsCount <= 2
? [
$localize`Regarde ! Il y avait une étoile filante dans le nuage ! Merci petit nuage !`,
$localize`Oh ! Regarde ce qu’il y avait caché sous le solide ! Une étoile filante !`,
$localize`Tu as trouvé une étoile filante cachée sous le solide !`
]
: [
$localize`Et hop ! Une étoile filante en plus !`,
$localize`Et une étoile filante en plus pour ta collection !`,
$localize`Encore une étoile filante de récupérée ! Super !`,
$localize`Et une étoile filante en plus !`,
$localize`Encore une étoile filante de retrouvée !`
],
async () => {}
)
.setRandomMode()
.showAward(award)
];
await this.runMathiaSpeech(speechSequence);
}
/**
* Bonne réponse avec récompense (étoile normale)
*/
async goodResponseNormal(answerStatus: AnswerStatus, responseTimeInSeconds: number, award) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
const speechSequence = [
new ScenarioPhrase([phrase], async () => {
this.page.showHideAward(3000, award);
setTimeout(() => {
this.page.updatePlayerAndTeamStarboards(award);
}, 500);
})
.setRandomMode()
.hideBubble(),
new ScenarioPhrase(
this.cabriService.teamNormalStarsCount <= 2
? [
$localize`Regarde ! Le nuage nous a laissé une étoile ! Merci petit nuage !`,
$localize`Oh ! Regarde ce qu’il y avait caché sous le solide ! Une étoile !`,
$localize`Tu as trouvé une étoile cachée sous le solide !`
]
: [
$localize`Et hop ! Une étoile en plus !`,
$localize`Et une étoile en plus pour ta collection !`,
$localize`Encore une étoile de récupérée ! Super !`,
$localize`Et une étoile en plus !`,
$localize`Encore une étoile de retrouvée !`
],
async () => {}
)
.setRandomMode()
.showAward(award)
];
await this.runMathiaSpeech(speechSequence);
}
/**
* Mauvaise réponse avant 2ème essai (est suivi de help())
*/
async badResponseWillRetry(answerStatus: AnswerStatus, responseTimeInSeconds: number) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, null, 20, 4, 5, 3, AnswerNeedsHelp.YES);
const speechSequence = [new ScenarioPhrase([phrase]).setRandomMode()];
await this.runMathiaSpeech(speechSequence);
}
/**
* Mauvaise réponse avec récompense (lune)
*/
async badResponseMoon(answerStatus: AnswerStatus, responseTimeInSeconds: number, award, feedback: AnswerNeedsHelp) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3, feedback);
const speechSequence = [
new ScenarioPhrase([phrase], async () => {
this.page.showHideAward(3000, award);
await setTimeout(() => {
this.page.updatePlayerAndTeamStarboards(award);
}, 500);
}).setRandomMode(),
new ScenarioPhrase(
this.page.endOfActivity() ?
[
$localize`Tu as quand même trouvé une lune, regarde !`,
$localize`Oh mais... Regarde ce qu’il y avait dans le nuage ! Une lune !`,
$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 trouvé une lune !`,
$localize`Tiens ! Voila quand même une lune pour ta collection !`
]
:
[
$localize`Tu as quand même trouvé une lune, regarde !`,
$localize`Oh mais... Regarde ce qu’il y avait dans le nuage ! Une lune !`,
$localize`Le nuage nous a laissé une lune pour nous encourager ! Merci petit nuage !`,
$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 trouvé une lune !`,
$localize`Tiens ! Voila quand même une lune pour ta collection !`,
$localize`Tiens ! Voila quand même une lune pour t’encourager !`,
$localize`Cette fois c’est une lune mais je suis sûr que tu trouveras une étoile au prochain solide !`
],
async () => {}
).setRandomMode()
];
await this.runMathiaSpeech(speechSequence);
}
/**
* Mauvaise réponse avec résultat - peut être suivi de eliminationChallengeMode() (voir scenario.ts / global) ou de la fin de l’activité
*/
async badResponseMoonWithResult(answerStatus: AnswerStatus, responseTimeInSeconds: number, award) {
const phrase = this.getContextualFeedbackPhrase(answerStatus, responseTimeInSeconds, award, 20, 4, 5, 3);
const moonResult: Array<any> = [
new ScenarioPhrase([phrase], async () => {
setTimeout(async () => {
await this.page.cabri.blinkObject(this.page.objectToFindId);
}, 1000);
}).setRandomMode(),
new ScenarioPhrase(
[
$localize`Regarde, le solide que j’ai caché était ${this.page.goodResultNameForHelp} !`,
$localize`La bonne réponse était ${this.page.goodResultNameForHelp} !`
],
async () => {
await this.timeOut(3000);
this.page.showHideAward(3000, award);
await AppUtils.timeOut(500);
this.page.updatePlayerAndTeamStarboards(award);
}
),
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()
.showAward(award)
];
await this.runMathiaSpeech(moonResult);
}
/**
* Introduction avec le tutoriel du jeu de Kim en non-holo
*/
async playIntroWithTutorial() {
const players: any = this.accountService.team.map(student => student.name).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`;
// SEQUENCE:
if (this.accountService.team.length > 1) {
// SEQUENCE MULTIJOUEUR:
const introTeam: Array<any> = [
new ScenarioPhrase([
$localize`${players}:allPlayersNames: ! Bienvenue dans le jeu de Kim ! `,
]),
new ScenarioPhrase([$localize`Dans ce jeu, nous allons apprendre à reconnaître les différents solides !`]),
new ScenarioPhrase([$localize`A chaque tour, je vais cacher un solide dans un nuage cosmique !`]),
new ScenarioPhrase([$localize`A vous de retrouver lequel !`],
async () => {
await this.page.setAllObjects();
await this.page.setObjectToFind(1);
this.page.cabri.updateObjectsToRotate();
}),
new ScenarioPhrase($localize`Par exemple voici des solides. Ils sont beaux, non ?`),
new ScenarioPhrase($localize`Il y a les cubes...`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cube", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Les pavés...`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pave", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Les boules...`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("boule", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Les pyramides...`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pyr", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Les cônes...`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cone", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Et les cylindres !`, async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cyl", 1);
await this.timeOut(2000);
await this.page.cabri.showAllSolids();
}),
new ScenarioPhrase($localize`Je vais cacher un de nos petits solides à chaque tour...`),
new ScenarioPhrase($localize`Comme ça : et hop !`, async () => {
await this.page.cabri.hideObjectTofind(this.page.objectToFindId);
await this.timeOut(2000);
}),
new ScenarioPhrase($localize`Avez-vous vu quel solide j’ai caché ? C’est celui qui clignote !`, async () => {
if (!this.skipSequence) {
await this.page.cabri.blinkObject(this.page.objectToFindId);
}
await this.timeOut(6000);
this.page.cabri.stopBlink(this.page.objectToFindId);
}),
new ScenarioPhrase($localize`Il vous suffit alors de me dire son nom pour que je le fasse revenir !`, async () => {}),
new ScenarioPhrase($localize`Pour cela, parlez-moi quand l’icône du micro est allumée.`, async () => {
this.globalService.fakeMicOn = true;
this.cd.detectChanges();
}),
new ScenarioPhrase($localize`Vous la voyez ? Elle s’allume en rose quand vous pouvez me parler !`, async () => {
this.globalService.fakeMicOn = false;
this.cd.detectChanges();
}),
new ScenarioPhrase($localize`Vous pouvez aussi utiliser le cosmo clavier pour me répondre.`),
new ScenarioPhrase($localize`Pour l’activer, appuyez sur son bouton. Regardez c’est celui-là !`, async () => {
// numpad on
this.globalService.activateNumpadIcon = true;
this.cd.detectChanges();
await this.timeOut(1000);
}),
new ScenarioPhrase($localize`Si vous appuyez dessus, hop ! Le cosmo clavier apparaît !`, async () => {
await this.page.toggleNumpad(true);
await this.page.toggleNumpadPointerEvents(false);
}),
new ScenarioPhrase(
$localize`Appuyez sur la touche qui correspond au solide que j’ai caché pour que je le ramène !`,
async () => {
await this.timeOut(2000);
await this.page.toggleNumpad(false);
await this.page.toggleNumpadPointerEvents(true);
}
),
new ScenarioPhrase($localize`Ok, maintenant que vous savez tout, commençons à jouer !`, async () => {
await this.page.hideObjects();
await this.page.cabri.resetScene();
})
];
await this.runMathiaSpeech(introTeam);
// scenario multi continues in this.nextPlayerInit()
} else {
// SEQUENCE SOLO:
const introSolo: Array<any> = [
new ScenarioPhrase([
$localize`${this.page.currentUser.name}:playerName: ! Bienvenue dans le jeu de Kim ! `,
]),
new ScenarioPhrase([$localize`Dans ce jeu, nous allons apprendre à reconnaître les différents solides !`]),
new ScenarioPhrase([$localize`A chaque tour, je vais cacher un solide dans un nuage cosmique !`]),
new ScenarioPhrase([$localize`A toi de retrouver lequel !`],
async () => {
if (!this.skipSequence) {
await this.page.setAllObjects();
await this.page.setObjectToFind(1);
this.page.cabri.updateObjectsToRotate();
}
}),
new ScenarioPhrase($localize`Par exemple voici des solides. Ils sont beaux, non ?`),
new ScenarioPhrase($localize`Il y a les cubes...`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cube", 1);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`Les pavés...`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pave", 1);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`Les boules...`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("boule", 1);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`Les pyramides...`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pyr", 1);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`Les cônes...`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cone", 1);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`Et les cylindres !`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cyl", 1);
await this.timeOut(2000);
await this.page.cabri.showAllSolids();
}
}),
new ScenarioPhrase($localize`Je vais cacher un de nos petits solides à chaque tour...`),
new ScenarioPhrase($localize`Comme ça : et hop !`, async () => {
if (!this.skipSequence) {
await this.page.cabri.hideObjectTofind(this.page.objectToFindId);
await this.timeOut(2000);
}
}),
new ScenarioPhrase($localize`As-tu vu quel solide j’ai caché ? C’est celui qui clignote !`, async () => {
if (!this.skipSequence) {
await this.page.cabri.blinkObject(this.page.objectToFindId);
await this.timeOut(6000);
this.page.cabri.stopBlink(this.page.objectToFindId);
}
}),
new ScenarioPhrase($localize`Il te suffit alors de me dire son nom pour que je le fasse revenir !`),
new ScenarioPhrase($localize`Pour cela, parle moi quand l’icône du micro est allumée.`, async () => {
if (!this.skipSequence) {
this.globalService.fakeMicOn = true;
this.cd.detectChanges();
}
}),
new ScenarioPhrase($localize`Tu la vois ? Tout en haut ! Elle s’allume en rose quand tu peux me parler !`),
new ScenarioPhrase($localize`Tu peux aussi utiliser le cosmo clavier pour me répondre.`, async () => {
if (!this.skipSequence) {
this.globalService.fakeMicOn = false;
this.cd.detectChanges();
}
}),
new ScenarioPhrase($localize`Pour l’activer, appuie sur son bouton. Regarde c’est celui-là !`, async () => {
if (!this.skipSequence) {
// numpad on
this.globalService.activateNumpadIcon = true;
this.cd.detectChanges();
await this.timeOut(1000);
}
}),
new ScenarioPhrase($localize`Si tu appuies dessus, hop ! Le cosmo clavier apparaît !`, async () => {
if (!this.skipSequence) {
await this.page.toggleNumpad(true);
await this.page.toggleNumpadPointerEvents(false);
}
}),
new ScenarioPhrase(
$localize`Appuie sur la touche qui correspond au solide que j’ai caché pour que je le ramène !`,
async () => {
if (!this.skipSequence) {
await this.timeOut(2000);
await this.page.toggleNumpad(false);
await this.page.toggleNumpadPointerEvents(true);
}
}
),
new ScenarioPhrase($localize`Ok, maintenant que tu sais tout, commençons à jouer !`, async () => {
await this.page.hideObjects();
await this.page.cabri.resetScene();
}),
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);
}
}
/**
* Introduction sans le tutoriel du jeu de Kim
*/
async playIntroShort() {
const players: any = this.accountService.team.map(student => student.name).join(" ! ");
if (this.accountService.team.length > 1) {
// MULTI:
const introTeam: Array<any> = [
new ScenarioPhrase([
$localize`${players}:allPlayersNames: ! Bienvenue dans le jeu de Kim ! `,
]).setRandomMode(),
new ScenarioPhrase([$localize`Dans ce jeu, nous allons apprendre à reconnaître les différents solides !`]),
new ScenarioPhrase([$localize`A chaque tour, je vais cacher un solide dans un nuage cosmique !`]),
new ScenarioPhrase([$localize`A vous de retrouver lequel !`]),
// new ScenarioPhrase([
// $localize`Il paraît qu’on peut aussi trouver des étoiles ou des lunes dans les nuages cosmiques !`,
// $localize`Vous aurez même la chance de trouver des étoiles ou des lunes en fouillant ces nuages !`
// ]).setRandomMode()
];
await this.runMathiaSpeech(introTeam);
// scenario multi continues in this.nextPlayerInit()
} else {
// SOLO:
const introSolo: Array<any> = [
new ScenarioPhrase([
$localize`${this.page.currentUser.name}:playerName: ! Bienvenue dans le jeu de Kim ! `
]).setRandomMode(),
new ScenarioPhrase([$localize`Dans ce jeu, nous allons apprendre à reconnaître les différents solides !`]),
new ScenarioPhrase([$localize`A chaque tour, je vais cacher un solide dans un nuage cosmique !`]),
new ScenarioPhrase([$localize`A toi de retrouver lequel !`]),
// new ScenarioPhrase([
// $localize`Il paraît qu’on peut aussi trouver des étoiles ou des lunes dans les nuages cosmiques !`,
// $localize`Tu auras même la chance de trouver des étoiles ou des lunes en fouillant ces nuages !`
// ]).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(introSolo);
}
}
/**
* Introduction avec le tutoriel du jeu de Kim en holo TODO shorter ?
*/
async playIntroWithTutorialHolo() {
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) {
// solo:
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:
const introTeam: Array<any> = [
new ScenarioPhrase(firstMessage).setRandomMode(),
new ScenarioPhrase([
$localize`Prêts pour ${reDécoller} vers le jeu de Kim ?`,
$localize`Attachez votre ceinture, nous ${rePartons} jouer au jeu de Kim !`,
$localize`Tout le monde est prêt ? Parfait, ${reDecollons} vers le jeu de Kim !`,
$localize`Vous êtes prêts ? Alors plein gaz sur le jeu de Kim !`
]).setRandomMode(),
new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
new ScenarioPhrase([$localize`Et surtout apprendre à reconnaître les différents solides !`], async () => {
await this.timeOut(1000);
// this.page.setObjects();
}),
new ScenarioPhrase([$localize`Nous allons dans une galaxie pleine de nuages cosmiques`]),
new ScenarioPhrase([$localize`Je vais en profiter pour y cacher des solides !`]),
new ScenarioPhrase([$localize`Votre mission est de retrouver les solides que je cacherai dans les nuages !`], async () => {
await this.page.setAllObjects();
await this.page.setObjectToFind(1);
this.page.cabri.updateObjectsToRotate();
}),
new ScenarioPhrase([$localize`Par exemple voici des solides. Ils sont beaux, non ?`]),
new ScenarioPhrase([$localize`Il y a les cubes...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cube", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les pavés...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pave", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les boules...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("boule", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les pyramides...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pyr", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les cônes...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cone", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Et les cylindres !`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cyl", 1);
await this.timeOut(2000);
await this.page.cabri.showAllSolids();
}),
new ScenarioPhrase([$localize`Je vais cacher un de nos petits solides à chaque tour...`]),
new ScenarioPhrase([$localize`Comme ça ! Pouf !`], async () => {
await this.page.cabri.hideObjectTofind(this.page.objectToFindId);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Avez-vous vu lequel j’ai caché ? C’est celui qui clignote !`], async () => {
await this.page.cabri.blinkObject(this.page.objectToFindId);
await this.timeOut(6000);
this.page.cabri.stopBlink(this.page.objectToFindId);
}),
new ScenarioPhrase([$localize`Il vous suffit alors de me dire son nom pour que je le ramène !`]),
new ScenarioPhrase([$localize`Pour cela, parlez-moi quand le triangle en face de vous est allumé en rouge.`], async () => {
this.page.holoTriangleStt = true;
this.page.detectChanges();
}),
new ScenarioPhrase([$localize`Vous le voyez ?`], async () => {
await this.timeOut(2000);
this.page.holoTriangleStt = false;
this.page.detectChanges();
}),
new ScenarioPhrase([$localize`Ok, maintenant que vous savez tout, commençons notre nouvelle aventure !`], async () => {
await this.page.hideObjects();
await this.page.cabri.resetScene();
})
];
await this.runMathiaSpeech(introTeam);
// scenario multi continues in this.nextPlayerInit()
} else {
// intro SOLO:
const introSolo: Array<any> = [
new ScenarioPhrase(firstMessage).setRandomMode(),
new ScenarioPhrase([
$localize`Attention au départ ! Nous ${reDecollons} dans l’espace vers le jeu de Kim !`,
$localize`Attache ta ceinture, nous ${rePartons} dans l’espace jouer au jeu de Kim !`,
$localize`Notre fusée est prête à ${reDécoller} dans l’espace vers le jeu de Kim ! On y va ?`
]).setRandomMode(),
new ScenarioPhrase([$localize`Le but de notre expédition est simple : trouver des étoiles ou des lunes !`]),
new ScenarioPhrase([$localize`Et surtout apprendre à reconnaître les différents solides !`], async () => {
await this.timeOut(1000);
// this.page.setObjects();
}),
new ScenarioPhrase([$localize`Nous allons dans une galaxie pleine de nuages cosmiques`]),
new ScenarioPhrase([$localize`Je vais en profiter pour y cacher des solides !`]),
new ScenarioPhrase([$localize`Ta mission est de retrouver les solides que je cacherai dans les nuages !`], async () => {
await this.page.setAllObjects();
await this.page.setObjectToFind(1);
this.page.cabri.updateObjectsToRotate();
}),
new ScenarioPhrase([$localize`Par exemple voici des solides. Ils sont beaux, non ?`]),
new ScenarioPhrase([$localize`Il y a les cubes...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cube", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les pavés...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pave", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les boules...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("boule", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les pyramides...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("pyr", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Les cônes...`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cone", 1);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`Et les cylindres !`], async () => {
await this.page.cabri.hideAllSolids();
this.page.cabri.toggleSolids("cyl", 1);
await this.timeOut(2000);
await this.page.cabri.showAllSolids();
}),
new ScenarioPhrase([$localize`Je vais cacher un de nos petits solides à chaque tour...`]),
new ScenarioPhrase([$localize`Comme ça ! Pouf !`], async () => {
await this.page.cabri.hideObjectTofind(this.page.objectToFindId);
await this.timeOut(2000);
}),
new ScenarioPhrase([$localize`As-tu vu lequel j’ai caché ? C’est celui qui clignote !`], async () => {
await this.page.cabri.blinkObject(this.page.objectToFindId);
await this.timeOut(6000);
this.page.cabri.stopBlink(this.page.objectToFindId);
}),
new ScenarioPhrase([$localize`Il te suffit alors de me dire son nom pour que je le retrouve !`]),
new ScenarioPhrase([$localize`Pour cela, parle-moi quand le triangle en face de toi est allumé en rouge.`], async () => {
this.page.holoTriangleStt = true;
this.page.detectChanges();
}),
new ScenarioPhrase([$localize`Tu le vois ?`], async () => {
await this.timeOut(2000);
this.page.holoTriangleStt = false;
this.page.detectChanges();
}),
new ScenarioPhrase([$localize`Ok, maintenant que tu sais tout, commençons notre nouvelle aventure !`], async () => {
await this.page.hideObjects();
await this.page.cabri.resetScene();
}),
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 !`
],
null,
[
$localize`:tts:C’est parti i i!`,
$localize`:tts:Décollage!`,
$localize`:tts:Allumage des réacteurs!`,
$localize`:tts:Vers l’infini et au-delà !`,
$localize`:tts:Que la force soit avec toi !`
]
).setRandomMode()
];
await this.runMathiaSpeech(introSolo);
// end intro solo
}
}
/**
* 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 de Kim dans l’espace !`])
];
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 !`
]).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() {
const nextPlayerContent: Array<any> = [
new ScenarioPhrase([
$localize`Maintenant c’est à ${this.page.currentUser.name}:playerName: de piloter ! Vas-y ${this.page.currentUser.name}:playerName: !`,
$localize`Maintenant à toi ${this.page.currentUser.name}:playerName: ! Vas-y !`,
$localize`A ton tour ${this.page.currentUser.name}:playerName: !`,
$localize`A toi ${this.page.currentUser.name}:playerName: !`,
$localize`Ok, à ton tour ${this.page.currentUser.name}:playerName: ! Vas-y !`,
$localize`${this.page.currentUser.name}:playerName: ? Tu es toujours là ? Ok, à toi de jouer !`,
$localize`Et maintenant c’est à... Mince j’ai oublié ! Olala... A oui ! C’est à ${this.page.currentUser.name}:playerName: !`,
$localize`On forme une bonne équipe tous les ${this.page.currentTeam.length + 1}, non ? Continuons !
A toi ${this.page.currentUser.name}:playerName: !`,
$localize`A ${this.page.currentUser.name}:playerName: maintenant !`,
$localize`${this.page.currentUser.name}:playerName:, à toi !`,
$localize`Quel voyage ! A toi ${this.page.currentUser.name}:playerName: !`
])
];
await this.runMathiaSpeech(nextPlayerContent);
}
/**
* Aide (est précédée de badResponseWillRetry())
*/
async help() {
const speechSequence = [
new ScenarioPhrase([$localize`Le solide qu’il faut trouver est celui qui clignote, regarde !`], async () => {
if (!this.skipSequence) {
await this.page.cabri.blinkObject(this.page.objectToFindId);
}
}),
new ScenarioPhrase([$localize`Tu le vois ?`], async () => {
if (!this.skipSequence) {
await this.timeOut(4000);
}
await this.page.cabri.stopBlink(this.page.objectToFindId);
this.page.cabri.hideObjectTofind(this.page.objectToFindId);
}),
new ScenarioPhrase([$localize`Maintenant essaye de répondre à nouveau !`]),
new ScenarioPhrase([$localize`Quel est le solide qui a disparu ?`])
];
await this.runMathiaSpeech(speechSequence);
}
/**
* Première phrase lors de la toute première question:
*/
async lookFirst() {
const look: Array<any> = [new ScenarioPhrase([$localize`Regarde ! Voici des solides !`]).disableSkipButton()];
await this.runMathiaSpeech(look);
}
/**
* Première phrase lors d’une nouvelle question:
*/
async look() {
const look: Array<any> = [
new ScenarioPhrase([
$localize`Regarde les solides !`,
$localize`Regarde ces solides !`,
$localize`Regarde les solides !`,
$localize`Regarde ces solides !`,
$localize`Regarde ! Des petits solides...`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(look);
}
/**
* Deuxième phrase lors d’une nouvelle question: (disabled for quickness)
*/
async memorize1st() {
const disappear: Array<any> = [
new ScenarioPhrase([
$localize`Mémorise les bien !`
// $localize`Essaye de bien les mémoriser !`,
// $localize`Essaye de bien te souvenir d’eux !`,
// $localize`Souviens-toi bien d’eux !`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(disappear);
}
/**
* Deuxième phrase lors d’une nouvelle question:
*/
async memorize() {
const disappear: Array<any> = [
new ScenarioPhrase([
$localize`Mémorise bien ces nouveaux solides !`,
$localize`Regarde ces nouveaux solides !`,
$localize`Attention, de nouveaux solides !`
// $localize`Souviens-toi bien d’eux !`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(disappear);
}
/**
* Troisème phrase lors d’une nouvelle question:
*/
waitPlayerReady(promiseButton, text: string) {
return new Promise(async resolve => {
const waitPlayerReady: Array<any> = [
new ScenarioPhrase(
[text],
async () => {
await promiseButton;
resolve(true);
},
null,
"Nuage"
).showButtons()
];
this.runMathiaSpeech(waitPlayerReady);
});
}
/**
* Quatrième phrase lors de la toute première question:
*/
async cosmicCloudComingFirstTime() {
const cosmicCloudComing: Array<any> = [new ScenarioPhrase($localize`Oh ! Regarde ! Un nuage cosmique !`).disableSkipButton()];
await this.runMathiaSpeech(cosmicCloudComing);
}
/**
* Quatrième phrase lors d’une nouvelle question:
*/
async cosmicCloudComing() {
const cosmicCloudComing: Array<any> = [
new ScenarioPhrase([
$localize`Chouette ! Le nuage cosmique !`,
$localize`Le nuage est de retour !`,
$localize`Le nuage cosmique revient !`,
$localize`Super ! Le nuage cosmique !`,
$localize`Sacreboule ! Le nuage !`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(cosmicCloudComing);
}
/**
* Cinquième phrase lors de la toute première question:
*/
async disappeardFirst() {
const hop: Array<any> = [new ScenarioPhrase($localize`J’en ai profité pour y cacher un solide !`).disableSkipButton()];
await this.runMathiaSpeech(hop);
}
/**
* Cinquième phrase lors d’une nouvelle question:
*/
async disappeardAgain() {
const hop: Array<any> = [
new ScenarioPhrase(
this.cabriService.teamTotalAwards < 5
? [
$localize`Hop ! Un solide en moins !`,
$localize`J’y ai caché un solide !`,
$localize`Abracadaboule ! Un solide en moins !`
]
: [
$localize`Abracadaboule !`,
$localize`Hop ! Un solide en moins !`,
$localize`Abracadaboule !`,
$localize`Hop ! Un solide en moins !`,
$localize`Et encore un solide de caché !`
]
)
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(hop);
}
/**
* Dernière phrase lors de la première question:
*/
async whichObjectFirst() {
const disappear: Array<any> = [
new ScenarioPhrase([
$localize`Quel est le solide que j’ai caché ?`,
$localize`Quel est le nom du solide manquant ?`,
// $localize`${this.page.currentUser.name}:playerName:, quel est le nom du solide manquant ?`,
$localize`Quel est le nom du solide que j’ai caché ?`,
$localize`Comment s'appelle le solide que j’ai caché ?`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(disappear);
}
/**
* Dernière phrase lors d’une nouvelle question:
*/
async whichObject() {
const disappear: Array<any> = [
new ScenarioPhrase(
this.cabriService.teamTotalAwards < 5
? [$localize`Quel est son nom ?`, $localize`Comment s’appelle t-il ?`]
: [
$localize`Quel est le nom du solide que j’ai caché ?`,
$localize`Quel est le nom du solide qui a disparu ?`,
$localize`Quel est le nom du solide manquant ?`,
$localize`${this.page.currentUser.name}:playerName:, quel est le nom du solide manquant ?`,
$localize`Comment s'appelle le solide que j’ai caché ?`,
$localize`Comment s’appelle le solide qui a disparu ?`,
$localize`Comment s’appelle le solide manquant ?`,
$localize`${this.page.currentUser.name}:playerName:, comment s’appelle le solide manquant ?`,
$localize`Quel est le solide manquant ?`,
$localize`Quel est le solide qui a disparu ?`,
$localize`Quel est le solide que j’ai caché ?`,
$localize`${this.page.currentUser.name}:playerName:, quel est le solide que j’ai caché ?`
]
)
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(disappear);
}
/**
* Message entre 2 questions quand 1 seul joueur (SOLO)
*/
async continueSolo() {
const look: Array<any> = [
new ScenarioPhrase([
$localize`On continue !`,
$localize`Continuons !`,
$localize`Je sens un nouveau nuage arriver ! Continuons !`,
$localize`Toujours là ${this.page.currentUser.name}:playerName: ? Continuons !`
])
.setRandomMode()
.disableSkipButton()
];
await this.runMathiaSpeech(look);
}
async endOfActivity() {
const phrase: Array<any> = [new ScenarioPhrase([$localize`Quelle expédition !`, $localize`Quel voyage !`]).setRandomMode()];
this.page.starboardToggle = false;
this.detectChanges();
await this.runMathiaSpeech(phrase);
}
}