feat: recrutement et composition du groupe accessibles en jeu (#69) #83
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#83
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/69-in-game-recruitment"
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 #69.
Le système de recrutement existait dans
GameState, mais aucun chemin jouable ne l'appelait : une partie normale restait toujours solo (le smoke test #58 contournait le manque en appelant l'API directement). Ce ticket câble une vraie surface de jeu. Premier ticket du lot « surfaces de jeu » de l'audit 0.16.0.Changements
scenes/exploration/party_panel.gd(PartyPanel, construit en code, stylecharacter_creation) : ouvert/fermé par [P] en exploration uniquement (World._unhandled_input, ignoré en combat). Il liste le roster (nom, PV, statut) et propose Recruter Bran (tant qu'il n'est pas au roster) puis Quitter / Rejoindre le groupe actif. Purement présentation : il émet des signaux, ne mute pas l'état lui-même.Worldapplique ces signaux via l'API existante (GameState.recruit_demo_companion()/leave_active_group()/rejoin_active_group()), puis appelleWorld.rebuild_formation()et affiche un toast.rebuild_formation()centralise « marquer le groupe actif présent + (re)placer les jetonsFollowersans doublon » — désormais utilisé à l'entrée de zone et après chaque mutation (réutilisé par #76).Critères d'acceptation
Tests
Suite GUT complète verte : 294 tests (depuis 289), stable sur plusieurs exécutions.
tests/unit/test_world_party_panel.gdemprunte le vrai chemin d'entrée (presse les boutons du panneau via leur signalpressed— aucun appel direct àrecruit_demo_companion()dans le corps du scénario) : recrutement → jeton suiveur présent ; idempotence (le bouton disparaît, l'API refuse) ; départ → suiveur retiré, roster conservé ; retour → suiveur restauré ; save/load recruté et hors groupe actif.Validation manuelle (différée au #78)
L'ergonomie réelle du panneau (ouverture [P], lisibilité, messages) sera validée dans Godot au #78.