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

1.3 KiB

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.