# Changelog - Mario Runner

## Version 2.2 - Système de Vies & Coffre Final 🏆❤️

### 🎮 NOUVEAU : Système de Vies

**Feature majeure** : Ajout d'un système de vies complet avec respawn !

- **3 vies au départ** (configurable)
- **Perte de vie** lors de collisions frontales avec obstacles
- **Respawn au checkpoint** avec invincibilité temporaire (2s)
- **Game Over** si toutes les vies sont perdues

#### Mécanique des Obstacles Améliorée
- **Sauter dessus** : Détruit l'obstacle + 50 points bonus + rebond
- **Collision frontale** : Perte d'une vie (sauf si invincible)
- Feedback visuel :
  - ⚡ Flash rouge lors de la perte de vie
  - 💚 Explosion verte lors de la destruction
  - 🛡️ Clignotement pendant l'invincibilité

#### Système de Checkpoint
- **Sauvegarde automatique** tous les 1000px
- ⚡ Flash vert au passage d'un checkpoint
- Le joueur réapparaît au dernier checkpoint après une mort
- Invincibilité de 2 secondes après respawn (alpha clignotant)

#### Interface Utilisateur
- ❤️ **Compteur de vies** affiché en haut à gauche
- 🎁 **Cadeaux collectés** avec progression (X/15)
- Mise à jour en temps réel

### 🏆 NOUVEAU : Coffre au Trésor Final

**Récompense ultime** à la fin du niveau !

- **Coffre géant** placé sur la plateforme finale (x=7700)
- **Condition d'ouverture** : Avoir collecté 15 cadeaux minimum
- **Récompense** : MEGA BONUS de +1000 points !

#### Effets Visuels Spectaculaires
- 🌟 Aura dorée pulsante autour du coffre
- 💫 Texte flottant "🎁 15 cadeaux requis"
- ⚡ Flash doré géant à l'ouverture
- 💥 Explosion de 20 particules dorées
- 🏆 Message épique "COFFRE OUVERT ! MEGA BONUS +1000"

#### Feedback Progressif
- Message "🏆 Assez de cadeaux! Trouvez le coffre!" dès 15 cadeaux collectés
- Le compteur 🎁 change de couleur (jaune doré)
- Indicateur visuel au-dessus du coffre

#### Système d'Interaction
- **Overlap** : Se rapprocher du coffre suffit
- Vérification automatique du nombre de cadeaux
- Une seule ouverture possible par partie

### 📊 Statistiques de la v2.2

```
Vies de départ :    3
Invincibilité :     2000ms après respawn
Checkpoints :       Tous les 1000px
Coffre requis :     15 cadeaux
Bonus coffre :      +1000 points
```

### 🎯 Nouvelles Règles du Jeu

#### Gestion des Obstacles
1. **Sauter dessus (par le haut)** :
   - ✅ Détruit l'obstacle
   - ✅ +50 points
   - ✅ Petit rebond automatique
   - Effet explosion verte

2. **Collision (frontale/latérale)** :
   - ❌ Perd une vie
   - ⚡ Flash rouge
   - 🔄 Respawn au checkpoint si vies restantes
   - 💀 Game Over si plus de vies

#### Système de Progression
1. Collecter des cadeaux (+100) et super trésors (+500)
2. Atteindre 15 cadeaux minimum
3. Trouver le coffre final (x=7700)
4. Ouvrir le coffre pour le MEGA BONUS (+1000)
5. Survivre jusqu'à la fin avec 3 vies maximum

#### Score Maximum Possible
```
24 cadeaux normaux :    24 × 100  = 2,400 pts
6 super trésors :       6 × 500   = 3,000 pts
1 coffre final :        1 × 1000  = 1,000 pts
Obstacles détruits :    ~24 × 50  = 1,200 pts
─────────────────────────────────────────────
TOTAL MAXIMUM :                     7,600 pts
```

### 🔧 Changements Techniques

