🚇 Metro Travel

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 :

  1. 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.
  2. 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.