# Plan Playtest Fixes ## Problèmes identifiés ### P1 — Superposition production/demand (Bug moteur) **Cause racine**: `ApplyTerrainPatch` ne nettoie pas les bâtiments existants avant d'ajouter un nouveau (Production, Demand, Transformer). Mission 3 place un demand sur (5,5) où Mission 2 avait une production → les deux coexistent dans les dictionnaires. **Fix**: Appeler `ClearBuildingAt(coords)` pour TOUS les types de cellules dans `ApplyTerrainPatch`. ### P2 — Murs sur cases existantes / pièces traversent les murs **Cause racine**: Mission 3 ajoute des murs sur des cases déjà jouables (2,2), (2,3), etc. Si des pièces y sont placées, elles restent et traversent le mur. **Fix moteur**: Quand un mur apparaît via terrain patch, retirer les pièces dont StartCell ou EndCell est sur ce mur (retour au stock). **Fix level design**: Redessiner mission 3 pour que les murs soient sur des cases nouvellement révélées (agrandir le plateau). ### P3 — Noms de bâtiments dupliqués **Cause**: Deux "Dépôt Royal" (mission 1 et mission 3). **Fix**: Renommer dans campaign_01.json. Mission 3 demand → "Avant-Poste du Col". ### P4 — Compteurs d'objectifs qui montent à l'infini **Cause**: `ObjectivePanel.UpdateProgress` affiche le current réel même quand il dépasse le required. **Fix**: Afficher `min(current, required)/required` et marquer visuellement les objectifs complétés. Les objectifs des missions précédentes complétées: afficher "✓" et ne plus mettre à jour. ### P5 — Espace sélectionne un pion au lieu de lancer la simulation **Cause**: Les boutons Godot ont `FocusMode = All` par défaut et capturent la touche Espace. **Fix**: Mettre `FocusMode = None` sur les boutons du PieceStockPanel. Ajouter un handler Espace dans Main pour toggle play/pause. ### P6 — Centrage du plateau **Cause**: Le calcul de centrage ne prend pas en compte la barre de titre (~36px en haut). **Fix**: Ajouter `TitleBarHeight` au calcul de l'offset caméra. ### P7 — Pas de narration/lore **Fix**: Ajouter un champ `flavor` dans MissionDef + campaign JSON. Afficher un encart narratif au démarrage de chaque mission. Un personnage parle en une phrase, ton léger et enjoué. ## Ordre d'implémentation 1. P1 + P2: Fixes moteur (ApplyTerrainPatch) + tests 2. P3: Redesign campaign_01.json (missions 2-7, noms uniques, pas de superposition, murs sur nouvelles cases) 3. P4: Test automatisé de validation du campaign (pas de superposition, niveaux finissables) 4. P5: Spacebar play/pause 5. P6: Centrage caméra 6. P4: Objectifs capped 7. P7: Narration