#### Nouvelles Constantes
```typescript
// src/utils/constants.ts
PLAYER_STARTING_LIVES: 3
RESPAWN_INVINCIBILITY_TIME: 2000
CHEST_REQUIRED_GIFTS: 15
```

#### Classe Player.ts - Invincibilité
```typescript
private isInvincible: boolean = false;
private invincibilityTimer?: Phaser.Time.TimerEvent;

public makeInvincible(scene: Phaser.Scene): void {
    // Effet de clignotement alpha (0.3 ↔ 1.0)
    // Timer de 2 secondes
}

public getIsInvincible(): boolean {
    // Vérifie l'état d'invincibilité
}
```

#### Nouvelle Classe TreasureChest.ts
```typescript
export class TreasureChest extends Phaser.Physics.Arcade.Sprite {
    private isOpen: boolean = false;
    private requiredGifts: number;

    public canOpen(giftsCollected: number): boolean
    public open(scene: Phaser.Scene): number
    public getIsOpen(): boolean
    public getRequiredGifts(): number
}
```

#### GameScene.ts - Nouvelles Fonctions
```typescript
private lives: number;
private giftsCollected: number;
private lastCheckpointX: number;
private treasureChest?: TreasureChest;

private openChest()        // Interaction avec le coffre
private loseLife()         // Gestion perte de vie
private respawnPlayer()    // Téléportation au checkpoint
private gameOver()         // Écran de fin si plus de vies
```

#### Mécanique de Détection de Saut
```typescript
private hitObstacle(player: any, obstacle: any): void {
    const isJumpingOn =
        playerBody.velocity.y > 0 &&
        playerBody.bottom <= obstacleBody.top + 10;

    if (isJumpingOn) {
        // Destruction
    } else {
        if (!player.getIsInvincible()) {
            this.loseLife();
        }
    }
}
```

### 🐛 Corrections

- ✅ Invincibilité fonctionne correctement après respawn
- ✅ Checkpoints sauvegardent la position tous les 1000px
- ✅ Détection précise saut vs collision sur obstacles
- ✅ UI vies et cadeaux mise à jour en temps réel
- ✅ Game Over arrête correctement la physique

### 💡 Conseils de Jeu

1. **Maîtrisez le saut sur obstacles** : Vous gagnez des points au lieu d'en perdre !
2. **Cherchez tous les cadeaux** : Il en faut 15 pour le coffre final
3. **Attention aux checkpoints** : Vous réapparaitrez là où vous étiez il y a 1000px
4. **3 vies seulement** : Soyez prudent, chaque vie compte !
5. **Invincibilité** : Profitez des 2 secondes après respawn pour passer les zones dangereuses
6. **Coffre final** : N'oubliez pas d'aller tout au bout (x=7700) pour le mega bonus !

---

## Version 2.1 - Super Trésors 🌟💰

### 🎁 NOUVEAU : Super Trésors

**Feature majeure** : Ajout de super trésors ultra précieux !

