feat: interface de combat dynamique (#57) #67
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#67
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/57-dynamic-combat-ui"
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 #57.
Adapte l'interface de combat au membre actif au lieu d'une barre codée pour le Guerrier initial. Neuvième pierre du jalon 0.16.0 (dépend de #49 et #54). Le menu, les panneaux et le prompt suivent désormais l'acteur dont c'est le tour, et la barre d'actions est construite à partir des capacités réellement disponibles.
Changements
CombatAction(scripts/combat_action.gd) :id,label,kind(ATTACK/DODGE/SECOND_WIND/MOVE/END_TURN/FLEE),enabled,requires_target.CombatController.available_actions()fournit la liste pour l'acteur actif, avec les drapeauxenabledcalculés depuis l'état courant. Second Wind n'apparaît que si l'acteur actif possède la feature → deux classes exposent des menus différents.execute_action(id, target)exécute l'action par identifiant (attaque/esquive/Second Wind/fin de tour).CombatOverlayconstruit sa barre d'actions à partir de ces descripteurs (visibilité + état dérivés des capacités disponibles) au lieu d'encoder des règles de classe : plus d'appel direct àhas_second_wind()/can_player_attack()dans l'overlay. Les boutons sont inertes hors tour joueur (donc pendant les tours automatiques). Le panneau « joueur » et le prompt (PV, déplacement) suivent l'acteur actif contrôlable. Les actions passent parexecute_action(id).Critères d'acceptation
enabled = falsehors tour joueur) ;Tests
Suite GUT complète verte : 270 tests / ~880 assertions (depuis 264), stable sur 4 exécutions.
tests/unit/test_combat_actions.gd: le Guerrier expose Second Wind, le Prêtre non (menus différents) ;requires_targetréservé à l'attaque ; toutes les actions inertes hors tour joueur ; Attaquer actif au contact ; exécution par id (execute_action), id inconnu sans effet.tests/unit/test_combat_overlay.gd: tests existants mis à jour sur_action_buttons(Second Wind visible pour le Guerrier, absent pour le Magicien ; resynchro après un tour ennemi).Validation manuelle (différée au #58)
Le rendu visuel (portrait/PV qui basculent quand le tour passe à un allié PLAYER, panneaux multiples) sera vérifié dans Godot au #58. Le portrait reste pour l'instant le panneau de PV de l'acteur actif (pas d'illustration dédiée au stade prototype).