Chessistics/docs/PLAN.md
Samuel Bouchet 1522b70398 Add drag & drop to relocate placed pieces
InputMapper tracks a mouse-down over a placed piece and promotes it to
drag mode once the cursor travels past an 8px threshold. Legal drop
cells (those where the piece's start→end vector still fits a legal
placement) are highlighted in green. Releasing on a legal cell emits a
RelocateRequested signal; Main feeds it to MovePieceCommand, which is
already undoable via the existing history stack.

Escape or releasing on an invalid cell cancels. The harness gains a
relocate() helper so UI tests can script drag-and-drop moves without
synthesizing motion events.
2026-04-17 22:18:50 +02:00

3.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.

1.2 Drag & drop des pieces placees

MovePieceCommand + PieceMovedByPlayerEvent existent cote engine. Cote Godot : permettre de glisser une piece placee pour deplacer son point de depart. Les arrivees legales se recalculent pendant le drag. Application atomique au relachement (entre deux tours).

1.3 Collision — camera pan/zoom + notification

L'engine emet deja PieceReturnedToStockEvent + auto-pause. Il reste a :

  • Animer un pan + zoom de la camera vers la case de collision.
  • Afficher une notification dans un coin de l'ecran (ex : "Tour II detruite par Dame — retournee au stock").
  • Reprise a Espace apres lecture.

1.4 Touche Suppr pour retirer une piece

Le bouton [Retirer] du DetailPanel existe. Ajouter en complement : selection + Delete → meme effet que le bouton.

1.5 Cinematique de transition de mission

Sur MissionStartedEvent (hors mission 0) :

  • Titre "Nouvelle mission" plein ecran en fade-in.
  • Lock pan/zoom ; la camera se deplace vers la nouvelle zone.
  • Animation d'expansion pour les cases debloquees par le TerrainPatch.
  • Le titre glisse ensuite vers le panneau d'objectifs avant de disparaitre (guide l'oeil).
  • Unlock pan/zoom, la simulation reprend.

1.6 Visualisation des trajets

TrajectView existe. Manque :

  • Fleches directionnelles sur le trait.
  • Pulsation legere du trait quand la piece est en mouvement.
  • Couleur unique par piece pour distinguer les chaines.

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.1 Missions supplementaires

  • "L'Expansion Finale" (14x14) : multiples transformateurs, murs complexes. Defi : maintenir toutes les chaines en s'etendant ; gestion de la congestion / collisions.
  • "Le Couronnement final" (14x14) : Cathedrale qui demande or + armes + outils simultanement. Orchestrer l'ensemble des chaines logistiques.

Actuel mission 7 "Le Couronnement" = transformation outils→or seule. La renommer ou l'inserer comme mission intermediaire et ajouter les deux missions ci-dessus pour retrouver la progression 10 missions de la vision initiale.

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.