Synchroniser World avec l’acteur actif et tous les jetons alliés en combat #71

Closed
opened 2026-06-22 10:50:23 +00:00 by Reliodas · 0 comments
Owner

CombatController raisonne sur active_actor(), mais World._process() utilise encore c.hero pour déplacer le jeton joueur, calculer les cibles attaquables et afficher les cases de déplacement. Les jetons Follower ne suivent pas les déplacements tactiques de leur Creature. Reproduction confirmée : un allié PLAYER change de case dans TacticalGrid, tandis que son jeton reste à son ancienne position.

Périmètre :

  • associer chaque Creature alliée participante à son jeton de monde ;
  • synchroniser chaque jeton depuis TacticalGrid pendant le combat ;
  • calculer surbrillance des cibles et cases atteignables depuis active_actor() ;
  • conserver le jeton du leader/protagoniste et les followers cohérents, y compris après changement de leader ;
  • supprimer les façades hero_* de World lorsque l’API générique existe.

Critères d’acceptation :

  • au tour d’un allié PLAYER, les cibles attaquables reflètent sa position, son arme et sa ligne de vue ;
  • son déplacement tactique déplace immédiatement le bon jeton ;
  • les autres jetons alliés restent sur leurs propres cases ;
  • changer de leader avant ou après un combat ne crée aucun doublon visuel ;
  • la reprise d’exploration conserve toutes les positions finales ;
  • le cas solo reste inchangé.

Tests automatisés à ajouter :

  • test World avec héros et allié PLAYER placés à des distances différentes : une cible attaquable uniquement par l’allié doit être surlignée pendant son tour ;
  • déplacement de l’allié par player_move() puis appel de _process() : le follower doit correspondre à grid.position_of(ally) ;
  • tour suivant du héros : surbrillance et portée recalculées depuis le héros ;
  • changement de leader avant combat, victoire puis reprise sans jeton dupliqué ;
  • vérification que les positions sauvegardées de chaque membre correspondent à la grille.

Tests manuels à valider :

  1. Contrôler Bran pendant un combat.
  2. Le déplacer et vérifier caméra, jeton, portée et sélection de cible.
  3. Reprendre le héros et vérifier que l’affichage suit le nouvel acteur.
  4. Terminer le combat et contrôler les positions des deux personnages.
`CombatController` raisonne sur `active_actor()`, mais `World._process()` utilise encore `c.hero` pour déplacer le jeton joueur, calculer les cibles attaquables et afficher les cases de déplacement. Les jetons `Follower` ne suivent pas les déplacements tactiques de leur Creature. Reproduction confirmée : un allié PLAYER change de case dans `TacticalGrid`, tandis que son jeton reste à son ancienne position. Périmètre : - associer chaque Creature alliée participante à son jeton de monde ; - synchroniser chaque jeton depuis `TacticalGrid` pendant le combat ; - calculer surbrillance des cibles et cases atteignables depuis `active_actor()` ; - conserver le jeton du leader/protagoniste et les followers cohérents, y compris après changement de leader ; - supprimer les façades `hero_*` de World lorsque l’API générique existe. Critères d’acceptation : - au tour d’un allié PLAYER, les cibles attaquables reflètent sa position, son arme et sa ligne de vue ; - son déplacement tactique déplace immédiatement le bon jeton ; - les autres jetons alliés restent sur leurs propres cases ; - changer de leader avant ou après un combat ne crée aucun doublon visuel ; - la reprise d’exploration conserve toutes les positions finales ; - le cas solo reste inchangé. Tests automatisés à ajouter : - test World avec héros et allié PLAYER placés à des distances différentes : une cible attaquable uniquement par l’allié doit être surlignée pendant son tour ; - déplacement de l’allié par `player_move()` puis appel de `_process()` : le follower doit correspondre à `grid.position_of(ally)` ; - tour suivant du héros : surbrillance et portée recalculées depuis le héros ; - changement de leader avant combat, victoire puis reprise sans jeton dupliqué ; - vérification que les positions sauvegardées de chaque membre correspondent à la grille. Tests manuels à valider : 1. Contrôler Bran pendant un combat. 2. Le déplacer et vérifier caméra, jeton, portée et sélection de cible. 3. Reprendre le héros et vérifier que l’affichage suit le nouvel acteur. 4. Terminer le combat et contrôler les positions des deux personnages.
Reliodas added this to the 0.16.0 milestone 2026-06-22 10:50:23 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jeux/beaulieu-sur-brume#71
No description provided.