# Documentation Technique - Projet UJSA

## 📋 Vue d'ensemble

Ce projet Unity contient un système de jeux éducatifs interactifs avec plusieurs types de jeux :
- **Trous** : Jeu de texte à trous avec sélection de réponses
- **Calculator** : Jeu de calculatrice interactive
- **Shooting** : Jeu de tir avec viseur personnalisé
- **Map** : Carte interactive avec progression

## 🏗️ Architecture

### Managers principaux
- `TrousGameManager` : Gestion du jeu de texte à trous
- `CalculatorGameManager` : Gestion du jeu de calculatrice
- `GameManager` : Manager générique pour les jeux
- `UserDataManager` : Gestion des données utilisateur
- `GeneralConfigManager` : Configuration générale de l'application

### Layouts de jeu
- `TrousGameLayout` : Layout pour le jeu de trous (GameAreaPanel 1480x960 centré)
- `CalculatorGameLayout` : Layout pour le calculateur
- `ShootingGameLayout` : Layout pour le jeu de tir

### Composants UI
- `TrouButton` : Bouton adaptatif pour les réponses (largeur dynamique basée sur le contenu)
- `SelectionPopup` : Popup de sélection générique
- `DialoguePlayer` : Lecteur de dialogues vidéo avec sous-titres

## 📐 Système de coordonnées

### Jeu Trous
Les coordonnées de l'API pour `textConfig` sont relatives à la **GameAreaPanel** (1480x960) :
- Origine (0,0) = **coin haut-gauche** de la GameAreaPanel
- La GameAreaPanel est centrée dans le Canvas (1920x1080)
- Système d'ancrage Unity : `anchorMin = (0, 1)`, `anchorMax = (0, 1)`, `pivot = (0, 1)`
- Position Y inversée dans Unity : `anchoredPosition.y = -apiY`

### Structure JSON API
```json
{
  "textConfig": {
    "position": { "x": 100, "y": 300 },
    "size": { "width": 600, "height": 800 },
    "fontSize": 42,
    "fontColor": "#64477f",
    "backgroundColor": "#f5ece5",
    "padding": { "top": 20, "bottom": 20, "left": 20, "right": 20 }
  }
}
```

## 🎨 Stylisation

### Boutons adaptatifs (TrouButton)
- Calcul automatique de la largeur basé sur la plus longue option
- Paramètre `adaptWidthToOptions` (défaut: `true`)
- Marges de sécurité : padding horizontal + 80px supplémentaires
- Overflow mode : `TextOverflowModes.Overflow` pour éviter la troncature
- Estimation : `largeur ≈ longueur_texte × fontSize × 0.6 × 1.5`

### Configuration des styles
Les styles sont configurés via `general-config.json` dans `StreamingAssets/`

## 🔧 Debugging

### Logs conservés
- `Debug.LogError()` : Erreurs critiques uniquement
- `Debug.LogWarning()` : Avertissements importants

### Logs supprimés
- Tous les logs de débogage temporaires (emojis 🔍, 📐, ✅, etc.)
- Logs de traçage verbeux dans les boucles
- Logs de validation de valeurs intermédiaires

## 📚 Documentation complémentaire

### Guides utilisateur
- `docs/guides/GUIDE_BUILD_SETTINGS.md` : Configuration de build
- `docs/guides/GUIDE_MAC.md` : Spécificités macOS

### Documentation technique
- `docs/technique/ARCHITECTURE_LAUNCHER.md` : Architecture du lanceur
- `docs/technique/WEBGL_MEMORY_MANAGEMENT.md` : Gestion mémoire WebGL
- `docs/technique/LogConfiguration.md` : Configuration des logs

### Fichiers de configuration
- `CONFIGURER_CORS_CLOUDFRONT.md` : Configuration CORS CloudFront
- `EXPLICATION_IMPACT_MARCHE.md` : Impact sur le workflow
- `GUIDE_RAPIDE_CROSSHAIR.md` : Guide du système de viseur
- `SOLUTION_CURSEUR_WEBGL.md` : Solution curseur personnalisé WebGL
- `REBUILD_INSTRUCTIONS.md` : Instructions de rebuild

## 🗑️ Nettoyage effectué

### Fichiers supprimés (obsolètes)
- `CORRECTION_*.txt` : Fichiers de correction temporaires appliqués
- `SOLUTION_ECRAN_TRANSITION.txt` : Solution intégrée au code
- `PERSONNALISATION_LOADING.txt` : Notes temporaires
- `DIAGNOSTIC_CROSSHAIR.txt` : Diagnostic temporaire
- `README_CROSSHAIR.txt` : Doublon avec .md
- `persos.txt` : Doublon avec persos.json
- `docs/SubtitleManager.txt` : Documentation redondante

### Scripts nettoyés
- `Scripts/Managers/TrousGameManager.cs` : ~230 → ~126 logs
- `Scripts/UI/TrouButton.cs` : 9 → 1 log (LogWarning conservé)

## 🚀 Scripts utilitaires

### PowerShell
- `RESET_ET_TEST_INTRO.ps1` : Reset et test de l'intro
- `RESET_PLAYERPREFS_MAP.ps1` : Reset de la progression
- `telecharger_images.ps1` : Téléchargement des assets

## 📦 Build & Déploiement

- **Platform cible** : WebGL
- **Résolution de référence** : 1920x1080
- **Scale Mode** : Scale With Screen Size
- **Assets** : StreamingAssets (chargement dynamique)

## 🔐 Authentification

- Système via iframe : `IframeAuthManager`
- Token JWT stocké dans `PlayerPrefs`
- Communication parent-enfant via `PostMessage`

## 📊 Progression

- Sauvegarde locale via `PlayerPrefs`
- Synchronisation API via `UserDataManager`
- État des quêtes et scores dans `GameDataManager`

---

**Dernière mise à jour** : 2026-02-01
**Version Unity** : 2022.3 LTS
**Render Pipeline** : Universal Render Pipeline (URP)
