test: couvrir l'intégration visuelle et souris du ciblage (#41) #48

Merged
Reliodas merged 1 commit from test/41-targeting-integration into develop 2026-06-22 00:04:44 +00:00
Owner

Closes #41

Là où #27 couvrait surtout le CombatController, rien ne couvrait le clic
par cellule dans World, le suivi du panneau de PV, ni les états visuels du
jeton. Cette MR ajoute cette couverture et durcit le filtrage souris de la
barre d'actions.

Changements

  • World.select_target_at_cell(cell) -> bool : extrait le chemin d'entrée du
    clic-pour-cibler (résolution du jeton via _creature_at_cell puis
    CombatController.select_target), testable sans synthétiser caméra ni souris.
    Le clic gauche hors mode déplacement de _unhandled_input y délègue.
  • ActionBar (combat_overlay.tscn) : mouse_filter = STOP sur le conteneur
    lui-même, afin qu'aucun clic dans sa zone (espaces vides compris) ne traverse
    vers la carte — pas seulement ses boutons.
  • tests/unit/test_world_combat_targeting.gd (nouveau).

Critères d'acceptation

  • Le clic par cellule dans World sélectionne le bon jeton attaquable.
  • Un clic sur une cellule non attaquable (vide) laisse la sélection inchangée.
  • États visuels du jeton couverts : neutre / attaquable / sélectionné /
    vaincu (modulate via _process et priorité de teinte).
  • Le panneau de PV ennemi suit la cible sélectionnée et replie sur un
    ennemi vivant (recoupe #40).
  • La barre d'actions et ses boutons interceptent les clics (mouse_filter == STOP).
  • Cas mono-ennemi utilisable sans sélection explicite.

Tests

  • Suite GUT complète verte en local : 183 tests, 578 assertions (+9 pour #41).
  • tests/unit/test_world_combat_targeting.gd : 9 tests, 36 assertions.
  • Import Godot strict (--headless --import, rc=0).

🤖 Generated with Claude Code

Closes #41 Là où #27 couvrait surtout le `CombatController`, rien ne couvrait le clic par cellule dans `World`, le suivi du panneau de PV, ni les états visuels du jeton. Cette MR ajoute cette couverture et durcit le filtrage souris de la barre d'actions. ## Changements - `World.select_target_at_cell(cell) -> bool` : extrait le chemin d'entrée du clic-pour-cibler (résolution du jeton via `_creature_at_cell` puis `CombatController.select_target`), testable sans synthétiser caméra ni souris. Le clic gauche hors mode déplacement de `_unhandled_input` y délègue. - `ActionBar` (`combat_overlay.tscn`) : `mouse_filter = STOP` sur le conteneur lui-même, afin qu'aucun clic dans sa zone (espaces vides compris) ne traverse vers la carte — pas seulement ses boutons. - `tests/unit/test_world_combat_targeting.gd` (nouveau). ## Critères d'acceptation - [x] Le clic par cellule dans `World` sélectionne le bon jeton attaquable. - [x] Un clic sur une cellule non attaquable (vide) laisse la sélection inchangée. - [x] États visuels du jeton couverts : neutre / attaquable / sélectionné / vaincu (modulate via `_process` et priorité de teinte). - [x] Le panneau de PV ennemi suit la cible sélectionnée et replie sur un ennemi vivant (recoupe #40). - [x] La barre d'actions et ses boutons interceptent les clics (`mouse_filter == STOP`). - [x] Cas mono-ennemi utilisable sans sélection explicite. ## Tests - Suite GUT complète verte en local : 183 tests, 578 assertions (`+9` pour #41). - `tests/unit/test_world_combat_targeting.gd` : 9 tests, 36 assertions. - Import Godot strict (`--headless --import`, rc=0). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
test: couvrir l'intégration visuelle et souris du ciblage (#41)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
a3ed9ced27
Isole le chemin d'entrée du clic-pour-cibler dans `World.select_target_at_cell`
(résolution du jeton + `CombatController.select_target`), pour le tester sans
synthétiser caméra ni souris ; `_unhandled_input` y délègue.

Ajoute `tests/unit/test_world_combat_targeting.gd` : sélection par cellule, clic
sur cellule vide conservant la sélection, états visuels du jeton (neutre /
attaquable / sélectionné / vaincu via `_process` et priorité de teinte), suivi
et repli du panneau de PV ennemi sur un ennemi vivant (recoupe #40), et filtrage
souris de la barre d'actions.

La barre d'actions (`ActionBar`) intercepte désormais aussi les clics sur ses
espaces vides (`mouse_filter = STOP`), pas seulement ses boutons : aucun clic
dans sa zone ne traverse vers la carte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reliodas merged commit fb50cfc5eb into develop 2026-06-22 00:04:44 +00:00
Sign in to join this conversation.
No reviewers
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#48
No description provided.