feat: permettre au joueur de choisir sa cible parmi plusieurs ennemis (#27) #34
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: jeux/beaulieu-sur-brume#34
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/27-selection-cible"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #27
Le contrôleur acceptait déjà plusieurs ennemis et les jetons attaquables étaient surlignés, mais le bouton Attaquer appelait
player_attack()sans cible : le contrôleur frappait automatiquement la première cible valide, et le panneau de PV ennemi restait lié au seul ennemi primaire. Cette MR rend la sélection de cible explicite.Changements
scripts/combat_controller.gd:selected_target+select_target(creature)(n'accepte qu'une cible attaquable ce tour).player_attack(target)refuse une cible non valide / morte / hors portée / hors vue sans consommer l'Action (plus de repli automatique sur la première). Cible par défaut = l'unique cible attaquable (cas 1v1 direct) ; avec plusieurs ennemis et aucune sélection, l'attaque est refusée jusqu'au choix.selected_targetest remise à zéro à chaque tour et invalidée après un déplacement ou une mort (_validate_selected_target). Nouveauhas_attack_target()pour piloter l'activation du bouton.scenes/exploration/world.gd: au tour du joueur hors mode déplacement, le clic gauche est converti en cellule (_cell_at) puis résolu via les tables de participants (_creature_at_cell) — pas via un événement reçu parEnemy, qui reste un simpleNode2D. Un jeton attaquable sous le clic est sélectionné (select_target).scenes/exploration/enemy.gd: état « sélectionné » distinct (set_selected, teinte orange) qui prime sur l'état « attaquable » (doré), retiré quand la cible devient invalide.scenes/combat/combat_overlay.gd:_on_attacktransmet_controller.selected_target; le panneau de PV ennemi suit la cible sélectionnée (rebind au changement), à défaut l'ennemi primaire (mono-ennemi inchangé). Les boutons (Control) consomment leurs propres clics : un clic sur la barre d'actions n'atteint pas le gestionnaire d'arrière-plan deWorld.Critères d'acceptation
player_attackavec laCreaturechoisie ;Tests
tests/unit/test_combat_controller.gd:test_select_target_directs_damage_to_chosen_enemy(deux cibles, la choisie encaisse, l'autre intacte),test_default_target_when_single_attackable,test_no_default_target_with_multiple_attackable,test_invalid_explicit_target_refused_without_spending_action,test_move_invalidates_out_of_reach_selection;test_attack_only_targets_adjacent_enemymis à jour (refus sans dépense d'Action) et la boucle multi-ennemis sélectionne désormais une cible.