2024-04-26
Longtemps que je n'ai pas pris le temps d'écrire dans ce journal. Récapitulons la semaine passée, le 20 avril, j'ai mis en production l'utilisation des données provenant de GTFS. Heureux d'être arrivé au bout de cette migration.
Le 23, j'ai migré le projet de Javascript natif vers Vue.js, ce qui m'a permis au passage d'ajouter la fonctionnalité de toggle les stations ajoutées.
Enfin, le 25, j'ai ajouté le mode "Practice", qui permet de s'entraîner à trouver les stations avec un départ et une arrivée différente à chaque fois.
Aujourd'hui, je vais corriger un bug qui survient quand on désactive une station et qu'on l'ajoute à nouveau via le champ de recherche. Ce qui en plus a pour conséquence d'inverser la coche de la liste des stations.
Là-dedans, on peut voir deux choses :
- la recherche des stations ne retire plus les stations déjà ajoutées, c'était plutôt voulu pour déléguer les stations ajoutées au composant d'en dessous.
- la coche de la liste des stations est inversée, car les coches ne sont pas liées à l'état des stations.
Ce qui ne me convient pas, c'est lorsque j'ajoute une station, la méthode
addStation
me retourne si le jeu est fini ou
non. Ensuite quand je désactive une station, je la retire de la liste des stations ajoutées de la partie, alors qu'il ne
faudrait pas, je pense.
J'ai une méthode toggleStation, qui décide si la station est ajoutée ou retirée, mais je ne l'utilise pas pour ajouter uniquement pour les checkbox. Actuellement, la class Game, ne sait pas si une station est simplement désactivée, elle sait juste qu'elle n'est pas ajoutée.
D'ailleurs, le fait que la class n'ait pas l'information fait que ça biaise les résultats du jeu, où seulement les stations ajoutées et encore actives sont prises en compte. Donc si l'utilisateur fait une erreur, il peut désactiver et obtenir quand même le plus petit score.
Il faut donc que la classe ait connaissance de l'état de la station. Dans un premier temps, je renomme la
Map
addedStops
en
currentState
, qui contient les stations ajoutées et leur état
{ isActive: true }
.
J'ajoute ensuite un getter qui remplace l'ancienne variable
addedStops
.
Maintenant, j'essaie d'utiliser un ref qui pointe vers l'instance de Game, mais cela ne fonctionne pas. Après quelques
essais infructueux, je décide de mettre à jour à chaque ajout ou toggle la ref
addedStops
. Je pense que je pourrais
utiliser les events, mais j'ai quelque chose de fonctionnel qui peut partir en production, c'est déjà une première
étape.