- **6 super trésors** répartis dans le niveau (1 par zone)
- **+500 points** par collecte (5x plus qu'un cadeau normal !)
- **Score max total** : 5,400 points (vs 2,400 avant)

#### Effets Visuels Spectaculaires
- 🌟 Rotation rapide + pulsation
- ⭐ 3 étoiles qui orbitent autour
- ✨ Effet de brillance scintillant
- ⚡ Flash doré à la collecte
- 🎯 Message géant "★ SUPER TRÉSOR +500 ★"

#### Placement Stratégique
- Placés en **hauteur** (nécessite double saut)
- Difficulté croissante par zone
- Zone 5 : Ultra difficile (-500px de hauteur)
- Zone 6 : Sur la plateforme finale

#### Classe Technique
- Nouvelle classe `SuperTreasure` avec animations avancées
- Taille 1.5x plus grande que les cadeaux
- Effet de particules avec étoiles orbitales
- Destruction automatique des timers/tweens

Consultez [SUPER_TREASURES.md](SUPER_TREASURES.md) pour le guide complet !

---

## Version 2.0 - Améliorations Majeures 🚀

### 🎮 Gameplay

#### Double Saut Implémenté ✨
- **NOUVEAU** : Le joueur peut maintenant faire un **double saut** !
- Appuyez deux fois sur Espace (PC) ou le bouton tactile (Mobile)
- Permet d'atteindre les plateformes les plus hautes
- Compteur de sauts visible dans la console (debug)

#### Saut Amélioré
- Force de saut augmentée : `-400` → **`-550`**
- Les plateformes sont maintenant accessibles

### 🗺 Niveau Étendu

#### Taille du Niveau
- **Avant** : 3x la largeur de l'écran (~3840px)
- **MAINTENANT** : **6x la largeur de l'écran (~7680px)**
- Durée de jeu augmentée significativement

#### Plateformes
- **Avant** : 7 plateformes
- **MAINTENANT** : **27 plateformes** réparties en 6 zones
  - Zone 1 : Facile (début)
  - Zone 2 : Moyen
  - Zone 3 : Plus difficile
  - Zone 4 : Avancé
  - Zone 5 : Très difficile
  - Zone 6 : Finale (grande plateforme)

#### Objets

**Cadeaux** :
- **Avant** : 4 cadeaux
- **MAINTENANT** : **24 cadeaux** (+500%)
- Répartis partout sur le niveau
- Alternance entre sol et hauteur variable

**Obstacles** :
- **Avant** : 3 obstacles
- **MAINTENANT** : **24 obstacles** (+700%)
- Répartis régulièrement tous les 300px environ

### 📊 Statistiques

```
Niveau :          7680px (6x écran)
Plateformes :     27 (+286%)
Cadeaux :         24 (+500%)
Obstacles :       24 (+700%)
Force de saut :   -550 (+37.5%)
Sauts max :       2 (NOUVEAU)
```

### 🎯 Difficulté

Le jeu est maintenant **beaucoup plus long et varié** :
- Progression de difficulté graduelle sur 6 zones
- Nécessite maîtrise du double saut pour les zones avancées
- Plus de récompenses à collecter
- Plus de défis à éviter

### 🔧 Changements Techniques

#### Constantes Modifiées
```typescript
// src/utils/constants.ts
PLAYER_JUMP_VELOCITY: -550 (était -400)
PLAYER_MAX_JUMPS: 2 (NOUVEAU)
```

#### Modifications Classes

**Player.ts** :
- Ajout du compteur de sauts (`jumpCount`)
- Logique de double saut implémentée
- Réinitialisation automatique au sol

**GameScene.ts** :
- Monde physique étendu à 6x
- 27 plateformes avec progression de difficulté
- 24 cadeaux répartis intelligemment
- 24 obstacles stratégiquement placés

### 🎮 Comment Jouer

#### PC
- **Déplacements** : ← →
- **Saut** : Espace
- **Double Saut** : Appuyez Espace une 2ème fois en l'air !

#### Mobile
- **Déplacements** : Inclinez le téléphone
- **Saut** : Bouton vert en bas à droite
- **Double Saut** : Appuyez le bouton une 2ème fois en l'air !

### 💡 Astuces

1. **Maîtrisez le double saut** : Indispensable pour les plateformes hautes
2. **Explorez** : Le niveau est 6x plus grand, prenez votre temps
3. **Collectez tout** : 24 cadeaux = 2400 points potentiels !
4. **Évitez les obstacles** : 24 obstacles = -1200 points si tous touchés
5. **Score parfait** : 2400 points (tous les cadeaux, aucun obstacle)

### 🐛 Corrections

- ✅ Monde physique correctement dimensionné
- ✅ Joueur ne se bloque plus au bord de l'écran
- ✅ Double saut fonctionnel et fluide
- ✅ Collisions optimisées pour le grand niveau

---

## Version 1.0 - Version Initiale

- Jeu de plateforme basique
- Support PC et Mobile
- Gyroscope + contrôles tactiles
- 7 plateformes
- 4 cadeaux, 3 obstacles
- Timer de 3 minutes
