Chessistics/docs/PLAN.md
Samuel Bouchet 8a377c2e41 Add recurring-demand mode with shortage tracking
DemandDef gains optional ConsumptionPerTurn and SustainTurns. When
ConsumptionPerTurn > 0 the demand maintains a buffer filled by
deliveries and drained each turn. Shortage fires the first turn the
buffer can't cover consumption; it clears when the buffer refills.
SustainedTurns counts consecutive non-shortage turns, and IsSatisfied
flips to true once it meets SustainTurns — so the victory condition
becomes "no shortage for N consecutive turns" as soon as a mission opts
in. Classic demands (ConsumptionPerTurn = 0) behave exactly as before.

TurnExecutor runs the consumption sub-phase after transfers. Two new
events (DemandShortageStarted / DemandShortageCleared) let the
presentation surface the state later. BoardSnapshot + CampaignLoader
carry the new fields; no existing mission opts in yet, so
campaign_01.json is unaffected.
2026-04-17 22:39:28 +02:00

37 lines
1.3 KiB
Markdown

# Chessistics — Plan de travail (restant)
Consolidation des sections non implementees des anciens `PLAN_missions.md` et
`PLAN_leveldesign.md`. Le moteur (black-box sim, campagne, transformateurs,
missions 1-7) est en place. Ce qui suit concerne la finition UX, les visuels
et l'extension de la campagne.
---
## 1. UX / Presentation — gaps Godot
Le moteur expose deja les commandes et events requis ; cote Godot il manque
les surfaces d'interaction et d'animation.
---
## 2. Extension de la campagne
`campaign_01.json` compte actuellement 7 missions (Pion → Tour → Cavalier →
Fou → Dame + 2 transformateurs). La vision GDD/plan prevoit une campagne
plus longue et un final orchestrant toutes les chaines.
### 2.2 Demandes recurrentes (post-campagne 1)
Pour forcer la preservation des automatisations entre missions :
- Une demande consomme N unites par tour.
- Si plus approvisionnee → etat "en penurie".
- Condition : aucune demande en penurie pendant X tours consecutifs.
Implique : nouveau champ sur `DemandState`, flag shortage, regle de victoire
parametrable par mission. A valider via playtest avant d'ajouter au scope.
---
## 3. Polish visuel des transformateurs
Couleur de cellule dediee (orange cuivre), animation flash input → flash
output sur `CargoConvertedEvent`, icones de cargo sur les pieces porteuses.