simplifier la recuperation des données, stocker les variables de chaque etat dans son propre objet

front
Gwenael PLANCHON 1 year ago
parent b2787a7db9
commit 8e16ce9e96

@ -18,15 +18,21 @@ export default {
}, },
//variables pour l'etat question //variables pour l'etat question
question:"", question:{
reponses:[], question:"",
reponses:[],
},
//variables pour la salle d'attente //variables pour la salle d'attente
joueurs:[], salleAttente:{
partieDemarree:false, joueurs:[],
partieDemarree:false,
},
//variables pour les scores //variables pour les scores
leaderboard:{}, score:{
score:0, leaderboard:{},
pointsGagne:0, score:0,
pointsGagne:0,
},
DEBUG_temps:1000, DEBUG_temps:1000,
} }
@ -43,12 +49,12 @@ export default {
obtenirQuestion(){ obtenirQuestion(){
this.resetEtats() //cacher l'etat precedent this.resetEtats() //cacher l'etat precedent
this.DEBUG_obtenirQuestion().then(response=>{ this.DEBUG_obtenirQuestion().then(response=>{
this.tempsLimite=response.tempsLimite
//afficher cet etat //afficher cet etat
this.etats.question=true this.etats.question=true
this.question=response.question this.question=response
this.reponses=response.reponses
this.tempsLimite=response.tempsLimite
if(this.tempsLimite!=-1){ if(this.tempsLimite!=-1){
//executer la fonction en boucle jusqu'a ce que la partie se termine //executer la fonction en boucle jusqu'a ce que la partie se termine
this.obtenirTimeoutId=window.setTimeout(this.obtenirScores,(this.tempsLimite+100)-Date.now()) this.obtenirTimeoutId=window.setTimeout(this.obtenirScores,(this.tempsLimite+100)-Date.now())
@ -61,13 +67,11 @@ export default {
obtenirScores(){ obtenirScores(){
this.resetEtats() //cacher l'etat precedent this.resetEtats() //cacher l'etat precedent
this.DEBUG_obtenirScore().then(response=>{ this.DEBUG_obtenirScore().then(response=>{
this.tempsLimite=response.tempsLimite
//afficher cet etat //afficher cet etat
this.etats.score=true this.etats.score=true
this.leaderboard=response.leaderboard this.score=response
this.score=response.score
this.pointsGagne=response.pointsGagne
this.tempsLimite=response.tempsLimite
if(this.tempsLimite!=-1){ if(this.tempsLimite!=-1){
//executer la fonction en boucle jusqu'a ce que la partie se termine //executer la fonction en boucle jusqu'a ce que la partie se termine
this.obtenirTimeoutId=window.setTimeout(this.obtenirQuestion,(this.tempsLimite+100)-Date.now()) this.obtenirTimeoutId=window.setTimeout(this.obtenirQuestion,(this.tempsLimite+100)-Date.now())
@ -82,10 +86,10 @@ export default {
//afficher cet etat //afficher cet etat
this.etats.salleAttente=true this.etats.salleAttente=true
this.DEBUG_obtenirSalleAttente().then(response=>{ this.DEBUG_obtenirSalleAttente().then(response=>{
this.partieDemarree=response.partieDemarree
this.joueurs=response.joueurs
this.tempsLimite=response.tempsLimite this.tempsLimite=response.tempsLimite
if(this.partieDemarree){ this.salleAttente=response
if(this.salleAttente.partieDemarree){
this.obtenirTimeoutId=window.setTimeout(this.obtenirQuestion,(this.tempsLimite+100)-Date.now()) this.obtenirTimeoutId=window.setTimeout(this.obtenirQuestion,(this.tempsLimite+100)-Date.now())
//demarrer le compte a rebours //demarrer le compte a rebours
this.compteAReboursId=window.setInterval(this.calculerCompteARebours,22) this.compteAReboursId=window.setInterval(this.calculerCompteARebours,22)
@ -97,8 +101,8 @@ export default {
}, },
repondre(reponse){ repondre(reponse){
this.question=`Réponse "${reponse}" envoyée` this.question.question=`Réponse "${reponse}" envoyée`
this.reponses=[] this.question.reponses=[]
}, },
calculerCompteARebours(){ calculerCompteARebours(){
if(this.tempsLimite<Date.now()){ if(this.tempsLimite<Date.now()){
@ -165,22 +169,22 @@ export default {
<template> <template>
<div class="jeu"> <div class="jeu">
<!-- Afficher le compte a rebours seulement quand la partie va demarrer, pour eviter de prendre par surprise les joueurs qui attendent dans la salle d'attente--> <!-- Afficher le compte a rebours seulement quand la partie va demarrer, pour eviter de prendre par surprise les joueurs qui attendent dans la salle d'attente-->
<p v-if="partieDemarree">Temps : {{ compteARebours }}s</p> <p v-if="salleAttente.partieDemarree">Temps : {{ compteARebours }}s</p>
<div v-show="etats.question"> <div v-show="etats.question">
<p>{{ question }}</p> <p>{{ question.question }}</p>
<button v-for="reponse in reponses" @click="repondre(reponse)">{{ reponse }}</button> <button v-for="reponse in question.reponses" @click="repondre(reponse)">{{ reponse }}</button>
</div> </div>
<div v-show="etats.score"> <div v-show="etats.score">
<h2>Votre score : {{ score }} (+{{ pointsGagne }})</h2> <h2>Votre score : {{ score.score }} (+{{ score.pointsGagne }})</h2>
<ol class="leaderboard"> <ol class="leaderboard">
<li v-for="joueur in Object.keys(leaderboard)"> <li v-for="joueur in Object.keys(score.leaderboard)">
{{ joueur }} : {{leaderboard[joueur]}} {{ joueur }} : {{score.leaderboard[joueur]}}
</li> </li>
</ol> </ol>
</div> </div>
<div v-show="etats.salleAttente"> <div v-show="etats.salleAttente">
<ul> <ul>
<li v-for="joueur in joueurs"> <li v-for="joueur in salleAttente.joueurs">
{{ joueur }} {{ joueur }}
</li> </li>
</ul> </ul>

Loading…
Cancel
Save