feat: Ajout du jeu Papelito, améliorations UX et corrections de bugs

Nouveau jeu:
- Ajout du jeu Papelito (Undercover) avec flow complet
- Configuration des joueurs, temps de discussion, votes
- Système d'élimination et gestion des égalités
- Interface Material Design avec cartes et dialogues

Corrections de bugs critiques:
- Fix crash Papelito au lancement (MaterialSwitch vs Switch)
- Fix crash lors des votes nuls (égalité entre joueurs)
- Fix crash fin de partie lors du retour (navigation vers hub)
- Fix visibilité texte questions (couleur dynamique)
- Fix compteur tours défis invisible (blanc sur blanc)
- Fix icone question manquante pendant défis

Améliorations UX Boidelo Classic:
- Harmonisation des couleurs dynamiques (toolbar, bouton)
- Bouton de réglages maintenant visible (MaterialButton)
- Conteneur IA se rétracte quand désactivé
- Meilleure gestion des couleurs selon catégorie
- Fix délai entre manches pour affichage message fin

Améliorations techniques:
- Mise à jour CLAUDE.md avec architecture Papelito
- Amélioration tests unitaires (GameEngine, PlayerStats, QuestionCategory)
- Standardisation des clés Intent entre activités
- Nettoyage code mort (méthodes non utilisées)

Tests:
- 302 tests unitaires passants
- Couverture GameEngine, PlayerStats, QuestionCategory
- Tests Papelito (game logic, player management)
- Tests Game89 (challenges, players)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
feldenr
2026-01-16 12:05:29 +01:00
parent 1b3d67526d
commit c803469643
42 changed files with 6551 additions and 203 deletions
@@ -7,6 +7,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.boidelov3.R;
import com.example.boidelov3.games.boideloclassic.BoideloClassicSetupActivity;
import com.example.boidelov3.games.papelito.PapelitoSetupActivity;
import com.example.boidelov3.hub.adapter.GameAdapter;
import com.example.boidelov3.hub.model.GameInfo;
import java.util.ArrayList;
@@ -65,13 +66,13 @@ public class GameSelectionActivity extends AppCompatActivity implements GameAdap
true // Available now
));
// Undercover - Jeu de déduction
// Papelito (Undercover) - Jeu de déduction
gamesList.add(new GameInfo(
"Undercover",
"Papelito",
"Trouvez l'undercover avant qu'il ne soit trop tard!",
R.drawable.ic_undercover,
R.drawable.ic_papelito,
GameInfo.GameType.UNDERCOVER,
false // Coming soon
true // Available now
));
// Jeux de règles
@@ -111,7 +112,7 @@ public class GameSelectionActivity extends AppCompatActivity implements GameAdap
startActivity(new Intent(this, com.example.boidelov3.games.game89.Game89SetupActivity.class));
break;
case UNDERCOVER:
// TODO: Implémenter UndercoverSetupActivity
startActivity(new Intent(this, com.example.boidelov3.games.papelito.PapelitoSetupActivity.class));
break;
case RULES:
// TODO: Implémenter RulesListActivity